ASP.NET Core 2.0 の新機能
この記事では、ASP.NET Core 2.0 の最も大きな変更点について説明します。また、その変更点のドキュメントへのリンクも示します。
Razor Pages
Razor Pages は、ページ コーディングに重点を置いたシナリオをより簡略化し、生産性を高める ASP.NET Core MVC の新機能です。
詳細については、概要とチュートリアルを参照してください。
ASP.NET Core メタパッケージ
新しい ASP.NET Core メタパッケージには、ASP.NET Core および Entity Framework Core チームでサポートされているすべてのパッケージが、内部およびサードパーティの依存関係と共に含まれています。 これにより、パッケージの ASP.NET Core の個別機能を選択する必要がなくなりました。 すべての機能は、Microsoft.AspNetCore.All パッケージに含まれています。 このパッケージは、既定のテンプレートで使用されています。
詳細については、「Microsoft.AspNetCore.All metapackage for ASP.NET Core 2.0」 (ASP.NET Core 2.0 用の Microsoft.AspNetCore.All メタパッケージ) を参照してください。
ランタイム ストア
Microsoft.AspNetCore.All
メタパッケージを使用するアプリケーションでは、新しい .NET Core ランタイム ストアが自動的に利用されます。 このストアには、ASP.NET Core 2.0 アプリケーションの実行に必要なすべてのランタイム アセットが含まれています。 Microsoft.AspNetCore.All
メタパッケージを使用する場合、参照される ASP.NET Core NuGet パッケージの資産は、既にターゲット システム上にあるため、アプリケーションと共に配置されません。 ランタイム ストア内の資産は、アプリケーションの起動時間を向上させるためにプリコンパイルもされています。
詳細については、「Runtime Store」 (ランタイム ストア) を参照してください。
.NET Standard 2.0
ASP.NET Core 2.0 パッケージは、.NET Standard 2.0 を対象としています。 このパッケージは、その他の .NET Standard 2.0 ライブラリから参照でき、.NET Core 2.0 と.NET Framework 4.6.1 を含む、.NET Standard 2.0 に準拠した実装で実行できます。
Microsoft.AspNetCore.All
メタパッケージは、.NET Core 2.0 ランタイム ストアで使用することを意図しており、.NET Core 2.0 のみを対象としています。
構成の更新
ASP.NET Core 2.0 では、既定で IConfiguration
インスタンスがサービス コンテナーに追加されています。 サービス コンテナーの IConfiguration
では、アプリケーションがコンテナーから構成値を取得するのを容易にします。
計画されているドキュメントの状態については、「GitHub issue」 (GitHub の問題) を参照してください。
ログ記録の更新
ASP.NET Core 2.0 には、既定で依存性の注入 (DI) システムにログ記録が組み込まれています。 Startup.cs
ファイルではなく Program.cs
ファイルにプロバイダーを追加し、フィルター処理を構成します。 また、既定の ILoggerFactory
では、プロバイダーをまたがるフィルター処理と特定のプロバイダーのフィルター処理の両方で、ある柔軟なアプローチを使用するフィルター処理をサポートしています。
詳細については、「Introduction to Logging」 (ログ記録の概要) を参照してください。
認証の更新
新しい認証モデルにより、DI を使用するアプリケーションでの認証の構成が容易になりました。
新しいテンプレートを使うと、Azure AD B2C を使って Web アプリと Web API に対する認証を構成できます。
計画されているドキュメントの状態については、「GitHub issue」 (GitHub の問題) を参照してください。
Identity の更新
ASP.NET Core 2.0 で Identity を使用し、簡単にセキュリティで保護された Web API をビルドできるようになりました。 Microsoft 認証ライブラリ (MSAL) を使用して Web API にアクセスするアクセス トークンを取得することができます。
2\.0 での認証の変更の詳細については、次のリソースを参照してください。
- ASP.NET Core でのアカウントの確認とパスワードの回復
- ASP.NET Core の認証アプリでの QR コードの生成の有効化
- ASP.NET Core 2.0 への認証と Identity の移行
SPA テンプレート
Angular、Aurelia、Knockout.js、React.js、Redux 用 React.js で、シングル ページ アプリケーション (SPA) プロジェクト テンプレートが利用できるようになりました。 Angular テンプレートは、Angular 4 に更新されました。 Angular と React テンプレートは既定で使用可能です。その他のテンプレートの入手方法については、新しい SPA プロジェクトを作成する方法に関するページを参照してください。 ASP.NET Coreで SPA を構築する方法の詳細については、「この記事で説明されている機能は、ASP.NET Core 3.0 の時点で廃止されています」を参照してください。
Kestrel の強化機能
Kestrel Web サーバーを、インターネット接続用サーバーとして使用するのにより適切にする新機能が追加されました。 KestrelServerOptions
クラスの新しい Limits
プロパティに、多数のサーバー制約構成が追加されました。 次に制限を追加できるようになりました。
- クライアントの最大接続数
- 要求本文の最大サイズ
- 要求本文の最小レート
詳細については、ASP.NET Core への Kestrel Web サーバーの実装に関するページを参照してください。
WebListener から HTTP.sys への名称変更
パッケージ、Microsoft.AspNetCore.Server.WebListener
と Microsoft.Net.Http.Server
が新しい Microsoft.AspNetCore.Server.HttpSys
パッケージにマージされました。 一致するように名前空間が更新されました。
詳細については、「HTTP.sys web server implementation in ASP.NET Core」 (ASP.NET Core への HTTP.sys Web サーバーの実装) を参照してください。
HTTP ヘッダーのサポートの強化
MVC を使用して FileStreamResult
または FileContentResult
を送信する場合、送信するコンテンツに ETag
または LastModified
日付を設定するオプションが追加されました。 次のようなコードで、返されるコンテンツにこれらの値を設定できます。
var data = Encoding.UTF8.GetBytes("This is a sample text from a binary array");
var entityTag = new EntityTagHeaderValue("\"MyCalculatedEtagValue\"");
return File(data, "text/plain", "downloadName.txt", lastModified: DateTime.UtcNow.AddSeconds(-5), entityTag: entityTag);
ユーザーに返されるファイルには、ETag
と LastModified
値に適切な HTTP ヘッダーが含まれます。
アプリケーションのユーザーが範囲要求ヘッダーを使用してコンテンツを要求する場合、ASP.NET Core は要求を認識して、そのヘッダーを処理します。 要求されたコンテンツを部分的に配信できる場合、ASP.NET Core は要求されたバイトのセットだけを適切に省略して返します。 この機能を適用または処理するために、メソッドに特別なハンドラーを記述する必要はありません。自動的に処理されます。
スタートアップのホストと Application Insights
ホスティング環境で、アプリケーションが明示的に依存関係を取得したり、任意のメソッドを呼び出したりせずに、余分なパッケージの依存関係を挿入して、アプリケーションの起動時にコードを実行することができるようになりました。 この機能は、特定の環境でその環境に固有の機能を、アプリケーションが事前に認識する必要なく、明らかにできるようにするために使用できます。
ASP.NET Core 2.0 では、Visual Studio でのデバッグ時および Azure App Services での実行時 (有効化後に) に、Application Insights での診断を自動的に有効にするために、この機能が使用されています。 その結果、プロジェクト テンプレートでは Application Insights のパッケージとコードが既定で追加されなくなりました。
計画されているドキュメントの状態については、「GitHub issue」 (GitHub の問題) を参照してください。
偽造防止トークンの自動使用
ASP.NET Core では、常にコンテンツの HTML エンコードを既定で支援してきましたが、新しいバージョンでは、クロスサイト リクエスト フォージェリ (XSRF) 攻撃を防ぐための手段もさらに講じられています。 ASP.NET Core では、既定で偽造防止トークンが生成されるようになり、追加の構成をしなくても、フォーム POST アクションとページでそれらが検証されるようになりました。
詳細については、「ASP.NET Core でのクロスサイト リクエスト フォージェリ (XSRF/CSRF) 攻撃の防止」を参照してください。
自動でのプリコンパイル
Razor ビューのプリコンパイルは発行時に既定で有効になっています。これにより、発行の出力サイズが縮小され、アプリケーションの起動時間が削減されます。
詳細については、ASP.NET Core での Razor ビューのコンパイルとプリコンパイルに関するページを参照してください。
C# 7.1 での Razor サポート
Razor ビュー エンジンが更新され、新しい Roslyn コンパイラで使用できるようになりました。 これには、既定の式、推定タプル名、およびジェネリック パターン マッチングのような C# 7.1 の機能のサポートが含まれています。 プロジェクトで C# 7.1 を使用する場合、プロジェクト ファイルに次のプロパティを追加し、ソリューションを再読み込みします。
<LangVersion>latest</LangVersion>
C# 7.1 機能の状態については、「Roslyn GitHub repository」 (Roslyn GitHub リポジトリ) を参照してください。
2\.0 のその他のドキュメントの更新
- ASP.NET Core アプリ開発のための Visual Studio によるプロファイルの発行
- キーの管理
- Facebook 認証の構成
- Twitter 認証の構成
- Googler 認証の構成
- Microsoft アカウント認証の構成
移行ガイダンス
ASP.NET Core 1.x アプリケーションを ASP.NET Core 2.0 に移行する方法の手順については、次のリソースを参照してください。
追加情報
変更の全一覧については、「ASP.NET Core 2.0 Release Notes」 (ASP.NET Core 2.0 のリリース ノート) を参照してください。
ASP.NET Core 開発チームの進捗状況や計画とつながるには、週次の ASP.NET Community Standup にアクセスしてください。
ASP.NET Core