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 方法调用顺序和方法的书写先后有关,越在前面的方法越先调用。

最后

由于小僧文档写得太好了,感觉再借鉴来写文没有营养,此系列终结。

原文地址:https://www.cnblogs.com/muphalem/p/14315388.html