如何从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版本


注意,直接对解决方案下的全部Nuget升级2.0.0 可能会遇到版本冲突的问题 可采取以下办法快速解决
在VS下可采取 开启正则表达式搜索,区域选择解决方案

搜索以下内容并替换
<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功能 |
| IdGenerator | ID生成器 | 提供雪花Id、Id池等功能 |
| BusinessServices | 业务服务层 | 提供业务服务和契约注入服务,使用了Services层请务必注入 |
| Authorization | 认证和鉴权 | 提供基本认证和鉴权功能,还需要接入更具体的认证服务 |
| RequestValidation | 请求验证 | 提供参数请求验证,使用FluentValidation提供功能 |
| EventBus | 事件总线 | 提供内存内的发布订阅、生产消费功能 |
| SsoAuthorize | SSO认证和鉴权 | 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中引入的组件不需要再手动注入了
- 注意此处不再需要手动注入Aegis组件服务了,框架已经根据
Component.deps.json完成了注入。- 目前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代码

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