"… 設計が適切であれば、低コストで機能を提供できます。 このアプローチは困難ですが、成功は継続します」 - Dennis Ritchie
最新の Web アプリケーションに対するユーザーの期待と要求は、これまでよりも高くなります。 現代の Web アプリケーションは、世界中どこからでも 24 時間 365 日いつでも利用でき、ほぼあらゆるデバイスや画面サイズから使用できることが期待されます。 Web アプリケーションは、需要の急増に対応するために、セキュリティで保護され、柔軟性が高く、スケーラブルである必要があります。 ますます複雑になっているシナリオに対して、JavaScript を使用し、Web API を介して効率的に通信する高度なユーザー エクスペリエンスをクライアント上に構築して対処する必要があります。
ASP.NET Core は、最新の Web アプリケーションとクラウドベースのホスティング シナリオに合わせて最適化されています。 モジュール式の設計なので、アプリケーションは実際に使用する機能のみに依存することができます。さらに、アプリケーションのセキュリティとパフォーマンスが向上し、ホスティングのリソース要件は軽減されます。
ASP.NET Core アプリケーションは単体テストをサポートしています。また、疎結合と依存関係の挿入のサポートにより、テスト目的でインフラストラクチャの懸案事項を偽の実装と簡単に交換することができます。 ASP.NET Core には、メモリ内でアプリケーションをホストするために使用できる TestServer も含まれています。 機能テストでは、このメモリ内サーバーへの要求を実行し、(ミドルウェア、ルーティング、モデルのバインド、フィルターなどの) アプリケーション スタック全体を実行し、応答を受信することができます。また、ごく短時間で実サーバー上でアプリケーションをホストし、ネットワーク層を介して要求を実行することができます。 API のこのようなテストは作成が簡単で価値があり、最新の Web アプリケーションではますます重要になっています。
これに対し、シングル ページ アプリケーション (SPA) の場合は、動的に生成されるサーバー側のページ読み込み (存在する場合) はほとんどありません。 多くの SPA は、アプリケーションを起動して実行するために必要な JavaScript ライブラリを読み込む静的 HTML ファイル内で初期化されます。 このようなアプリケーションはデータのニーズに合わせて Web API を多用し、より高度なユーザー エクスペリエンスを提供できます。 BlazorWebAssembly は、.NET コードを使用して SPA を構築する手段を備えています。このコードは、その後、クライアントのブラウザーで実行されます。
多くの Web アプリケーションでは、従来の Web アプリケーションの動作 (通常はコンテンツ用) と SPA (対話機能用) を組み合わせています。 ASP.NET Core は、同じアプリケーション内で同じツール セットと基礎のフレームワーク ライブラリを使用して MVC (ビューまたはページ ベース) と Web API の両方をサポートしています。
ASP.NET Core だけでなく、従来の ASP.NET 4.x も、Web アプリケーションの構築に適した堅牢で信頼性の高いプラットフォームです。 ASP.NET では MVC および Web API 開発モデルと Web Forms がサポートされており、高度なページ ベースのアプリケーション開発に適しています。また、豊富なサード パーティのコンポーネント エコシステムを備えています。 Microsoft Azure は ASP.NET 4.x アプリケーションを長年にわたってサポートしているので、多くの開発者はこのプラットフォームに精通しています。
Blazor
ASP.NET Core 3.0 以降には Blazor が含まれています。 それによって、Razor、C#、および ASP.NET Core を使用して、機能豊富な対話型 Web クライアント アプリケーションをビルドするための新しいメカニズムが提供されます。 それは、最新の Web アプリケーションを開発するときに考慮する別のソリューションです。 検討する Blazor のバージョンには、サーバー側とクライアント側の 2 つがあります。