ASP.NET Core の基礎ASP.NET Core fundamentals

ASP.NET Core アプリケーションは、以下の Main メソッドで Web サーバーを作成するコンソール アプリです。An ASP.NET Core application is a console app that creates a web server in its Main method:

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 を呼び出します。The Main method invokes WebHost.CreateDefaultBuilder, which follows the builder pattern to create a web application host. ビルダーには、Web サーバー (UseKestrel など) とスタートアップ クラス (UseStartup) を定義するメソッドがあります。The builder has methods that define the web server (for example, UseKestrel) and the startup class (UseStartup). 前の例では、Kestrel Web サーバーが自動的に割り当てられます。In the preceding example, the Kestrel web server is automatically allocated. ASP.NET Core の Web ホストは、IIS (使用可能な場合) で実行を試みます。ASP.NET Core's web host attempts to run on IIS, if available. HTTP.sys などの他の Web サーバーは、適切な拡張メソッドを呼び出して使用することができます。Other web servers, such as HTTP.sys, can be used by invoking the appropriate extension method. UseStartup については、次のセクションで詳しく説明します。UseStartup is explained further in the next section.

IWebHostBuilder (WebHost.CreateDefaultBuilder 呼び出しの戻り値の型) では、省略可能な多くのメソッドが提供されます。IWebHostBuilder, the return type of the WebHost.CreateDefaultBuilder invocation, provides many optional methods. これらのメソッドの一部には、HTTP.sys でアプリをホストするための UseHttpSys と、ルート コンテンツ ディレクトリを指定するための UseContentRoot が含まれています。Some of these methods include UseHttpSys for hosting the app in HTTP.sys and UseContentRoot for specifying the root content directory. Build および Run メソッドは、アプリをホストし、HTTP 要求のリッスンを開始する IWebHost オブジェクトをビルドします。The Build and Run methods build the IWebHost object that hosts the app and begins listening for HTTP requests.

スタートアップStartup

WebHostBuilderUseStartup メソッドは、アプリの Startup クラスを指定します。The UseStartup method on WebHostBuilder specifies the Startup class for your app:

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 クラスでは、要求処理パイプラインを定義し、アプリで必要なサービスが構成されます。The Startup class is where you define the request handling pipeline and where any services needed by the app are configured. Startup クラスはパブリックであり、次のメソッドを含む必要があります。The Startup class must be public and contain the following methods:

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 など) を定義します。ConfigureServices defines the Services used by your app (for example, ASP.NET Core MVC, Entity Framework Core, Identity). Configure は、要求パイプラインのミドルウェアを定義します。Configure defines the middleware for the request pipeline.

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

コンテンツ ルートContent root

コンテンツ ルートは、ビュー、Razor ページ、および静的資産など、アプリで使用されるコンテンツへの基本パスです。The content root is the base path to any content used by the app, such as views, Razor Pages, and static assets. 既定では、コンテンツ ルートは、アプリをホストする実行可能ファイルのアプリケーション基本パスと同じです。By default, the content root is the same as application base path for the executable hosting the app.

Web ルートWeb root

アプリの Web ルートは、CSS、JavaScript、イメージ ファイルなどのパブリックな静的なリソースを含むプロジェクトのディレクトリです。The web root of an app is the directory in the project containing public, static resources, such as CSS, JavaScript, and image files.

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

サービスは、アプリでの一般的な使用を想定されているコンポーネントです。A service is a component that's intended for common consumption in an app. サービスは依存性の注入 (DI) を介して使用できます。Services are made available through dependency injection (DI). ASP.NET Core には、既定でコンストラクターの挿入をサポートする、ネイティブの制御の反転 (Inversion of Control、IoC) コンテナーが含まれます。ASP.NET Core includes a native Inversion of Control (IoC) container that supports constructor injection by default. 必要に応じて、既定のネイティブ コンテナーを置き換えることができます。You can replace the default native container if you wish. その疎結合の利点に加え、DI はアプリ全体でサービス (ログなど) を使用できるようにします。In addition to its loose coupling benefit, DI makes services available throughout your app (for example, logging).

詳細については、依存性の注入に関するページを参照してください。For more information, see Dependency injection.

ミドルウェアMiddleware

