先日、ASP.NET MVCのバージョン1が正式にリリースされた。ここでは、ASP.NET MVCの利用によって何が変わるのか、従来のASP.NETとの違いという切り口から見ていくことにする。

革新的だったASP.NETのアーキテクチャ

ASP.NETが.NET Frameworkと共にリリースされたのは2002年のことである。当時はJavaサーブレットやPHPなどの「HTTPを意識しながら、テキストエディタベースでWebアプリケーションを作っていくやり方」しか存在しなかった。

その点、ASP.NETはWebアプリケーション開発のフレームワークでありながら、デスクトップアプリケーションを開発していくときと同じ感覚で利用できた点が革新的であった。すなわち、Visual Studioの画面上でテキストボックスやボタンなどのコントロールをドラッグアンドドロップで配置し、それらのコントロールに対し、プロパティを設定したりイベントハンドラを記述したりする、という方式である。ASP.NETを利用することで、HTTPなどの下位レイヤーをそれほど意識することなく、Webアプリケーションを開発できるようになったのである。

Visual Studio .NET 2003 Professionalの画面

MVCフレームワークの進化

しかし、JSFのような例外を除けば、ASP.NETと同じ「デスクトップアプリケーション感覚でWebアプリケーションを開発できる」というような方式は、VBやC#以外のプログラミング言語ではあまり普及しなかったと言っていいだろう。というのは、このような方式はVisual Studioという優秀なIDEの力を借りて、初めて力を発揮するからである。

代わりに普及したのは、MVCアーキテクチャという、コンポーネントを「Model」「View」「Controller」という3つのグループに分割する手法であった。MVCのアーキテクチャとして、1つの完成系と言えるのはやはり「Ruby on Rails(RoR)」である。RoRは「DRY(Don't repeat yourself.)」や「COC(Convention over Configuration)」といった考え方を織り込んで実装された、非常に革新的なフレームワークである。RoR普及後に出てきたWebアプリケーションのフレームワークは、何らかの形でRoRの影響を受けていると言ってもいいくらいである。

マイクロソフトももちろん例外ではなく、RoRを大いに参考にしたと思われる仕組みが最近いくつかリリースされている。たとえば、.NET Framework 3.5 SP1で導入された「ADO.NET Dynamic Data」などは、まさしくRoRで提供されている仕組みの.NET Framework版であると言ってもいいだろう。「Scaffold(足場、土台という意味)」という単語を使っていることからも、RoRを意識していることが伺える。

つまり、ASP.NET MVCとは、「.NET FrameworkとVisual Studioを使用しながら、MVCフレームワークと同じ感覚でWebアプリケーションの開発ができるフレームワーク」であると言える。従来のASP.NETを置き換えるものではないため、他言語でMVCフレームワークを使い慣れた開発者や、MVCフレームワークの方が適しているタイプのWebアプリケーションの場合はASP.NET MVCを使用すればよいし、そうでない場合は従来のASP.NETを使い続けることもできる。

また、「他言語で普及しているMVCフレームワークと同じ」とは言っても、.NET Framework自体も、ADO.NETやWebサービス連携など、生産性の高い独自機能を数多く持っている。ASP.NET MVCを使用することで、.NET Frameworkの恩恵を受けながら、MVCフレームワークで開発が行えるようになるはずだ。