项目地址:Github:MatoApps/Soa
一个轻量级的微服务库,基于.Net 6 + Abp框架 可快速地将现有项目改造成为面向服务体系结构,实现模块间松耦合。
RabbitTeam 的项目 RabbitCloud
grissomlau 的项目 jimu
部分模块以及算法代码参考自以上项目
| Date | Version | Content |
|---|---|---|
| V0.9.0 | 2022-5-17 | 初始版本 |
Startup.cs 文件
// services.AddAbp();services.AddSoaClient<GatewaySampleWebHostModule>(new SoaClientOptions(){ IsDevelopment = _hostingEnvironment.IsDevelopment(), LoggerProvider = _appConfiguration["App:UseLogger"].ToUpper(), PlugInsPath = Path.Combine(_hostingEnvironment.WebRootPath, "PlugIns")},true);//app.UseAbp();app.UseSoaClient(options => { options.UseAbpRequestLocalization = false; }); // Initializes Soa framework.GatewaySampleWebHostModule.cs 文件
[DependsOn(typeof(SoaClientModule))]public class GatewaySampleWebHostModule: AbpModule{ //Your code}IService1Manager.cs 文件
[SoaAuthorize("permission_name")] //Soa权限标签[SoaServiceRoute("soa_api/service1")] //Soa服务路由标签 public interface IService1Manager : ISoaService{ //定义接口 [SoaService(CreatedBy = "linxiao", Comment = "bring a string to the world and say hello !")] [SoaAuthorize("permission_name")] public string GetHelloWorld();}网关Ioc添加各微服务抽象层
var ass = Assembly.Load("Soa.Sample.IAuthorizedService");IocManager.RegisterAssemblyByConvention(ass);网关引入各微服务权限
Configuration.Authorization.Providers.Add<AuthorizedServiceAuthorizationProvider>();网关引入各微服务本地化资源
var loc = Configuration.Localization;AuthorizedServiceLocalizationConfigurer.Configure(loc);其他的Abp配置等等
Program.cs 文件
var builder = WebApplication.CreateBuilder(args);builder.Services.AddSoa<Service1HostModel>();var webapp = builder.Build();webapp.UseSoaServer();webapp.Run();Service1HostModel.cs 文件
[DependsOn(typeof(SoaServerModule))]public class Service1HostModel : AbpModule{ //Your code}Service1Manager.cs 文件
public class Service1Manager : DomainService , IService1Manager{ //实现业务 public string GetHelloWorld() { return "hello world !"; }}关于appsettings.json的配置,请参考 配置说明
关于Hangfire的配置,请参考 定时任务
完整示例请参考 Sample
更多资讯请阅读系列博客
Roslyn Syntax Tool
作者:林小
邮箱:jevonsflash@qq.com
The MIT License (MIT)
Github:MatoApps/Soa