Asp.net-mvc-overview
ASP.NET MVC-概要
ASP.NET MVCは基本的にMicrosoftのWeb開発フレームワークであり、MVC(Model-View-Controller)アーキテクチャの機能、アジャイル開発の最新のアイデアとテクニック、および既存のASPの最良の部分を組み合わせたものです。 .NETプラットフォーム。
ASP.NET MVCは、ゼロから構築されたものではありません。 従来のASP.NET Webフォームの完全な代替手段です。 ASP.NETの上に構築されているため、開発者はMVCアプリケーションの構築中にほぼすべてのASP.NET機能を利用できます。
歴史
ASP.NET 1.0は、.Net Frameworkバージョン1.0の一部として2002年1月5日にリリースされました。 当時は、ASP.NETとWebフォームをまったく同じものと考えるのは簡単でした。 ただし、ASP.NETは常に2層の抽象化をサポートしています-
- System.Web.UI -サーバーコントロール、ViewStateなどで構成されるWebフォームレイヤー。
- System.Web -モジュール、ハンドラー、HTTPスタックなどを含む基本的なWebスタックを提供します。
2007年にASP.NET MVCが発表されたとき、MVCパターンはWebフレームワークを構築する最も一般的な方法の1つになりつつありました。
2009年4月、ASP.NET MVCソースコードがMicrosoft Public License(MS-PL)の下でリリースされました。 「ASP.NET MVCフレームワークは、既存のASP.NET機能と統合された、軽量でテスト可能なプレゼンテーションフレームワークです。
これらの統合機能の一部は、マスターページとメンバーシップベースの認証です。 MVCフレームワークはSystem.Web.Mvcアセンブリで定義されています。
2012年3月、Microsoftはオープンソースライセンス(Apache License 2.0)の下でWebスタックの一部(ASP.NET MVC、Razor、およびWeb APIを含む)をリリースしました。 ASP.NET Web Formsは、このイニシアチブには含まれていません。
なぜASP.NET MVCなのか?
Microsoftは、Webアプリケーションを構築するための独自のMVCフレームワークを作成することを決定しました。 MVCフレームワークは、単にASP.NETの上に構築されます。 ASP.NET MVCを使用してWebアプリケーションを構築している場合、状態の錯覚はありません。ページの読み込みやページのライフサイクルなどはありません。
ASP.NET MVCのもう1つの設計目標は、フレームワークのすべての面で拡張可能であることでした。 したがって、ビューについて話すとき、ビューは特定のタイプのビューエンジンによってレンダリングされる必要があります。 デフォルトのビューエンジンはまだASPXファイルを取得できるものです。 ただし、ASPXファイルの使用が気に入らない場合は、他のものを使用して独自のビューエンジンをプラグインできます。
MVCフレームワーク内には、コントローラーをインスタンス化するコンポーネントがあります。 MVCフレームワークがコントローラーをインスタンス化する方法が気に入らない場合は、自分でそのジョブを処理することができます。 そのため、MVCには、タスクを処理するための独自のカスタムロジックを挿入できる場所がたくさんあります。
モデルビューコントローラーのデザインパターンを使用する背後にある全体的な考え方は、懸念事項の分離を維持することです。 コントローラは、ASP.NETランタイムまたはASPXページとの多くの結び付きにもはや邪魔されず、テストは非常に困難です。 ユニットテストで呼び出すことができ、そのコントローラーが正しく動作するかどうかを調べることができる通常のメソッドを持つクラスができました。
ASP.NET MVCの利点
ASP.NET MVCを使用する利点は次のとおりです-
- アプリケーションをモデル、ビュー、コントローラーに分割することにより、複雑さを管理しやすくします。
- レンダリングされたHTMLを完全に制御し、問題を明確に分離します。
- HTMLを直接制御すると、進化するWeb標準への準拠を実装するためのアクセシビリティが向上します。
- 既存のアプリに対話性と応答性を追加しやすくします。
- テスト駆動開発(TDD)のサポートを改善します。
- 大規模な開発者チームによってサポートされているWebアプリケーションや、アプリケーションの動作を高度に制御する必要があるWebデザイナーに適しています。