(1)ASP.NET Coreアプリケーション起動Startupクラス概要

6253 ワード

1.はじめに


Coreと旧バージョンのASP.NETと比較して、アプリケーションを構成する方式のGlobal.asax、FilterConfig.csとRouteConfig.csはProgramによってcsとStartup.csが取って代わった.Program.csはWebアプリケーションのデフォルトのエントリとして、何の変更もない場合、同ディレクトリのStartupを呼び出す.csのConfigureServicesメソッドとConfigureメソッド.

2.Startupクラス


Startupクラスは、サービスとアプリケーションのリクエストパイプを構成します.Program.Mainメソッドはアプリケーションの管理ポータルです.アプリケーションのホスト(WebHost)を構築する際、システムはアプリケーションにStartupクラスを指定し、Mainエントリがホストジェネレータ(IWebHostBuilder)を介してBuildを呼び出すと、対応するアプリケーションのホスト(WebHost)が生成され、実行(Run)が開始される.
public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup();
}

2.1アプリケーション起動時にStartupクラスを呼び出す


アプリケーションが起動すると、実行時にStartupクラスのConfigureServicesメソッドとConfigureメソッドが呼び出されます.
public class Startup
{
    // Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }

    // Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        ...
    }
}

Startupクラスでは、Configureメソッドを定義する必要がありますが、アプリケーションの起動時に呼び出されるConfigureServicesメソッドの定義を選択できます.次に、この2つの方法を理解します.

3.configureServicesメソッド


アプリケーションに必要なサービスを設定します.・この方法は、定義または非定義を選択することができる.・コンフィギュレーション・メソッドがアプリケーション・サービスを構成する前に、ホスト(WebHost)によって呼び出される.・構成オプション(appsettings.json)を通常通りに設定します.多くの設定が必要な機能の場合、IServiceCollectionにはAdd{Services}拡張メソッドがあります.典型的なASP.NET Coreアプリケーションは、エンティティーフレームワーク(Entity Framework)、ID(Identity)、MVC登録サービスを提供します.
public void ConfigureServices(IServiceCollection services)
{
    //    Entity Framework  
    services.AddDbContext(options =>
        options.UseSqlServer(
            _Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity()
        .AddDefaultUI(UIFramework.Bootstrap4)
        .AddEntityFrameworkStores();

    //   MVC        .
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    //         .
    services.AddTransient();
    services.AddTransient();
}

サービスコンテナにサービスを追加し、アプリケーションおよびConfigureメソッドで使用できるようにします.サービスは依存関係注入(DI)またはApplicationServicesによって解析される.

4.Configureメソッド


アプリケーションがHTTPリクエストに応答する方法を指定します.要求パイピングは、MiddlewareコンポーネントをIApplicationBuilderインスタンスに追加することによって構成できます.ConfigureメソッドはIApplicationBuilderを使用できますが、サービスコンテナに登録されていません.管理者はIApplicationBuilderを作成し、Configureに直接渡します.一般的に、ConfigureメソッドはASPを指定するために使用される.NETアプリケーションが各HTTPリクエストにどのように応答するかは、各リクエストが同じレスポンスを受けるように構成できます.より複雑なパイプ構成は、ミドルウェアにカプセル化され、拡張方法でIApplicationBuilderに追加されます.Configureメソッドは、IApplicationBuilderパラメータを受け入れる必要があります.

4.1 ASP.NET Coreテンプレート構成の配管サポート:


●開発者異常ページ●異常処理プログラム●HTTP厳格伝送セキュリティ(HSTS)●HTTPSリダイレクト●スタティックファイル●一般データ保護条例(GDPR)●ASP.NET Core MVCとRazor Pages
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

5.まとめ


・プログラムのMainメソッドWebHostサービスを作成し、起動クラスStartupを呼び出す.・Startupのコンフィギュレーションサービス方法は、IServiceCollectionサービスコンテナにサービスを注入するために使用される.・StartupのConfigureメソッドは、HTTP要求に応答し、中間部品をApplicationBuilderに登録して要求パイプを構成するために使用される.
 
参考文献:
ASP.NET Coreでのアプリケーション起動