ASP.NET Core の基礎

ASP.NET Core アプリケーションは、以下の Main メソッドで Web サーバーを作成するコンソール アプリです。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
}

Main メソッドは、Web アプリケーション ホストを作成するビルダー パターンに従う、WebHost.CreateDefaultBuilder を呼び出します。 ビルダーには、Web サーバー (UseKestrel など) とスタートアップ クラス (UseStartup) を定義するメソッドがあります。 前の例では、Kestrel Web サーバーが自動的に割り当てられます。 ASP.NET Core の Web ホストは、IIS (使用可能な場合) で実行を試みます。 HTTP.sys などの他の Web サーバーは、適切な拡張メソッドを呼び出して使用することができます。 UseStartup については、次のセクションで詳しく説明します。

IWebHostBuilder (WebHost.CreateDefaultBuilder 呼び出しの戻り値の型) では、省略可能な多くのメソッドが提供されます。 これらのメソッドの一部には、HTTP.sys でアプリをホストするための UseHttpSys と、ルート コンテンツ ディレクトリを指定するための UseContentRoot が含まれています。 Build および Run メソッドは、アプリをホストし、HTTP 要求のリッスンを開始する IWebHost オブジェクトをビルドします。

スタートアップ

WebHostBuilderUseStartup メソッドは、アプリの Startup クラスを指定します。

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

Startup クラスでは、要求処理パイプラインを定義し、アプリで必要なサービスが構成されます。 Startup クラスはパブリックであり、次のメソッドを含む必要があります。

public class Startup
{
    // This method gets called by the runtime. Use this method
    // to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
    }

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

ConfigureServices は、アプリで使用されるサービス (ASP.NET Core MVC、Entity Framework Core、Identity など) を定義します。 Configure は、要求パイプラインのミドルウェアを定義します。

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

コンテンツ ルート

コンテンツ ルートは、ビュー、Razor ページ、および静的資産など、アプリで使用されるコンテンツへの基本パスです。 既定では、コンテンツ ルートは、アプリをホストする実行可能ファイルのアプリケーション基本パスと同じです。

Web ルート

アプリの Web ルートは、CSS、JavaScript、イメージ ファイルなどのパブリックな静的なリソースを含むプロジェクトのディレクトリです。

依存性の注入 (サービス)

サービスは、アプリでの一般的な使用を想定されているコンポーネントです。 サービスは依存性の注入 (DI) を介して使用できます。 ASP.NET Core には、既定でコンストラクターの挿入をサポートする、ネイティブの制御の反転 (Inversion of Control、IoC) コンテナーが含まれます。 必要に応じて、既定のネイティブ コンテナーを置き換えることができます。 その疎結合の利点に加え、DI はアプリ全体でサービス (ログなど) を使用できるようにします。

詳細については、依存性の注入に関するページを参照してください。

ミドルウェア

ASP.NET Core では、ミドルウェアを使用して要求パイプラインを構成します。 ASP.NET Core ミドルウェアは HttpContext で非同期ロジックを実行してから、シーケンス内の次のミドルウェアを呼び出すか、直接要求を終了します。 "XYZ" と呼ばれるミドルウェア コンポーネントは、Configure メソッドで UseXYZ 拡張メソッドを呼び出して追加されます。

ASP.NET Core には、豊富な組み込みミドルウェアのセットが付属しています。

ASP.NET Core アプリで OWIN ベースのミドルウェアを使用することができます。また、独自のカスタム ミドルウェアを作成することもできます。

詳細については、ミドルウェアOpen Web Interface for .NET (OWIN) に関するページを参照してください。

環境

"開発" や "実稼働" などの環境は ASP.NET Core におけるファースト クラスの概念であり、環境変数を使用して設定できます。

詳細については、「Working with multiple environments」 (複数の環境の使用) を参照してください。

構成

ASP.NET Core は、名前と値のペアに基づく構成モデルを使用します。 この構成モデルは System.Configuration または web.config には基づきません。構成は、構成プロバイダーの順序付けされたセットから設定を取得します。 組み込みの構成プロバイダーではさまざまなファイル形式 (XML、JSON、INI) と環境変数がサポートされ、これにより環境ベースの構成が可能になります。 独自のカスタム構成プロバイダーを作成することもできます。

詳細については、構成に関するページを参照してください。

ログの記録

