跳到主要内容
版本:2.2.0

如何从v1版本升级到v2版本

Step 1 . 检查并升级组件依赖

将Aegis下的所有组件版本的nuget version均升级到2.0+版本。

同时在更新板块中同时勾选上 【包括预发行版】,这样能确保Aegis.Core.Infrastructure的Nuget包是最新的2.0.0.1-preview7 确保Microsoft.AspNetCore.Mvc.NewtonsoftJson这个包在6.0.25版本

image.png

image.png

注意,直接对解决方案下的全部Nuget升级2.0.0 可能会遇到版本冲突的问题 可采取以下办法快速解决

在VS下可采取 开启正则表达式搜索,区域选择解决方案 image.png

搜索以下内容并替换

<PackageReference Include="Aegis.Services" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Services" Version="2.0.0" />

<PackageReference Include="Aegis.EventBus" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.EventBus" Version="2.0.0" />

<PackageReference Include="Aegis.Core.Infrastructure" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Core.Infrastructure" Version="2.0.0.1-preview7" />

<PackageReference Include="Aegis.Core.Authorization" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Core.Authorization" Version="2.0.0" />

<PackageReference Include="Aegis.Generic.IdGenerator" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Generic.IdGenerator" Version="2.0.0" />

<PackageReference Include="Aegis.Context" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Context" Version="2.0.0" />

<PackageReference Include="Aegis.Authorization.SSO" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Authorization.SSO" Version="2.0.0" />

<PackageReference Include="Aegis.Caching.Redis" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Caching.Redis" Version="2.0.0" />


<PackageReference Include="Aegis.Configuration" Version="1.(.+)" />
替换为
<PackageReference Include="Aegis.Configuration" Version="2.0.0" />


Step 2 . 新建组件依赖文件

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

{  
"Components":
{
"Services": [ "Logging","Swagger","IdGenerator","BusinessServices","Authorization","RequestValidation","EventBus","SsoAuthorize"],
"Middlewares": ["Swagger","Authorization"]
}
}
组件名功能说明备注
Logging日志组件提供Nlog和接口日志、异常日志等功能
Swagger接口Swagger文档提供Swagger功能
IdGeneratorID生成器提供雪花Id、Id池等功能
BusinessServices业务服务层提供业务服务和契约注入服务,使用了Services层请务必注入
Authorization认证和鉴权提供基本认证和鉴权功能,还需要接入更具体的认证服务
RequestValidation请求验证提供参数请求验证,使用FluentValidation提供功能
EventBus事件总线提供内存内的发布订阅、生产消费功能
SsoAuthorizeSSO认证和鉴权Authorization的具体实现,请确保顺序在Authorization后面

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

Step 3 . 改造Program.cs

将Program里直接改为下述代码即可。原先的代码可以注释在下方为后续改造用于参考。

AegisApplication.Run(args);

Step 4 . 引入Startup

在对应的Webapi项目下,建立Startup类,用于配置自身的注入和服务引入。 请按照以下代码的格式来编写Startup,继承自ICustomStartup接口,在ConfigureServices来注入想要注入的服务,在Configure方法里来引入Middleware。 具体细节可以参考原先的Program代码,需要注意的是在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)
{
}
}

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

Step 5 . 参考各组件配置文档

具体使用各个组件,还需要引入对应配置,可参考具体各个组件的文档。