これはASP.NET Coreでしょうか?MicrosoftのわかりにくいWebフレームワークの今後はどうなるのでしょうか…

Table of Contents

これはASP.NET Coreでしょうか?MicrosoftのわかりにくいWebフレームワークの今後はどうなるのでしょうか…

Microsoft の ASP.NET Core は、Web アプリケーション フレームワーク (より正確にはフレームワーク ファミリ) であり、パフォーマンスとイノベーションの面で大きな進歩を遂げていますが、その急速な発展により、開発者はさまざまな選択肢に戸惑うことになります。

オリジナルのASP.NETは、Microsoftのスコット・ガスリー氏とマーク・アンダーソン氏によって共同開発されたもので、2002年に.NETと同時にリリースされました。COMベースのActive Server Pagesの代替として開発されました。ASP.NET 1.0の最大の長所と短所は、フォームベースのプログラミングモデルでした。このモデルは状態管理を(ある程度)自動的に処理するため、デスクトップ開発者にとって移行が容易になりましたが、単体テスト、レスポンシブなユーザーインターフェイス、最新のJavaScriptライブラリとの互換性といった面で欠点もありました。現在ではWebフォームと呼ばれるこのアプローチは今でも人気がありますが、Windows専用の.NET Frameworkに限定されています。

2009年初頭、Microsoftはモデル・ビュー・コントローラ(MVC)パターンに基づく新しいフレームワーク、ASP.NET MVCをリリースしました。MVCはWebフォームに比べて多くの利点があり、パフォーマンスの向上、JavaScriptとの容易な統合、ユニットテストの容易さ、そしてより簡潔なプログラミングモデルなどを備えています。.NETコミュニティでは広く採用されましたが、成熟したWebフォームのアプローチを堅持する開発者もいました。さらに複雑な点として、MVCルーティングをWebフォームページで使用することで、MVCとWebフォームを組み合わせることが可能です。

ASP.NET MVCの進化に伴い、MicrosoftはViewページ用のRazor構文を開発しました。Razorを使用すると、C#コードとHTMLマークアップを最小限の手間で組み合わせることができます。Razorは当初ASP.NET MVCで使用されていましたが、すぐに独自の存在となり、MVCパターンを使用せずにRazorページを使用するプロジェクトもサポートするようになりました。

その後、2016年に初めて完全リリースされた.NET CoreとASP.NET Coreが登場しました。これらはMicrosoftの公式クロスプラットフォームかつオープンソースの.NET実装です。同社はASP.NET Core MVCを実装しましたが、Webフォームは実装していませんでした。

あなたと一緒にBlazorへ

2018年、Blazorと呼ばれる新しいアプローチが競争に加わりました。Blazorは、MicrosoftのXamarin(モバイルおよびMac向け.NET)チームによって誕生しました。彼らはMono .NETランタイムをWebAssemblyにコンパイルする作業に取り組んでいました。Blazorという名前は、BrowserとRazorを組み合わせたものです。当初のアイデアは、C#で記述され、ブラウザで実行されるシングルページアプリケーション(SPA)用のフレームワークを作ることでした。開発者は、C#、JavaScript、そしておそらくTypeScriptを混在させるのではなく、どこでもC#を記述できるようになりました。ASP.NET開発の主要ツールであるVisual Studioは、JavaScriptよりもC#に適したエディタです。

Blazorは2019年9月に.NET Core 3.0の一部としてリリースされましたが、その時点では若干の形状変更が行われていました。最初のリリースはBlazorサーバーサイドアプリケーション向けであり、WebAssemblyは一切使用されていません。代わりに、Razorコンポーネントはサーバー上で実行され、Microsoftのリアルタイム通信フレームワークであるSignalRを介してブラウザのユーザーインターフェースを更新します。

Blazor WebAssemblyはプレビュー段階です。開発者がBlazor ServerとBlazor WebAssemblyのどちらで記述するコードもほぼ同じですが、結果は大きく異なります。ドキュメントに記載されているように、Blazor Serverでは「通常、レイテンシが高くなります。すべてのユーザーインタラクションにネットワークホップが伴います」。Blazor Serverにはダウンロードサイズが小さく、WebAssemblyのサポートが不要という利点もありますが、ほとんどのシナリオではWebAssemblyの方が魅力的です。

また、ASP.NET MVC から適応したモデルとコントローラーを使用して REST API を構築するためのフレームワークである ASP.NET Web API もあり、これはモバイル アプリケーションや Web アプリケーションにデータを提供するのに適しています。

マイクロソフトがASP.NET Coreの選択肢をいくつか紹介

マイクロソフトがASP.NET Coreの選択肢をいくつか紹介

ASP.NET Core の優れた点は、クロスプラットフォームであること、コンテナのデプロイに適していること、そしてテストが容易であることです。もう一つの重要な機能は依存性の注入です。依存性の注入では、クラスは依存するサービスオブジェクトのインスタンスを直接作成するのではなく、通常はコンストラクターでインスタンスを渡すことになります。これにより疎結合が実現されます。これは優れた原則ですが、初心者にとっては混乱を招く可能性があります。ASP.NET Core のツールは柔軟性が高く、Visual Studio 以外での開発が困難だった時代とは大きく異なります。現在では、Mac 版 Visual Studio、クロスプラットフォームの Visual Studio Code、あるいは任意のテキストエディターも使用できます。

MicrosoftのWebプラットフォームはデスクトッププラットフォームほど複雑ではありませんが、開発者にとって選択肢が多すぎて混乱を招きます。その一つであるASP.NET MVCは、完全に廃止されたわけではありませんが、その方向に向かっています。Microsoftのドキュメントには、「新規開発には、コントローラーとビューを備えたMVCよりもRazor Pagesを推奨します」と記載されています。

実際、ドキュメント作成者はあらゆる組み合わせに対応しきれていません。上記のASP.NET MVCによるデータアクセスのチュートリアルページには、「このチュートリアルにはRazor Pagesバージョンがあります。それぞれのチュートリアルでは、他のチュートリアルではカバーされていない内容が扱われています」と記載されています。

Discover More