项目搭建

可参考项目Demo配合文档一起了解

Demo地址:https://gitee.com/feifei_code/aegis-demo.git

Step1 建立项目和层级

创建Webapi 项目,需要注意框架得选择.NET 6.0。如下图配置(可根据需求自定义勾选)

image.png|800

然后依次建立下列类库

如下图

image.png|400

Step2 导入组件依赖文件

在Webapi项目下创建Component.deps.json文件,并确保复制到输出目录下。这个文件是组件依赖配置,请确保生成后的文件夹中包含此文件。 内容大致如下,可根据需求决定包含哪些组件。

{  
  "Components": 
  {  
    "Services": [ "Logging","Swagger","IdGenerator","BusinessServices","Authorization","RequestValidation","EventBus","SsoAuthorize"], 
    "Middlewares": ["Swagger","Authorization"]  
  }
}

下面是目前全部组件的表格,可以视情况添加到配置中。

⚠️ 注意,记得同时导入对应的Nuget包,否则不生效

组件名 功能说明 备注 可添加位置 对应Nuget包
Logging 日志组件 提供Nlog和接口日志、异常日志等功能 Services Aegis.Core.Logs
Swagger Swagger 提供Swagger功能,展现接口文档 Services/Middwares Aegis.Extensions.Swagger
IdGenerator ID生成器 提供雪花Id、Id池等功能 Services Aegis.IdGenerator
BusinessServices 业务服务层 提供业务服务和契约注入服务,使用了Services层请务必注入 Services Aegis.Services
Authorization 认证鉴权 提供基本认证和鉴权功能,还需要接入更具体的认证服务 Services/Middlewares Aegis.Core.Authorization
RequestValidation 请求验证 提供参数请求验证,使用FluentValidation提供功能 Services Aegis.Transfer
EventBus 事件总线 提供内存内的发布订阅、生产消费功能 Services Aegis.EventBus
SsoAuthorize SSO认证 Authorization的具体实现,请确保顺序在Authorization后面 Services Aegis.Authorization.SSO

需要注意的是,如果之前Swagger是手动注入的,此时可以引用Aegis的Swagger组件Aegis.Extensions.Swagger的Nuget包,具体使用请参考具体文档Swagger

Step3 改造Program.cs

将Program里直接改为下述代码即可。

AegisApplication.Run(args);

Step4 引入Startup

在对应的Webapi项目下,建立Startup类,用于配置自身的注入和服务引入。 请按照以下代码的格式来编写Startup,继承自ICustomStartup接口,在ConfigureServices来注入想要注入的服务,在Configure方法里来引入Middleware。 更多Startup的细节建议参考自定义Startup 需要注意的是在Setp 2中引入的组件不需要再手动注入了

  1. 注意此处不再需要手动注入Aegis组件服务了,框架已经根据Component.deps.json完成了注入。
  2. 目前Freesql的注入还未接入Aegis组件,还需要自己注入。
public sealed class Startup : ICustomStartup
{
    public void ConfigureServices(IServiceCollection services)
    {
        var connectionString = ConfigManager.Get("SqlConnection");
        services.AddDbSource<AegisDb>(x =>
        {
            x.ConnectionString = connectionString;
            x.DataType = "SqlServer";
        });
        services.AddDbRepositories<AegisDb>();

        services.AddSingleton<ICat,GreenCat>();
        services.AddSingleton<ICat, RedCat>();

    }

    public void Configure(IApplicationBuilder app)
    {
    }

    public void ConfigureInitializer(IInitializerContext context)
    {
    }
}

PS:以下是HIS项目的Startup代码 image.png|800

至此一个Aegis的基本项目就已经搭建好了,接下来请参考各个层次的文档来了解各层级之间的具体实现。

WebApi

该层级的项目目前分为两种类型

  • 对内API,命名规则为 领域系统.业务领域.WebApi,比如HIS下的住院对内服务,命名为His.IpVisit.WebApi
  • 对外API,命名规则为 领域系统.业务领域.LinkApi,比如HIS下的门诊对外服务,命名为His.OpVisit.LinkApi

目录结构

- Controller
   -- XXXController //接口控制器
   -- ...
- Configuration
   -- xxxBizConfig.json  //业务配置,以BizConfig.json结尾的配置
- appsettings.json //系统配置
- Nlog.config //日志配置

Controller

类与构造方法

Controller类需要继承于ApiControllerBase抽象类,该类为Controller下提供一系列返回方法和处理。 对应Controller的构造方法里可以接收所需要业务领域的ServiceLogger,具体写法如下

public class IpVisitPrePayController : ApiControllerBase
{
    private readonly IpVisitPrePayService _ipVisitPrePayService;
    private readonly ILogger _logger;

    public IpVisitPrePayController(IpVisitPrePayService ipVisitPrePayService, ILogger<IpVisitPrePayController> logger)
    {
        this._ipVisitPrePayService = ipVisitPrePayService;
        _logger = logger;
    }
    // 控制器代码...
}

初始化项目

results matching ""

    No results matching ""