Furion框架亮点之-灵活的Startup类
在 Furion 框架中,提供了更为灵活的 Startup 类配置方式,无需在 Web 启用层 中配置,可将配置放到任何项目层。
什么是Startup类
Startup 类是 ASP.NET Core 应用程序启动默认调用的类
Startup类中的方法
- ConfigureServices:配置应用所需服务,在该方法中可以添加应用所需要的功能或服务
- Configure:配置应用请求处理管道
Furion中的AppStartup
传统的Startup类有一些问题:
- Startup 类默认和 Web 应用层 绑定在一起,这样就会导致如果我创建了新的 Web 应用层,Startup 又要重新配置
- 随着业务的增长,需要集成越来越多的第三方服务,这时候 Startup 类就会变得越来越臃肿,难以维护
- Startup 类无法与其他项目类型进行共用
AppStartup 是一个抽象的空类,没有任何定义成员。正是因为这样,才提供更加灵活的配置方式。
AppStartup 派生类只有两个小约定:
- 任何公开、非静态、返回值为 void 且方法第一个参数是 IServiceCollection 类型,那么他就是一个 ConfigureServices 方法
- 任何公开、非静态、返回值为 void 且方法第一个参数是 IApplicationBuilder 类型,第二个参数是 IWebHostEnvironment 类型,那么他就是一个 Configure 方法
using Microsoft.Extensions.DependencyInjection;
namespace Furion.EntityFramework.Core
{
public class MyStartup : AppStartup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDataValidation();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
}
// 可以随意定义名字和方法
public void XXXXName(IServiceCollection services)
{
}
// 可以随意定义名字和方法
public void ZZZName(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
}
AppStartup使用细节
默认情况下,AppStartup 配置顺序由所在程序集的名称进行正序调用,如果我们需要配置执行顺序,只需要在 AppStartup 派生类中贴 [AppStartup(order)] 特性即可。
[AppStartup(10)]
public class FirstStartup : AppStartup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
AppStartup 方法调用顺序和方法的书写先后有关,越在前面的方法越先调用。
最后
由于小僧文档写得太好了,感觉再借鉴来写文没有营养,此系列终结。