ASP.NET Core は、さまざまなログ プロバイダーと連携するログ API をサポートします。 組み込みプロバイダーは、1 つまたは複数の送信先へのログの送信をサポートします。 サード パーティ製のログ記録フレームワークを使用できます。

ログ

エラー処理

ASP.NET Core には、開発者の例外ページ、カスタム エラー ページ、静的ステータス コード ページ、起動時の例外処理を含む、アプリのエラー処理の機能が組み込まれています。

詳細については、エラー処理に関するページを参照してください。

ルーティング

ASP.NET Core は、ルート ハンドラーにアプリ要求をルーティングする機能を提供します。

詳細については、ルーティングに関するページを参照してください。

ファイル プロバイダー

ASP.NET Core は、プラットフォーム間でファイルを操作するための共通のインターフェイスを提供するファイル プロバイダーの使用により、ファイル システムへのアクセスを抽象化します。

詳細については、ファイル プロバイダーに関するページを参照してください。

静的ファイル

静的ファイルのミドルウェアは、HTML、CSS、画像、JavaScript などの静的ファイルを処理します。

詳細については、静的ファイルの使用に関するページを参照してください。

ホスト

ASP.NET Core アプリは、アプリの起動と有効期間の管理を担当するホストを構成して起動します。

詳細については、ホスティングに関するページを参照してください。

セッションとアプリケーションの状態

セッション状態は ASP.NET Core の機能で、これを使用することでユーザーが Web アプリを参照中にユーザー データを保存して格納することができます。

詳細については、セッションとアプリケーション状態に関するページを参照してください。

サーバー

ASP.NET Core のホスティング モデルは、直接要求をリッスンしません。 ホスティング モデルは HTTP サーバー実装に依存して要求をアプリに転送します。 転送された要求は、インターフェイスを介してアクセス可能な一連の機能オブジェクトとしてラップされます。 ASP.NET Core には、Kestrel と呼ばれる、マネージド クロスプラットフォーム Web サーバーが含まれています。 Kestrel は多くの場合、IISnginx などの実稼働 Web サーバーの背後で実行されます。 Kestrel は、エッジ サーバーとして実行することができます。

詳細については、サーバーに関するページと、次のトピックを参照してください。

グローバリゼーションとローカリゼーション

ASP.NET Core で多言語の Web サイトを作成すると、より幅広い対象者がサイトにアクセスできるようになります。 ASP.NET Core は、さまざまな言語と文化にローカライズするためのサービスとミドルウェアを提供します。

詳細については、グローバリゼーションとローカリゼーションに関するページを参照してください。

要求機能

HTTP の要求と応答に関連する Web サーバーの実装の詳細が、インターフェイスで定義されています。 これらのインターフェイスは、サーバーの実装とミドルウェアがアプリのホスティングのパイプラインを作成および変更するために使用します。

詳細については、 要求機能に関するページを参照してください。

Open Web Interface for .NET (OWIN)

ASP.NET Core は、Open Web Interface for .NET (OWIN) をサポートします。 OWIN により、Web アプリを Web サーバーから切り離すことが可能になります。

詳細については、Open Web Interface for .NET (OWIN)に関するページを参照してください。

WebSocket

WebSocket は TCP 接続を使用した双方向の永続的通信チャネルを有効にするプロトコルです。 チャット、株価情報、ゲームなどのアプリ、さらに Web アプリでのリアルタイムな機能が必要とされるあらゆる場所で使用されます。 ASP.NET Core は、Web ソケットの機能をサポートします。

詳細については、WebSockets に関するページを参照してください。

Microsoft.AspNetCore.All メタパッケージ

ASP.NET Core の Microsoft.AspNetCore.All メタパッケージには、次のものが含まれます。

  • ASP.NET Core チームでサポートされるすべてのパッケージ。
  • Entity Framework Core でサポートされるすべてのパッケージ。
  • ASP.NET Core および Entity Framework Core で使用される内部およびサードパーティの依存関係。

詳細については、 Microsoft.AspNetCore.All メタパッケージに関するページを参照してください。

.NET Core と .NET Framework ランタイム

ASP.NET Core アプリは、.NET Core または .NET Framework ランタイムを対象にすることができます。

詳細については、「サーバー アプリ用 .NET Core と .NET Framework の選択」を参照してください。

ASP.NET Core と ASP.NET の選択

ASP.NET Core と ASP.NET の選択の詳細については、「 ASP.NET と ASP.NET Core の選択」を参照してください。