Furion框架亮點之-靈活的Startup類


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 方法調用順序和方法的書寫先后有關,越在前面的方法越先調用。

最后

由於小僧文檔寫得太好了,感覺再借鑒來寫文沒有營養,此系列終結。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM