昨年の12月に新しいASP.NET MVCフレームワークの最初のプレビュー版をASP.NET 3.5 Extensions CTP リリースの一部として、リリースしました。また、ASP.NET MVC フレームワークがどのようなものなのか、それをどのように使用することができるのかについていくつかブログに書かせて頂きました。:
それ以来フレームワークについて多くのフィードバックを頂き、また非常に多くのダウンロードを行っていただき、ご期待を頂いている状況です。そこでよくお寄せいただいているご質問の1つが、"新しいビルドのリリースはいつなのか、またその中には何が含まれているのか?"というものです。
以下に、ASP.NET MVC機能チームが現在まで取りかかっているもの、そして間もなくご利用いただける新しい機能のいくつかについて更新情報をご提供させて頂きます。これとは別に新しいASP.NET Dynamic Dataについて、そしてそれに伴い上手く進行続けるASP.NET AJAX機能についてカバーしたブログ投稿を行いたいと思っています。
これらの機能(ASP.NET MVC、ASP.NET Dynamic Data、新しいASP.NET AJAX の改善)を全て今年の後半に出荷する予定で、それらはVS 2008 および.NET 3.5と動作いたします。
来たるASP.NET MVC MIX プレビューリリース
数週間後のMIX 08 カンファレンスでASP.NET MVCの次の公開プレビューをリリースする予定です。このビルドはWebから誰でもダウンロードすることができます(これを獲得するのにMIXに参加する必要はありません。)。このリリースに早くにご利用いただいた方のフィードバックが盛り込まれています。以下はこの次のプレビューリリースで組み込まれているいくつかの改善点です。:
1) ASP.NET MVC フレームワークはアプリの\binディレクトリで展開され部分信頼で動作します。
最初のASP.NET MVC プレビューリリースでは、System.Web.Mvc.dllアセンブリをGAC(グローバルアセンブリーキャッシュ)に登録するためにはセットアッププログラムが必要でした。
今回のプレビューリリースから、直接アプリの\binディレクトリからSystem.Web.Mvc.dllアセンブリを参照できるようになります。つまりASP.NET MVC フレームワークを使用するのにサーバ上でセットアッププログラムを起動させる必要がありません。単純にアプリケーションをリモートのASP.NETサーバ上にコピーしてそれを起動させるだけです(レジストレーションや余計なコンフィグレーションステップが必要ありません。)。
"partial/medium trust(部分信頼)"のホスティングシナリオで ASP.NET MVC フレームワークを起動できるようにしました。これにより、低価格の共有ホスティングアカウントでご利用頂け、それを有効させるためにホスティングプロバイダーに何かしてもらう必要もありません(アプリケーションをFTPでアップすれば起動し、他には何も必要ありません。)。
2) 大きく向上したルーティング機能とインフラストラクチャ
ASP.NET MVCフレームワークの非常に強力な機能の1つがURLルーティングエンジンです。ここでこれらの機能をいくつかカバーしています。)
今回のASP.NET MVC プレビューリリースにはこれ以上のURLルーティング機能と改善点が含まれています。現在、名前付きルート(ルートルールの参照が明示的に可能)および柔軟性のあるルーティングワイルドカードルール(カスタムのCMSベースのURLが可能)の使用と、カスタムルートルール(RESTリソースマッピングなどのシナリオが可能)の派生および宣言が可能になっています。
また今回のプレビューで残りのMVCフレームワークからURLルーティングインフラストラクチャの要因を取り出したため、他のASP.NETでMVC機能のないもの(ASP.NET Dynamic DataやASP.NET Webフォームを含む)に対してもご利用いただくことが可能になりました。
3) 改善されたVS 2008 ツールのサポート
最初の ASP.NET MVCプレビューでは最小限のVS 2008サポートしか行われていませんでした(基本的にはプロジェクトテンプレートのサポートだけです。)。
今回のASP.NET MVC プレビューリリースは、改善されたVS 2008統合が行われた形で出荷されます。これには、より良いプロジェクト項目テンプレート、自動プロジェクトのデフォルト設定などが含まれています。またファイル->新しいプロジェクトのダイアログからASP.NET MVC プロジェクトを新規作成する時に自動的に"テストフレームワーク"ウィザードが起動するビルドインを追加しています。これにより、簡単に名前をつけ、ASP.NET MVC アプリケーションに対して単体テストプロジェクトを紐づけることができるようになります。
ASP.NET MVC テストフレームワーク ウィザードはプラガブルですので、カスタムの単体テストプロジェクトをサポートされているテストオプション一覧に追加することができます。
:
これにより、開発者は簡単に使用したい単体テストフレームワーク(と関連したモッキングと依存性注入オプション)を選択できるようになります。
4) [ControllerAction] 属性はコントローラのアクションメソッド上に必要無くなりました。
最初のASP.NET MVC プレビューリリースではコントローラクラス上で呼び出すために明示的に [ControllerAction] 属性が付けられたアクションメソッドが必要でした。:
初期ご利用者からのフィードバックに基づき、今回のASP.NET MVC リリースではこの要求を削除しました。その代り、デフォルトで、コントローラ上のすべての公開メソッドは現在アクションメソッドとして考慮されるようになっています。:
注:もしコントローラ上でpublicなアクションメソッドではないものを追加したいまたは追加する必要がある場合、アクションとして呼び出し可能なものから公開メソッドをブロックするための属性をオプションとして追加することができます。
5) コントローラおよびアクションメソッドに対する新しいフィルター属性サポート
この次のASP.NET MVC リリースで可能な新しい拡張機能の1つが"フィルタ属性"と呼ばれる機能です。これらによりMVCコントローラのリクエストにコード傍受を挿入することができ、それはコントローラまたはそのアクションメソッドが実行される前後に実行することができます。この機能でクリーンな宣言的方法で機能をパッケージングおよび再利用できるようにするカプセル化のいいシナリオが可能になります。
例えば、一度に30秒間製品一覧のページを出力キャッシュするために[OutputCache] フィルタ属性を使用することができます。
:
または [Authorization] フィルタ属性を使用して、特定のセキュリティ権限を持つ人たちのみ製品を編集できるようにすることができます。:
フィルタのメカニズムは拡張性があるので、それを使用したコントローラやアクションメソッドに対してカスタムのフィルタ属性を簡単に作成することができます。フィルタ(とフィルタを使用するコントローラおよびアクション)は完全に単体テストに対応しています。
6) HTML ヘルパーのビルドイン
最初のASP.NET MVC プレビューは中心のアセンブリにHTML UIヘルパーメソッドが数個組み込まれているだけでした。そのため、オプションで使用可能な数多くの追加HTMLヘルパーメソッドをダウンロード頂けるように追加で出荷を行いました。
今回のASP.NET MVC プレビューではそれらのHTMLヘルパーメソッドが組み込まれています(別にダウンロードが必要ありません)。来月、現在作成しているクライアントサイドのASP.NET AJAXライブラリに加わった新しい改善点と、ASP.NET MVC に簡単に統合できるように今後ビルドする予定のAJAXヘルパーメソッドのいくつかについてお話をしていきたいと思っています。
7) 多くのリファクタリングと設計の改善点
今回のASP.NET MVC プレビューにはMVCフレームワークの拡張性とテスト性をより向上させるリファクタリングと設計の改善点がいくつか含まれています。
:
- "そのまま" すぐに利用できるビルドインの機能・改善点を使用
-
コードをあまり書かずにビルドインの機能・改善点を微妙にカスタマイズ
-
カスタマイズされたものに対するビルドインの機能・改善点をを完全に入れ替え
例えば、ViewEngineロケータロジックをViewEngine実行ロジック(またその逆も)をオーバーライドせず(もしくは完全にViewEngineを入れ替えず)にオーバーライドすることができます。コントローラのファクトリーサポートは拡張されて、依存性注入フレームワークにより簡単に統合できるようになりました。ルートルールは現在完全に拡張可能です。コントローラはより簡単にテスト可能になったりしています。
8) ビルドおよびパッチすることができるダウンロード可能なASP.NET MVC フレームワーク
先月告知させて頂きましたが、.NET Framework ソースコードが現在ダウンロードできデバッグすることができます。最終的にASP.NET MVC フレームワークも出荷されればこのメカニズムでご利用頂ける様になります(残りのASP.NETソースコード同じように)。
この次のプレビューから、ビルド可能なVSプロジェクトソリューションとしてASP.NET MVC フレームワークのソースコードをダウンロード可能にする予定です。これにより簡単にASP.NET MVC フレームワークのソースコードを見て、そしてデバッグすることができるようになります。さらに、ASP.NET MVC フレームワークを使用して開発を行っているアプリケーションでバグを発見された際にソースコードへのパッチを許可するライセンスを含める予定です。
このライセンスはASP.NET MVC にパッチを当てたバージョンを再配布許可いたしません(互換性のない複数のASP.NET MVC バージョンがあちこちに散らばり、ぶつかり合うことを防ぎたいと思っています。)。しかし、これにより、ASP.NET MVC アプリケーションをすぐに構築し、進行させたいとお考え頂いている開発者の方々が、バグによって進行がさえぎられることを不安に思わなくてもよくなると思います。
まとめ
次のASP.NET MVC プレビュー(多くのヘルパープロパティ・メソッド・オブジェクトを含む)で現れる変更が非常に多くあります。上記にて、間もなく公開される大きな改善点に対していくらかの考察を提供させて頂けていれば幸いです。
MIX辺りで、ダウンロードができるようになりましたらプレビューの更新へのポインターを示したものをブログ投稿したいと思っています。
Hope this helps,
Scott