- 2017/03/14(Tue) 時点の情報に基づいています
- 公式ドキュメント:ASP.NET Core fundamentals overview
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 クラス(例えば、UseKestrel
や UseStartUp
)を定義するためのメソッドを持っています。上記のサンプルでは 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
メソッド内で IApplicationBuilder
で UseXYZ
拡張メソッドを呼び出すことによって Middleware を "使用" します。
ASP.NET Core には豊富なビルトイン Middleware が付属しています:
ASP.NET Core で任意の OWIN ベースの Middleware を使用でき、また、独自のカスタム Middleware を作成することができます。
詳細については、Middleware と Open Web Interface for .NET (OWIN) を参照してください。
サーバー
ASP.NET Core のホスティングモデルはリクエストを直接リッスンしません。むしろ、HTTPサーバーの実装を頼りに、リクエストをアプリケーションに転送します。転送されたリクエストは、HttpContext
に構成された機能インターフェースのセットとしてラップされます。 ASP.NET Coreには Kestrel と呼ばれるマネージドクロスプラットフォーム Web サーバーが含まれています。これは通常 IISやnginxのようなプロダクション Web サーバーの背後で実行されます。
詳細については、Servers と Hosting を参照してください。
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.Configuration
や web.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 を参照してください。
追加情報
以下のトピックも参照してください: