Webプラットフォームの全体像を知る
ASP.NETの中核は「ASP.NET Web Form」
ASP.NETと言うと大抵はASP.NET Web Formを指します。Web開発は本来input/div/span/buttonなどのHTML要素でページを構成し、それらの要素にJavaScriptを使用して振る舞いを持たせて、CSSでHTML要素などのデザインを行います。それだけで済めばまだ良いのですが、Internet Explorer、Firefox、Chromeなどの各種ブラウザではHTMLの解釈が異なります。そのため、各ブラウザ専用に記載を変えるなどの煩雑な作業も発生していました。デスクトップ開発者を可能な限りWeb開発へと移行させるためにASP.NETが実現したのは、データを表示するための表や、テキストボックスやボタンなどのHTMLを隠ぺいして、開発者が直接HTML要素などを記載する事を減らした点です。これらの隠ぺいされたコントロールをサーバーコントロールと呼びます。
ASP.NETでは、このサーバーコントロールを使用して、デスクトップアプリケーションを開発する要領でコントロールを配置し、ボタンクリックなどのイベント発生時にそのイベントに対する処理を記載できるような仕組みを実現しました。「HTMLなどの各種要素を隠ぺいしたサーバーコントロールの利用」と、「デスクトップアプリケーションのようなイベント駆動のアプリケーション開発」により、ASP.NETは高い開発生産性を実現しています。
なお、サーバーコントロールはASP.NET専用のフォームである.aspxファイル上に配置します。タグは asp: で始まる独自のタグを使用し、実行時にHTMLを出力します。デザイン時に使用するサーバーコントロールのタグは以下のようになります。
実際に出力されるHTMLは以下のとおりです。
ボタンは比較的シンプルな形で出力されますが、メニューコントロールやカレンダーコントロール、データグリッドなど他のコントロールはもう少し複雑なHTMLなどを出力します。
ASP.NET AJAXはこのようなサーバーコントロールで、AJAX機能を付加させるためにJavaScriptなどを隠ぺいしたサーバーコントロールやクラスライブラリの事を言います。
ASP.NET AJAXを適切に利用する事でユーザビリティを向上させる事ができます。今ではWeb開発においてAJAXは実装が当たり前と言えるほど浸透しているテクノロジーですので、積極的な活用が望ましいでしょう。
ASP.NET 動的データは、サーバーコントロールをフル活用し、CRUDやAJAX機能を盛り込んだデータを当てはめるだけで実行できる、データ駆動アプリケーションを簡単に構築する土台を提供しています。データを用意して、コードを1行記載するだけで、簡易なマスタメンテナンスのためのアプリケーションも作成できます。
このように開発生産性が高い点がASP.NET Web Form全般の強みです。
非.NET開発者でも親しみやすい「ASP.NET MVC」
ASP.NET MVCは、ズバリ「MVCパターンでの開発経験者」がターゲットになっているフレームワークです(もちろん、Web Form開発者でも熱望していた方も少なくありません)。現在のWeb開発はPHP/JAVA/Rubyを使用したものが多く、それらは大抵MVCパターンをサポートしたフレームワークを利用しています。ASP.NET Web Form開発者もMVCパターンでの開発を行いたいという要望が少なからずあり、2009年にようやくASP.NET MVCが正式リリースされました。
他のMVCフレームワーク同様に、Model-View-Controllerに役割を明確に分離できる他、遅れてリリースされた分、他のMVCフレームワークなどで採用されている機能なども盛り込んでいます。現在はバージョンが3となり、ずいぶんこなれてきたのも特徴です。
現在、毎年バージョンアップを重ねている勢いのあるテクノロジーですので、.NET未経験者がクライアントの要望でASP.NETでアプリケーションを作成しなければならない…そういう場合にはASP.NET MVCを採用するケースが多いようです。学習コストが.NET FrameworkとC#のお作法部分がメインで済むため、新規学習コストが多いASP.NET Web Formよりもチーム全体での開発もスムーズに行くという報告なども多く出ています。
誤解のないように記載すると、マイクロソフトはASP.NET Web FormとASP.NET MVC両方に注力しています。勢いがあるのはASP.NET MVCで間違いありませんが、適材適所で使い分けるという事が重要です。