LoginSignup
3
1

More than 5 years have passed since last update.

ASP.NET Core fundamentals overview - 日本語意訳

Last updated at Posted at 2017-03-14

ASP.NET Core 基礎編 概要

ASP.NET アプリケーションは単なるコンソールアプリケーションで、その Main メソッドの中で Web サーバーを生成します。

using System;
using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseStartup<Startup>()
                .Build();
            host.Run();
        }
    }
}

Main メソッドでは、 builder パターンに従う WebHostBuilder クラスを使って Web アプリケーションホストを生成します。builder は Web サーバーや StartUp クラス(例えば、UseKestrelUseStartUp)を定義するためのメソッドを持っています。上記のサンプルでは Kestrel Web サーバーを使用していますが、他のサーバーを指定することもできます。
次のセクションで UseStartUp についてさらに詳しく説明します。WebHostBuilder クラスは、IIS および IIS Express でのホスティングのための UseIISIntegration メソッド、ルートコンテンツディレクトリを指定するための UseContentRoot メソッドなど、様々なオプションメソッドを提供します。Build メソッドはアプリケーションをホストする IWebHost オブジェクトを生成します。IWebHost オブジェクトの Run メソッドで HTTP リクエストのリスニングを開始します。

Startup

WebHostBuilder クラスの UseStartup メソッドは、アプリケーションの Startup クラスを指定します。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app)
    {
    }
}

Startup クラスは、リクエスト処理パイプラインを定義したり、アプリケーションで必要なサービスを構成するための場所です。Startup クラスは public かつ以下のメソッドを含まなければなりません:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app)
    {
    }
}
  • ConfigureServices メソッドは、アプリケーション(ASP.NET MVC Core framework、Entity Framework Core、Identity、など)で使用されるサービス(Services を参照)を定義します。
  • Configure メソッドは、リクエストパイプラインにおける middleware を定義します。

詳細については、アプリケーションの起動を参照してください。

Services

Service はアプリケーションで共通的に使用されることを意図したコンポーネントです。Service は Dependency Injection (DI) によって使用可能になります。ASP.NET Core はシンプルなビルトイン Inversion of Control (IoC) コンテナを含んでいます。IoC コンテナはデフォルトでコンストラクタインジェクションをサポートします。このビルトインコンテナは他のコンテナに簡単に置き換え可能です。DI により、疎結合のメリットに加えて、アプリ全体で Service を利用できるようになります。例えば、logging サービスはアプリ全体で使用できます。

詳細については、Dependency Injection を参照してください。

Middleware

ASP.NET Core では、Middleware を使用してリクエストパイプラインを構成します。ASP.NET Core の Middleware は HttpContext 上で非同期ロジックを実行し、シーケンス内の次の Middorware を呼び出すか、リクエストを直接終了します。一般に、NuGet パッケージに依存し、Configure メソッド内で IApplicationBuilderUseXYZ 拡張メソッドを呼び出すことによって Middleware を "使用" します。

ASP.NET Core には豊富なビルトイン Middleware が付属しています:

ASP.NET Core で任意の OWIN ベースの Middleware を使用でき、また、独自のカスタム Middleware を作成することができます。

詳細については、MiddlewareOpen Web Interface for .NET (OWIN) を参照してください。

サーバー

ASP.NET Core のホスティングモデルはリクエストを直接リッスンしません。むしろ、HTTPサーバーの実装を頼りに、リクエストをアプリケーションに転送します。転送されたリクエストは、HttpContext に構成された機能インターフェースのセットとしてラップされます。 ASP.NET Coreには Kestrel と呼ばれるマネージドクロスプラットフォーム Web サーバーが含まれています。これは通常 IISnginxのようなプロダクション Web サーバーの背後で実行されます。

詳細については、ServersHosting を参照してください。

Content root

Content root は view や Web content など、アプリケーションで使用されるあらゆるコンテンツへの基本パスです。デフォルトでは、Content root は、アプリケーションをホストする実行可能ファイルへのアプリケーション基本パスと同じです。 * WebHostBuilder* で別の場所を指定することができます。

Web root

アプリケーションの Web root とは、プロジェクト内の、css、js、image ファイルなどのパブリックな静的リソースを格納するためのディレクトリを指します。
Static files Middleware は、デフォルトでは、Web root ディレクトリ(およびサブディレクトリ)からのファイルのみを提供します。Web root パスのデフォルトは <content root>/wwwrootですが、WebHostBuilder を使用して別の場所を指定することもできます。

構成

ASP.NET Core は、単純な名前と値のペアを処理するための新しい構成モデルを使用します。新しい構成モデルは System.Configurationweb.config に基づいていません。むしろ、順序付けられた構成プロバイダーのセットから引き出します。ビルドインの構成プロバイダーは、さまざまなファイル形式(XML、JSON、INI)と環境変数をサポートし、環境ベースの構成を可能にします。独自のカスタム構成プロバイダーを作成することもできます。

詳細については、Configuration を参照してください。

環境

"Development" や "Production" のような環境は、ASP.NET Core のファーストクラスの概念であり、環境変数を使用して設定できます。

詳細については、Working with Multiple Environments を参照してください。

.NET Core vs. .NET Framework runtime

ASP.NET Core アプリケーションは .NET Core または .NET Framework 実行環境を使用できます。

詳細については、Choosing between .NET Core and .NET Framework を参照してください。

追加情報

以下のトピックも参照してください:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1