ASP.NETとそのWeb FormsとMVCという異なるASP.NETのフレームワーク違いについてまとめました。
ASP.NETとは、マイクロソフトが開発・提供しているWebアプリケーションフレームワークで、動的なWebアプリケーションの開発・実行基盤のことを指します。
ASP.NETは、インターネットインフォメーションサービス(IIS)によりホスティングされ実行され、ASP.NET登場以前のASPやPHP等と同様にサーバー側で動的にHTMLを生成します。
ASP.NETは、個人規模のWebサイトから大規模Webアプリケーションまで様々な形態のWeb開発に対応しているフレームワークです。
当初のASP.NETは、Windowsフォームの感覚でイベントドリブン駆動なWeb開発が可能なWeb Formsというフレームワークしかなかったのですが、後々にMVCという別のフレームワークが登場してきました。
ここで、ASP.NETでWeb開発をする場合に両者をどう使い分ければいいかASP.NETに無知な初心者は困ってしまうわけで、ASP.NETのプロフェショナルである諸先輩の情報を参考にASP.NET初心者の私が理解できる言葉でまとめてみました。
まず、結論からですが両者の使い分けのポイントは下記の通り。
・Web FormsとMVCは(ほぼ)同等の機能を有しており対等な選択肢
・ASP.NETのセッション、キャッシュ、データアクセス等のASP.NETの基盤技術は一緒
・相互のメリット/デメリットを補完しあうフレームワークであり置き換えできるものではない
・生産性、パフォーマンス、デザイン等の要素を天秤にかけ使い分ければ良い
・Windowsフォーム開発経験者は、Web Formsの方が馴染みやすい。
・非.NET系のWeb開発経験者は、MVCの方が馴染みやすい。
・Web Formsは作業を進めながら学習が可能なのでASP.NET入門には向いている。
・将来性や最新のWebのトレンドや技術への順応性はMVCの方が優れる
また、Web FormsとMVCの違いを簡単に表にまとめてみました。
比較項目 | Web Forms | MVC |
アプリの特徴 | 技術として安定かつ成熟している。 豊富なWebサーバーコントロールを活用した容易なDrag & Drop配置によるUI開発が可能。 機能や納期を重視したアプリ向き。 |
Jquery、Web API等のWeb技術を活用したWeb標準志向でHTMLベースでUIを開発する。 パフォーマンスやデザインを重視したアプリ向き。 また、テスト駆動開発向き。 |
用途 | イントラネットサイト 業務アプリ |
インターネットサイト インターネット向けアプリ |
開発スタイル | イベント駆動型プログラミング | MVC(Model-View-Controller)デザインパターン |
入門し易い開発者 | Windowsフォーム開発者 | 非.NET系Web開発者 |
要求される技術スキル | Windowsフォーム C# / VB.NET |
Web技術全般(HTML, JavaScript, Ajax etc…) C# / VB.NET |
テスト | 自動/単体(ユニット)テストが困難。 テスト用Webサーバー必須 |
自動/単体(ユニット)テストが可能。 テスト用Webサーバー不要 |
SEO(Search Engine Optimization)対策 | × | ○ |
適した移行元 | VB 6.0/Windows フォーム | HTMLページ、Class ASP |
※本内容をまとめるにあたり以下を参考にさせて頂きました。
第0回 Webアプリケーション・フレームワークの新たな選択肢
http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/aspnetmvc3_01/aspnetmvc3_01_01.html
Web フォームと ASP.NET MVC を比較する
http://msdn.microsoft.com/ja-jp/magazine/dd942833.aspx
Web フォーム vs. MVC
http://blogs.msdn.com/b/chack/archive/2013/01/16/aspnet-webforms-mvc.aspx