ASP.NET Core 1.0ベースのアプリケーション起動

5122 ワード

ソースhttps://docs.asp.net/en/latest/fundamentals/startup.html
ASP.NET 5は、アプリケーションがhttpリクエストごとに完全な制御権を持つようにする.Startupクラスは、プログラムのエントリであり、構成とwire upのプログラムで使用されるサービスを設定するために使用されます.開発者もStartupクラスでアプリケーションのリクエストパイプを構成しています.

Startupクラス


Startupはプログラムエントリで、必須です.また、環境構成に基づくStartupクラスとメソッドも提供できます.詳細は、を参照してください.ASP.NETは,マスタセットでStartupによって命名されたクラスを検索することによってエントリを見つける.Hosting:Application configuration keyを指定して、異なるプログラムセットを使用することもできます.Startupクラスにpublicがついているかどうかは関係ありませんが、複数のStartupクラスがあるとしても異常は発生しません.ASP.NETはネーミングスペースに基づいて1つを選択します(プロジェクトルートネーミングスペースに基づいて選択し、ネーミングスペースに基づくアルファベット順で選択します).
Startupクラスはコンストラクタに依存性を注入することができ、一般的にアプリケーションはStartupクラスのコンストラクタによって構成されることが詳細である.Startupクラスは、アプリケーションの起動時に呼び出されるオプションのコンフィギュレーションメソッドを定義する必要があります.

Configureメソッド


Configureメソッドは、httpリクエストごとに適用される応答を指定します.最も簡単な場合は、各リクエストが同じ応答を受信するように構成できます.しかし、実際のプロジェクトは複雑であるため、パッケージされたミドルウェアを使用してIApplicationBuilderの拡張メソッドクラス構成を行うことができます.ConfigureメソッドはパラメータIApplicationBuilderを受信する必要があり、IHostingEnvironmentやILoggerFactoryなどの追加サービスもConfigureメソッドのパラメータに追加でき、注入することができます.サービスBrowserLink,error pages,static files,ASPをIApplicationBuilder拡張メソッドで構成するデフォルトのWebテンプレートNET MVC, and Identity.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());

    app.UseStaticFiles();

    app.UseIdentity();

    // To configure external authentication please see http://go.microsoft.com/fwlink/?LinkID=532715

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

ソースコードで拡張方法を表示できます.例えばUseMvcはBuilderExtensionsで定義されている.その主な責任は、MVCが追加されたことを確認し、MVCルーティングを構成することである.Middlewareでは、ミドルウェアについて詳しく説明し、IApplicationBuilderを使用してリクエストパイプを構成できます.

ConfigureServicesメソッド


ConfigureServicesメソッドはオプションで、アプリケーションが使用するサービスを構成できます.ConfigureServicesは共通のメソッドであり、パラメータはIServiceCollectionであり、オプションでIServiceProviderを返します.このConfigureServicesメソッドは、Configureの前に呼び出されます.これはASPのような特性があるため重要です.NET MVCは、httpリクエストパイプラインに追加する前にコンフィギュレーションサービスで構成する必要があります.
コンフィギュレーションメソッドと同様に、構成する必要があるいくつかの特性をIServiceCollectionの拡張メソッドに追加することを推奨します(it is recommended that features that require substantial setup withinコンフィギュレーションサービスbe wrapped up in extension methods on IServiceCollection).デフォルトのWebテンプレートでは、EFおよびIdentiyおよびMVCからのサービスを構成するためのAdd[Something]拡張方法がいくつか見られます.
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    services.AddMvc();

    // Add application services.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddTransient<ISmsSender, AuthMessageSender>();
}

依存注入により、サービスがサービスコンテナに追加され、アプリケーションで利用可能になります.Startupクラスは、特定のインプリメンテーションをハードコーディングするのではなく、メソッドパラメータの必要な依存性を指定することができます.あなたのミドルウェア、mvc controller、その他のクラスもそうです.コンフィギュレーションサービスでは、AppSettingsなどのコンフィギュレーションオプションクラスも追加し、コンフィギュレーションを参照してアプリケーションで使用できます.

Startupクラスで利用可能なサービス


ASP.NET 5はStartupクラスでいくつかのアプリケーションサービスとオブジェクトを提供しています.これらのサービスは、Startupのコンストラクタパラメータまたはそのコンフィギュレーションメソッドのパラメータに適切なインタフェースを入れることで利用できます.Startupクラスの各メソッドの利用可能なサービスは以下のとおりです.frameworkサービスとオブジェクトは次のとおりです.
  • IApplicationBuilderはhttpリクエストパイプラインを構築するために使用されます.詳細はRequest Featuresを参照してください.StartupクラスのConfigureメソッドでのみ使用できます.
  • IApplicationEnvironmentは、ApplicationName、ApplicationVersion、and ApplicationBasePathなどのアプリケーション属性を提供する.StartupクラスコンストラクタおよびConfigureメソッドで使用できます.
  • IHostingEnvironment Provides the current EnvironmentName, WebRootPath, and web root file provider. Available to the Startup constructor and Configure method.
  • ILoggerFactoryは、コンストラクタおよびCongigureメソッドで使用可能なログを作成するメカニズムを提供します.詳細はロギングを参照してください.
  • IServiceCollectionコンテナで現在構成されているサービスのセットは、コンフィギュレーションサービスでのみ使用可能であり、アプリケーションで使用可能なサービスを構成します.

  • Startupクラスのメソッド呼び出し順序は、次のとおりです.および、使用可能なサービスです.Startup Constructor - IApplicationEnvironment - IHostingEnvironment - ILoggerFactory
    ConfigureServices - IServiceCollection
    Configure - IApplicationBuilder - IApplicationEnvironment - IHostingEnvironment - ILoggerFactory
    ILoggerFactoryはコンストラクタで使用可能であるが、一般的にコンフィギュレーションメソッドで構成される.詳細はロギングを参照してください.