ASP.NET Core の概要

著者: Daniel RothRick AndersonShaun Luttin

ASP.NET Core は、インターネットに接続された最新のクラウド対応アプリを構築するための、クロス プラットフォームで高パフォーマンスのオープン ソース フレームワークです。

ASP.NET Core では次のことができます。

  • Web アプリ、Web サービス、モノのインターネット (IoT) アプリ、モバイル バックエンドを構築する。
  • Windows、macOS、Linux で好みの開発ツールを使う。
  • クラウドまたはオンプレミスに展開する。
  • [.NET Core] で実行する。

ASP.NET Core を選ぶ理由

何百万もの開発者は、ASP.NET 4.x を使用して、Web アプリを作成しました。 ASP.NET Core は ASP.NET 4.x を設計し直したものであり、無駄のないモジュール形式のフレームワークになるようなアーキテクチャ変更が含まれています。

ASP.NET Core の利点は次のとおりです。

  • Web UI と Web API を構築するプロセスの統一。
  • テストの容易性を考慮したアーキテクチャ。
  • Razor Pages により、ページ コーディングに重点を置いたシナリオがより簡略化され、その生産性が高められます。
  • Blazor により、ブラウザー内で JavaScript と共に C# を使用できます。 すべて .NET で記述された、サーバー側とクライアント側アプリのロジックを共有します。
  • Windows、macOS、Linux 上で開発および実行できること。
  • オープン ソースでコミュニティ重視
  • 最新のクライアント側フレームワークと開発ワークフローの統合。
  • gRPC を使用したリモート プロシージャ コール (RPC) サービスのホストのサポート。
  • クラウド対応で環境ベースの構成システム
  • 組み込まれている依存性の注入
  • 軽量で高パフォーマンスのモジュール化された HTTP 要求パイプライン。
  • 次がホストする機能です。
  • side-by-side でのバージョン管理
  • 最新の Web 開発を簡単にするツール。

ASP.NET Core MVC を使って Web API と Web UI を構築する

ASP.NET Core MVC は、Web APIWeb アプリを構築する機能を備えています。

クライアント側の開発

ASP.NET Core は、人気のあるクライアント側のフレームワークとライブラリ (BlazorAngularReactBootstrap など) をシームレスに統合します。 詳細については、ASP.NET Core Blazor と "クライアント側の開発" の関連トピックを参照してください。

ASP.NET Core ターゲット フレームワーク

ASP.NET Core 3.x 以降では、.NET Core のみをターゲットにできます。 一般に、ASP.NET Core は .NET Standard ライブラリで構成されています。 .NET Standard 2.0 を使って作成されたライブラリは、.NET Standard 2.0 を実装しているすべての .NET プラットフォーム上で動作します。

.NET Core を対象とする利点はいくつかあり、リリースのたびにその利点が増えています。 .NET Framework 経由による .NET Core には次のような利点があります。

ASP.NET Core アプリを開発する場合の概要として、次の順序でチュートリアルを読むことをお勧めします。

  1. 開発または保守管理するアプリの種類に合わせてチュートリアルを選択します。

    アプリの種類 シナリオ チュートリアル
    Web アプリ 新しいサーバー側 Web UI 開発 Razor Pages の使用を開始する
    Web アプリ MVC アプリの保守管理 MVC の概要
    Web アプリ クライアント Web UI 開発 Blazor の概要
    Web API RESTful HTTP サービス Web API の作成
    リモート プロシージャ コール アプリ プロトコル バッファーを利用したコントラクト優先サービス gRPC サービスの概要
    リアルタイムのアプリ サーバーと接続クライアント間での双方向通信 SignalR の概要
  2. 基本のデータ アクセスの実行方法を示すチュートリアルは次のとおりです。

    シナリオ チュートリアル
    新しい開発 Entity Framework Core を使用した Razor Pages
    MVC アプリの保守管理 Entity Framework Core を使用した MVC
  3. すべての種類のアプリに該当する ASP.NET Core の基本の概要は、次を参照してください。

  4. 興味のあるその他のトピックは、目次から参照してください。

