Skip to content

Latest commit

 

History

History
88 lines (64 loc) · 1.91 KB

startup-2.md

File metadata and controls

88 lines (64 loc) · 1.91 KB

Starup.cs

构造函数

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

其实这里还可以支持另外一个接口的注入

public Startup(IConfiguration configuration, IHostEnvironment environment)
{
    Configuration = configuration;
}

配置MVC服务(DI容器配置)

public void ConfigureServices(IServiceCollection services)
{
    //webApi 相关服务
    services.AddControllers();
    //尽量使用扩展方法聚合模块,减少Startup的代码量
}

配置中间件

这个方法能够注入使用一切在DI容器配置的服务

public void Configure(IApplicationBuilder app)
{        
    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

理解中间件

Endpoint中间件

/api/*      //Rest API
/hub/*      //SignalR
/rpc/*      //GRPC

以上endpoints, 如果使用传统的MVC的中间件,会得到很糟糕的体验(特别深的pipeline,低性能).

剥离Endpoint不仅仅局限于MVC可以让扩展性更好,更好的Url控制

比如以上endpoints拥有各自的授权认证机制,在这种情况下就可以分别处理

使用IApplicationLifetime -> IHostApplicationLifetime

在3.0中 IApplicationLifetime 被标记为废弃的, 请使用 IHostApplicationLifetime

public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifetime)
{
    lifetime.ApplicationStarted.Register(() => {
        //耗时较长的代码,减少WebServer的启动时间
        //如果是BackgroundWorker,请使用Worker
    });

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}