ASP.NET Core では、ミドルウェアを使用して要求パイプラインを構成します。In ASP.NET Core, you compose your request pipeline using middleware. ASP.NET Core ミドルウェアは HttpContext で非同期ロジックを実行してから、シーケンス内の次のミドルウェアを呼び出すか、直接要求を終了します。ASP.NET Core middleware performs asynchronous logic on an HttpContext and then either invokes the next middleware in the sequence or terminates the request directly. "XYZ" と呼ばれるミドルウェア コンポーネントは、Configure メソッドで UseXYZ 拡張メソッドを呼び出して追加されます。A middleware component called "XYZ" is added by invoking an UseXYZ extension method in the Configure method.

ASP.NET Core には、豊富な組み込みミドルウェアのセットが含まれます。ASP.NET Core includes a rich set of built-in middleware:

ASP.NET Core アプリで OWIN ベースのミドルウェアを使用することができます。また、独自のカスタム ミドルウェアを作成することもできます。OWIN-based middleware is available for ASP.NET Core apps, and you can write your own custom middleware.

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

環境Environments

"開発" や "実稼働" などの環境は ASP.NET Core におけるファースト クラスの概念であり、環境変数を使用して設定できます。Environments, such as "Development" and "Production", are a first-class notion in ASP.NET Core and can be set using environment variables.

詳細については、「Working with multiple environments」 (複数の環境の使用) を参照してください。For more information, see Working with Multiple Environments.

構成Configuration

ASP.NET Core は、名前と値のペアに基づく構成モデルを使用します。ASP.NET Core uses a configuration model based on name-value pairs. この構成モデルは System.Configuration または web.config には基づきません。構成は、構成プロバイダーの順序付けされたセットから設定を取得します。The configuration model isn't based on System.Configuration or web.config. Configuration obtains settings from an ordered set of configuration providers. 組み込みの構成プロバイダーではさまざまなファイル形式 (XML、JSON、INI) と環境変数がサポートされ、これにより環境ベースの構成が可能になります。The built-in configuration providers support a variety of file formats (XML, JSON, INI) and environment variables to enable environment-based configuration. 独自のカスタム構成プロバイダーを作成することもできます。You can also write your own custom configuration providers.

詳細については、構成に関するページを参照してください。For more information, see Configuration.

ログの記録Logging

ASP.NET Core は、さまざまなログ プロバイダーと連携するログ API をサポートします。ASP.NET Core supports a logging API that works with a variety of logging providers. 組み込みプロバイダーは、1 つまたは複数の送信先へのログの送信をサポートします。Built-in providers support sending logs to one or more destinations. サード パーティ製のログ記録フレームワークを使用できます。Third-party logging frameworks can be used.

ログLogging

エラー処理Error handling

ASP.NET Core には、開発者の例外ページ、カスタム エラー ページ、静的ステータス コード ページ、起動時の例外処理を含む、アプリのエラー処理の機能が組み込まれています。ASP.NET Core has built-in features for handling errors in apps, including a developer exception page, custom error pages, static status code pages, and startup exception handling.

詳細については、エラー処理に関するページを参照してください。For more information, see Error Handling.

ルーティングRouting

ASP.NET Core は、ルート ハンドラーにアプリ要求をルーティングする機能を提供します。ASP.NET Core offers features for routing of app requests to route handlers.

詳細については、ルーティングに関するページを参照してください。For more information, see Routing.

ファイル プロバイダーFile providers

ASP.NET Core は、プラットフォーム間でファイルを操作するための共通のインターフェイスを提供するファイル プロバイダーの使用により、ファイル システムへのアクセスを抽象化します。ASP.NET Core abstracts file system access through the use of File Providers, which offers a common interface for working with files across platforms.

詳細については、ファイル プロバイダーに関するページを参照してください。For more information, see File Providers.

静的ファイルStatic files

静的ファイルのミドルウェアは、HTML、CSS、画像、JavaScript などの静的ファイルを処理します。Static files middleware serves static files, such as HTML, CSS, image, and JavaScript.

詳細については、静的ファイルの使用に関するページを参照してください。For more information, see Working with static files.

ホストHosting

ASP.NET Core アプリは、アプリの起動と有効期間の管理を担当するホストを構成して起動します。ASP.NET Core apps configure and launch a host, which is responsible for app startup and lifetime management.

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

セッションとアプリケーションの状態Session and application state

セッション状態は ASP.NET Core の機能で、これを使用することでユーザーが Web アプリを参照中にユーザー データを保存して格納することができます。Session state is a feature in ASP.NET Core that you can use to save and store user data while the user browses your web app.

