<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 6 + Abp框架一個(gè)輕量級(jí)微服務(wù)庫(kù)

          共 4067字,需瀏覽 9分鐘

           ·

          2022-06-13 16:36


          Soa


          項(xiàng)目地址:https://github.com/MatoApps/Soa

          介紹

          一個(gè)輕量級(jí)的微服務(wù)庫(kù),基于.NET 6 + Abp框架 可快速地將現(xiàn)有項(xiàng)目改造成為面向服務(wù)體系結(jié)構(gòu),實(shí)現(xiàn)模塊間松耦合。

          感謝

          RabbitTeam 的項(xiàng)目 RabbitCloud:

          https://github.com/RabbitTeam/RabbitCloud

          grissomlau 的項(xiàng)目jimu:

          https://github.com/grissomlau/jimu

          部分模塊以及算法代碼參考自以上項(xiàng)目

          特點(diǎn)

          • 支持DotNetty和Http兩種模式的RPC
          • 支持自動(dòng)路由發(fā)現(xiàn)注冊(cè)與微服務(wù)健康監(jiān)測(cè)
          • 支持模塊以及模塊的依賴關(guān)系
          • 支持簡(jiǎn)單對(duì)象(POCO)作為參數(shù)或返回類型
          • 支持登錄與鑒權(quán)
          • 支持多語(yǔ)言/本地化

          內(nèi)容

          • 基于Roslyn的動(dòng)態(tài)客戶代理類(Proxy模塊)
          • POCO對(duì)象傳輸編解碼(TypeConverter模塊)
          • 基于DotNetty或者HTTP的RPC(Transport模塊)
          • 路由服務(wù)發(fā)現(xiàn)(ServiceDiscovery模塊)
          • 健康監(jiān)測(cè)(HealthCheck模塊)
          • 基于swagger的Api文檔生成
          • 基于Attribute注解的路由配置
          • 基于Json配置文件的系統(tǒng)配置(Abp實(shí)現(xiàn))
          • 基于Hangfire的計(jì)劃任務(wù)
          • 基于Castle Windsor的Ioc(Abp實(shí)現(xiàn))
          • 基于Log4Net的日志(Abp實(shí)現(xiàn))
          • 基于AbpZero的用戶系統(tǒng)
          • 基于EF,并實(shí)現(xiàn)模型的Repository倉(cāng)儲(chǔ)模式(Abp實(shí)現(xiàn))

          更新內(nèi)容

          DateVersionContent
          V0.9.02022-5-17初始版本

          快速開(kāi)始


          網(wǎng)關(guān)(客戶端) GatewaySample

          • 添加對(duì)Soa庫(kù)的引用
          • 添加對(duì)Soa.Client庫(kù)的引用

          Startup.cs 文件

          1、刪除AddAbp

          // services.AddAbp();

          2、添加AddSoaClient

          services.AddSoaClient<GatewaySampleWebHostModule>(new SoaClientOptions()
          {
              IsDevelopment = _hostingEnvironment.IsDevelopment(),
              LoggerProvider = _appConfiguration["App:UseLogger"].ToUpper(),
              PlugInsPath = Path.Combine(_hostingEnvironment.WebRootPath, "PlugIns")
          },true);

          3、刪除UseAbp

          //app.UseAbp();

          4、添加UseSoaClient

          app.UseSoaClient(options => { options.UseAbpRequestLocalization = false; }); // Initializes Soa framework.

          GatewaySampleWebHostModule.cs 文件

          5、添加SoaClientModule模塊依賴

          [DependsOn(typeof(SoaClientModule))]
          public class GatewaySampleWebHostModuleAbpModule
          {
              //Your code
          }
          • 配置 appsettings.json 文件
          • 配置 Hangfire

          微服務(wù)抽象層 IService1

          IService1Manager.cs 文件

          1、構(gòu)建接口IService1Manager并繼承于ISoaService

          2、添加Soa標(biāo)簽和Abp標(biāo)簽

          [SoaAuthorize("permission_name")]     //Soa權(quán)限標(biāo)簽
          [SoaServiceRoute("soa_api/service1")]           //Soa服務(wù)路由標(biāo)簽 
          public interface IService1Manager : ISoaService
          {
              //定義接口    
              [SoaService(CreatedBy = "linxiao", Comment = "bring a string to the world and say hello !")]
              [SoaAuthorize("permission_name")]    
              public string GetHelloWorld();

          }
          • 將微服務(wù)抽象層引用添加至網(wǎng)關(guān)(客戶端) GatewaySample

          網(wǎng)關(guān)Ioc添加各微服務(wù)抽象層

          var ass = Assembly.Load("Soa.Sample.IAuthorizedService");
          IocManager.RegisterAssemblyByConvention(ass);

          網(wǎng)關(guān)引入各微服務(wù)權(quán)限

          Configuration.Authorization.Providers.Add <AuthorizedServiceAuthorizationProvider>();

          網(wǎng)關(guān)引入各微服務(wù)本地化資源

          var loc = Configuration.Localization;
          AuthorizedServiceLocalizationConfigurer.Configure(loc);

          其他的Abp配置等等

          微服務(wù)(服務(wù)端) Service1

          • 添加對(duì)微服務(wù)抽象層的引用

          Program.cs 文件

          var builder = WebApplication.CreateBuilder(args);
          builder.Services.AddSoa<Service1HostModel>();
          var webapp = builder.Build();
          webapp.UseSoaServer();
          webapp.Run();

          Service1HostModel.cs 文件

          1、添加SoaServerModule模塊依賴

          [DependsOn(typeof(SoaServerModule))]
          public class Service1HostModel : AbpModule
          {
              //Your code
          }

          Service1Manager.cs 文件

          1、構(gòu)建類Service1Manager

          2、繼承IService1Manager并實(shí)現(xiàn)其成員

          public class Service1Manager : DomainService , IService1Manager
          {
              //實(shí)現(xiàn)業(yè)務(wù)
              public string GetHelloWorld()
              {
                  return "hello world !";
              }
          }
          • 配置 appsettings.json 文件
          關(guān)于appsettings.json的配置,請(qǐng)參考 配置說(shuō)明:
          https://github.com/MatoApps/Soa/blob/master/SOA/Hangfire Guid-zh-Hans.md
          關(guān)于Hangfire的配置,請(qǐng)參考 定時(shí)任務(wù):
          https://github.com/MatoApps/Soa/blob/master/SOA/Hangfire Guid-zh-Hans.md
          完整示例請(qǐng)參考Sample:
          https://github.com/MatoApps/Soa/tree/master/sample

          工具

          Roslyn Syntax Tool:https://github.com/MatoApps/RoslynSyntaxTool

          • 此工具能將C#代碼,轉(zhuǎn)換成使用語(yǔ)法工廠構(gòu)造器(SyntaxFactory)生成等效語(yǔ)法樹(shù)代碼

          項(xiàng)目地址

          Github:https://github.com/MatoApps/Soa

          轉(zhuǎn)自: 林曉lx

          鏈接:cnblogs.com/jevonsflash/p/16284972.html

          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色一情一乱一交一级A片 | JIZZ国产丝袜19学生 | 就要看日逼网站 | 葵司视频在线观看 | 国产欧美一区二区三区四区 |