BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Web Frameworks、MVCおよびASP.NET

Web Frameworks、MVCおよびASP.NET

コミュニティのテクノロジープレビューとして約1年が経過し、Microsoftは初のASP.NET MVCフレームワークのベータ版をリリースした。ASP.NET MVCは、過去にテクノロジーが推進したWebFormsからの急進的な離脱であり、主流なWebプログラミングへの回帰であるというのが多くの一致した意見である。MVCパターンは、Ruby on RailsやJavaのSpring FrameworkのようなWebフレームワークに基礎を提供する。

MVC Webフレームワークは、 Trygve Reenskaugで提案されるModel-View-Controllerパターンと混同されてはならない。Reenskaugのパターンでは、ビュー およびコントローラは、各ビューおよびコントローラ間において1対1のマッピングで密接に結びついている。MVC Webフレームワークでは、ビューおよびコントローラは疎結合であり、複数のビューが1つのコントローラに結合することは、まったくないわけではない。

どのMVC定義を選ぼうとも、モデルは使用している定義の情報から独立したデータ表現を維持する。これは、データがviewstateの形式でUIエレメントに格納されることが一般的であるWebFormsとは対照的である。

すべてのHTML出力を直接制御することで取得した柔軟性や正確さと引き換えに、MicrosoftのMVCフレームワークは、フォームの迅速な開発時間 および制御を提供している。考え方のこの変化は、.NETプログラミングでの経験を持つものよりも、昔ながらのASPプログラマやマイクロソフト以外の言 語に精通しているものにとっては、おそらくずっと簡単な変化と言える。

これ(初のASP.NET Beta(リンク))に含まれる新機能は、デベロッパをこの新たな考え方へ導こうとしている。たとえば、ビューがバインドされるモデルでプロンプトが出されるときに 関連したコントローラクラスを右クリックする、またはCtrl-M Ctrl-Vを押すことで、デベロッパは新たなビューを作成することができる。

WebFormsからのもう1つの離脱は、JavaScriptの重視である。WebFormsは、コントロールでJavaScriptを折り返すこと、またはサーバでデータを処理することでデベロッパにJavaScriptを 非表示にしようとした一方で、ASP.NET MVCはそれを受け入れている。デフォルトで、MVC WebサイトはASP.NET AJAXおよび jQuery(リンク)ですでに定義済みの「Scripts」フォルダを所得する。ASP.NET AJAXに対し、完全なインテリセンスが提供されているが、jQueryには一部のサポートがあるのみである。しかし、これは一時的なものであり、完全な jQueryのサポートに必要なアノテーションは、数週間で完成する。

つねにMicrosoftは、データバインディングに強い関心を持ってきた。ASP.NET MVCも例外ではない。Microsoftの「Model Binders」は、デベロッパが迅速にHTTP POSTデータをオブジェクトプロパティへマップできるようにする。それからこれらのオブジェクトは、コントローラクラスのアクションメソッドへ送られ る。このリリースでは、common .NETクラス向けのデフォルトバインダーが追加された。けれども、たいていの状況においてデベロッパは独自のものを作成していることを忘れてはいけな い。

Webサイトの自動化テストは、Microsoftが唯一受け入れているもう1つの主流概念である。テストが口先だけの同意になっている多くのフレーム ワークとは異なり、Microsoftは最初からそれに向けた計画をしてきた。もはやテストコントローラやモデルにMockは不要になり、そのことはテス ト可能なロジックを含むにつれて重要になる。ビューのテストは未だに外部的に実行される必要がある。ビューのテストには、それぞれサポートされているブラ ウザに対して個別にHTMLを確認することが含まれるからである。

ASP.NETの別の側面は、HTTP verbを重視することへの回帰である。昔ながらのASPのような古いテクノロジーが重要でありながらの、WebFormsデ ベロッパはそれらが存在していることをもう少しで忘れてしまいそうになっている。postbackがPOSTの原因となり、 Response.RedirectがGETを引き起こすことを知っていることを除いては、彼らでは何もできない。ASP.NET MVCでは、HTTP verbは非常に重要であり、APIがそのことを反映している。ある動作を特定のverbに限定するといった一般的なタスクは、単にAcceptVerbs属性でコントローラメソッドを修飾することで実行できる。

Microsoft独自のメソッドの置換を、デベロッパによって記述されたものに促進するため、HTMLヘルパーメソッドが拡張メソッドになった。これにより、単にusing/importsステートメントを変更するだけで、一部または全体の置換が可能になる。

根っからのWebFormsファンに対し最後に言いたいのは、MicrosoftはWebFormsファンを見捨てていないということである。Scott Guthrie氏は、以下のように書いている。

MVCモデルが好きでなかったり、開発のスタイルが自然だとは思えない場合、 それを使用する必要はないことを指摘する。完全な選択肢であり、既存のWebFormsモデルに代わるものではない。WebFormsおよびMVCのどちらも、完全サポートされ、前進に向けた拡張がなされる( .NET 4.0のASP.NET WebFormsはより豊富なURLルーティング機能、HTML cssマークアップサポート、ClientIdプロパティに対する完全な制御、より多くのAJAX機能など。間もなくブログ上で紹介するつもりである)。そこで、MVCオプションが気に入らないのであれば、心配などせず、それを使わなければいけないと感じる必要などない。

 

原文はこちらです:http://www.infoq.com/news/2008/10/MVC-Beta

この記事に星をつける

おすすめ度
スタイル

BT