詳細については、セッションとアプリケーション状態に関するページを参照してください。For more information, see Session and application state.

サーバーServers

ASP.NET Core のホスティング モデルは、直接要求をリッスンしません。The ASP.NET Core hosting model doesn't directly listen for requests. ホスティング モデルは HTTP サーバー実装に依存して要求をアプリに転送します。The hosting model relies on an HTTP server implementation to forward the request to the app. 転送された要求は、インターフェイスを介してアクセス可能な一連の機能オブジェクトとしてラップされます。The forwarded request is wrapped as a set of feature objects that can be accessed through interfaces. ASP.NET Core には、Kestrel と呼ばれる、マネージド クロスプラットフォーム Web サーバーが含まれています。ASP.NET Core includes a managed, cross-platform web server, called Kestrel. Kestrel は多くの場合、IISNginx などの実稼働 Web サーバーの背後で実行されます。Kestrel is often run behind a production web server, such as IIS or Nginx. Kestrel は、エッジ サーバーとして実行することができます。Kestrel can be run as an edge server.

詳細については、サーバーに関するページと、次のトピックを参照してください。For more information, see Servers and the following topics:

グローバリゼーションとローカリゼーションGlobalization and localization

ASP.NET Core で多言語の Web サイトを作成すると、より幅広い対象者がサイトにアクセスできるようになります。Creating a multilingual website with ASP.NET Core allows your site to reach a wider audience. ASP.NET Core は、さまざまな言語と文化にローカライズするためのサービスとミドルウェアを提供します。ASP.NET Core provides services and middleware for localizing into different languages and cultures.

詳細については、グローバリゼーションとローカリゼーションに関するページを参照してください。For more information, see Globalization and localization.

要求機能Request features

HTTP の要求と応答に関連する Web サーバーの実装の詳細が、インターフェイスで定義されています。Web server implementation details related to HTTP requests and responses are defined in interfaces. これらのインターフェイスは、サーバーの実装とミドルウェアがアプリのホスティングのパイプラインを作成および変更するために使用します。These interfaces are used by server implementations and middleware to create and modify the app's hosting pipeline.

詳細については、 要求機能に関するページを参照してください。For more information, see Request Features.

バックグラウンド タスクBackground tasks

バックグラウンド タスクはホストされるサービスとして実装されます。Background tasks are implemented as hosted services. ホストされるサービスは、IHostedService インターフェイスを実装するバックグラウンド タスク ロジックを持つクラスです。A hosted service is a class with background task logic that implements the IHostedService interface.

詳細については、「Background tasks with hosted services」(ホストされるタスクを使用するバックグラウンド タスク) を参照してください。For more information, see Background tasks with hosted services.

Open Web Interface for .NET (OWIN)Open Web Interface for .NET (OWIN)

ASP.NET Core は、Open Web Interface for .NET (OWIN) をサポートします。ASP.NET Core supports the Open Web Interface for .NET (OWIN). OWIN により、Web アプリを Web サーバーから切り離すことが可能になります。OWIN allows web apps to be decoupled from web servers.

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

WebSocketWebSockets

WebSocket は TCP 接続を使用した双方向の永続的通信チャネルを有効にするプロトコルです。WebSocket is a protocol that enables two-way persistent communication channels over TCP connections. チャット、株価情報、ゲームなどのアプリ、さらに Web アプリでのリアルタイムな機能が必要とされるあらゆる場所で使用されます。It's used for apps such as chat, stock tickers, games, and anywhere you desire real-time functionality in a web app. ASP.NET Core は、Web ソケットの機能をサポートします。ASP.NET Core supports web socket features.

詳細については、WebSockets に関するページを参照してください。For more information, see WebSockets.

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

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

  • ASP.NET Core チームでサポートされるすべてのパッケージ。All supported packages by the ASP.NET Core team.
  • Entity Framework Core でサポートされるすべてのパッケージ。All supported packages by the Entity Framework Core.
  • ASP.NET Core および Entity Framework Core で使用される内部およびサードパーティの依存関係。Internal and 3rd-party dependencies used by ASP.NET Core and Entity Framework Core.

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

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

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

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

ASP.NET Core と ASP.NET の選択Choose between ASP.NET Core and ASP.NET

ASP.NET Core と ASP.NET の選択の詳細については、「 ASP.NET と ASP.NET Core の選択」を参照してください。For more information on choosing between ASP.NET Core and ASP.NET, see Choose between ASP.NET Core and ASP.NET.