ASP.NETとは?Web FormsとMVCの違いは?

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>