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 方法調用順序和方法的書寫先后有關,越在前面的方法越先調用。
最后
由於小僧文檔寫得太好了,感覺再借鑒來寫文沒有營養,此系列終結。