対話式 Web API チュートリアルもあります。 開発ツールはローカルにインストールする必要がありません。 このコードは、ブラウザーの Azure Cloud Shell で実行し、テストには curl を使用します。

.NET Framework からの移行

ASP.NET 4.x アプリを ASP.NET Core に移行するためのリファレンス ガイドについては、「ASP.NET から ASP.NET Core への移行」を参照してください。

ASP.NET Core は、インターネットに接続された最新のクラウド対応アプリを構築するための、クロス プラットフォームで高パフォーマンスのオープン ソース フレームワークです。 ASP.NET Core では次のことができます。

ASP.NET Core を選ぶ理由

何百万もの開発者は、ASP.NET 4.x を使用して、Web アプリを作成しました。 ASP.NET Core は ASP.NET 4.x を設計し直したものであり、無駄のないモジュール形式のフレームワークになるようにアーキテクチャが変更されています。

ASP.NET Core の利点は次のとおりです。

  • Web UI と Web API を構築するプロセスの統一。
  • テストの容易性を考慮したアーキテクチャ。
  • Razor Pages により、ページ コーディングに重点を置いたシナリオがより簡略化され、その生産性が高められます。
  • Blazor により、ブラウザー内で JavaScript と共に C# を使用できます。 すべて .NET で記述された、サーバー側とクライアント側アプリのロジックを共有します。
  • Windows、macOS、Linux 上で開発および実行できること。
  • オープン ソースでコミュニティ重視
  • 最新のクライアント側フレームワークと開発ワークフローの統合。
  • gRPC を使用したリモート プロシージャ コール (RPC) サービスのホストのサポート。
  • クラウド対応で環境ベースの構成システム
  • 組み込まれている依存性の注入
  • 軽量で高パフォーマンスのモジュール化された HTTP 要求パイプライン。
  • 次がホストする機能です。
  • side-by-side でのバージョン管理
  • 最新の Web 開発を簡単にするツール。

ASP.NET Core MVC を使って Web API と Web UI を構築する

ASP.NET Core MVC は、Web APIWeb アプリを構築する機能を備えています。

クライアント側の開発

ASP.NET Core は、人気のあるクライアント側のフレームワークとライブラリ (BlazorAngularReactBootstrap など) をシームレスに統合します。 詳細については、ASP.NET Core Blazor と "クライアント側の開発" の関連トピックを参照してください。

.NET Framework を対象とする ASP.NET Core

ASP.NET Core 2.x は、.NET Core または .NET Framework を対象にすることができます。 .NET Framework を対象とする ASP.NET Core アプリはクロスプラットフォームではありません。Windows でのみ実行されます。 一般に、ASP.NET Core 2.x は .NET Standard ライブラリで構成されています。 .NET Standard 2.0 を使って作成されたライブラリは、.NET Standard 2.0 を実装しているすべての .NET プラットフォーム上で動作します。

ASP.NET Core 2.x は、.NET Standard 2.0 を実装している .NET Framework バージョンにおいてサポートされています。

  • .NET Framework の最新バージョンをお勧めします。
  • .NET Framework 4.6.1 以降。

ASP.NET Core 3.0 以降は、.NET Core でのみ実行されます。 この変更に関する詳細については、「ASP.NET Core 3.0 で導入される変更について」を参照してください。

.NET Core を対象とする利点はいくつかあり、リリースのたびにその利点が増えています。 .NET Framework 経由による .NET Core には次のような利点があります。

.NET Framework から .NET Core までの API ギャップを埋める目的で、Windows 互換機能パックにより、多くの Windows 限定の API が .NET Core で利用できるようになりました。 このような API は .NET Core 1.x で利用できませんでした。

