Web フォーム vs. MVC

Code Project にこんな記事があがっていました。

WebForms vs. MVC : CodeProject

一概に ASP.NET で Web アプリケーションを開発するといっても、Web フォーム ベースで進めるか、ASP.NET MVC ベースで進めるかの選択をすることになります。

ASP.NET MVC 1.0 が登場する 4 年ほど前までは ASP.NET = Web フォーム と言っても過言ではない状況でしたので、それほど悩む必要はなかったでしょう。しいて言うなら、ASP.NET AJAX を使うか否かの判断が必要だったりしたかもしれません。とは言っても ASP.NET AJAX は Web フォームベースで Ajax を実装するためのフレームワークですので、Web フォームを使うことには基本変わりはありません。

上記の記事にも書かれていますが、Web フォームはイベント駆動型のプログラミングのもとで Web アプリケーションでありながら最小限の HTML や JavaScript の知識だけで Web アプリケーションが開発できるといった大きなメリットがあります。VB 6.0 や Win フォームと同じ開発手法で開発できることから、デスクトップ (クライアント) アプリケーションを開発していたエンジニアや、そういったプロジェクトの Web アプリケーションへの移行を進めやすいフレームワークです。

現在、マイクロソフトから出る ASP.NET / Visual Studio 関連の情報に、この Web フォームの話があまりないので、”Web フォームは死んだ” と思われている部分もあるのかもしれませんが(実際に、このようなご質問も多く受けています)、死んではいませんのでご安心ください。

Web アプリケーションのトレンドなどを踏まえ、現時点での社内的な開発リソース配分が ASP.NET MVC とその周辺技術を中心に進んでいることには間違いありませんが、全く投資されていない訳ではなく、しっかりと ASP.NET のコア フレームワークの一つとして位置付けられ、将来的なロードマップの中でもその地位をしっかりと確立しています(下図 One ASP.NET ビジョン参照)。別な表現では、Web フォームは安定期 (stable) に入っているとも言えるでしょう。それだけ安心して使用できるフレームワークなのかもしれません。

image

一方で、HTML5/CSS3, JavaScript (jQuery) や、当たり前となった Ajax や Web API の利用、そして単体テストの重要性などから ASP.NET そのものの再構成の必要性が高まり、その結果、新しいフレームワークの ASP.NET MVC が登場してきました。もちろん Web フォームを改良して、現在の Web 開発のトレンドに即した柔軟な開発を行えるフレームワークにしていく方法も検討されたと思いますが、ここは、フレームワークの柔軟性、拡張性などを考慮した上で、重量級のフレームワークになってしまうことを避けて、あえて Web フォームとは別のフレームワークとして ASP.NET MVC が作られてきたのだと思います。

Web フォームと ASP.NET MVC の使い分けは、少し古いですが私の過去のセッション資料でも言及していますのでご参照いただければと思います。

マイクロソフトWeb開発の今と今後 from chack411

この中で、両フレームワークの使い分けを示したスライドを下記に抜き出しておきます。

ASP.NET Web 開発の現状と未来_akirain

ASP.NET Web 開発の現状と未来_akirain-2

One ASP.NET のひとつの狙いとしては、ASP.NET コアをベースとして、その上で動く軽量フレームワークを Web アプリケーションの特徴や開発ニーズに合わせて柔軟に組み合わせ、幅広い Web アプリケーション開発に対応できるようにすることです。単に Web アプリケーション開発といっても、今や本当に多くの技術が使われるとともに、さまざまな種類の Web アプリケーションに対応する必要があります。このような Web 開発のトレンドをしっかりと見据えて ASP.NET は進化しています。