ASP.NET Core アプリを開発する場合の概要として、次の順序でチュートリアルと記事を読むことをお勧めします。

  1. 開発または管理するアプリの種類別のチュートリアルは次のとおりです。

    アプリの種類 シナリオ チュートリアル
    Web アプリ 新規の開発 Razor Pages の使用を開始する
    Web アプリ MVC アプリの管理 MVC の概要
    Web API Web API の作成
    リアルタイムのアプリ SignalR の概要
  2. 基本のデータ アクセスの実行方法を示すチュートリアルは次のとおりです。

    シナリオ チュートリアル
    新規の開発 Entity Framework Core を使用した Razor Pages
    MVC アプリの管理 Entity Framework Core を使用した MVC
  3. すべての種類のアプリに該当する ASP.NET Core の基本の概要は、次を参照してください。

  4. 興味のあるその他のトピックは、目次から参照してください。

すべてブラウザーで実行できる Web API チュートリアルもあります。ローカル IDE のインストールは不要です。 このコードは、Azure Cloud Shell で実行し、テストには curl を使用します。

.NET Framework からの移行

ASP.NET アプリを ASP.NET Core に移行するためのリファレンス ガイドについては、「ASP.NET から ASP.NET Core への移行」を参照してください。

サンプルをダウンロードする方法

多くの記事やチュートリアルにサンプル コードへのリンクが含まれています。

  1. ASP.NET リポジトリの zip ファイルをダウンロードします。
  2. AspNetCore.Docs-main.zip ファイルを解凍します。
  3. 解凍されたリポジトリ内の記事のサンプルにアクセスするには、記事のサンプル リンクの URL を使用して、サンプルのフォルダーに移動します。 通常、記事のサンプル リンクは、"サンプル コードを表示またはダウンロードしてください" というリンク テキストと共に記事の上部に表示されます。

サンプル コードのプリプロセッサ ディレクティブ

複数のシナリオを示すため、サンプル アプリでは #define#if-#else/#elif-#endif のプリプロセッサ ディレクティブを使用してさまざまなサンプル コードのセクションを選択してコンパイルし、実行します。 このアプローチを活用するサンプルでは、C# ファイルの上部にある #define ディレクティブを設定して、実行するシナリオに関連付けられたシンボルを定義します。 一部のサンプルでは、シナリオを実行するために複数のファイルの上部でシンボルを定義する必要があります。

たとえば、次の #define のシンボル一覧は、4 つのシナリオが使用可能である (シンボルごとに 1 つのシナリオ) ことを示しています。 現在のサンプル構成では TemplateCode のシナリオが実行されます。

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

ExpandDefault のシナリオを実行するサンプルを変更するには、ExpandDefault のシンボルを定義し、残りのシンボルをコメント アウトしたままにします。

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

C# プリプロセッサ ディレクティブを使用してコードのセクションを選択的にコンパイルする方法の詳細については、「#define (C# リファレンス)」および「#if (C# リファレンス)」を参照してください。

サンプル コードのリージョン

一部のサンプル アプリには、#region#end-region の C# ディレクティブに囲まれたコードのセクションが含まれています。 ドキュメントのビルド システムによって、レンダリングされたドキュメントのトピックにこのリージョンが挿入されます。

通常、リージョン名には "snippet" という単語が含まれています。次の例は、snippet_WebHostDefaults という名前のリージョンを示しています。

#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });
#endregion

先述の C# コード スニペットは、トピックのマークダウン ファイルの次の行で示されています。

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]

コードを囲む #region#endregion のディレクティブは安全に無視 (または削除) することができます。 トピックで説明されているサンプル シナリオを実行する予定がある場合は、これらのディレクティブ内のコードを変更しないでください。 他のシナリオを試す場合は、自由にコードを変更できます。

詳細については、「Contribute to the ASP.NET documentation: Code snippets (ASP.NET に貢献する: コード スニペット)」を参照してください。

破壊的変更とセキュリティ アドバイザリ

破壊的変更とセキュリティ アドバイザリは、アナウンス リポジトリで報告されます。 ラベル フィルターを選択すると、特定のバージョンにアナウンスを限定できます。

次の手順

詳細については、次のリソースを参照してください。