だいたい1ヵ月に一度のリリースを続けているMicrosoft社は、ASP.NET MVCフレームワーク プレビュー4をリリースした。このリリースでは、開発者の生産性向上を支援しつつ、より高い機能の提供も始めた。
Scott Guthrieは、週の初めのブログポストの中でASP.NET MVC プレビュー4 リリース(パート 1)(リンク)と言う題でいくつかの新しい機能の説明をし、リリースについて語った。
新しい機能
デフォルト・プロジェクト・テンプレートの新しい単純化されたメンバーシップ機能
AccountControllerクラスが、以下のようなユーザ・アクションを処理する、デフォルト・プロジェクト・テンプレートに組み込まれた。
- ログイン
- ログアウト
- 登録
- パスワード変更
アプリケーションの大部分が、ユーザを処理し、それを認可する機能を持っていなければならないことを考えると、この機能追加は、開発者の時間を節約してくれる。この場合、MembershipProviderのデフォルト設定では、SQL Server Express版を使うが、SQL Serverを使うようにもできるし、既存のデータベースを使うようにもできる。
認可と例外処理のための新しいフィルタタイプ
このリリースは、2つの新しいフィルタタイプである認可と例外フィルタを含んでいる。これらのフィルタは、他のフィルタのスコープに関係なく、他のどのアクション・フィルタよりも前に、実行されるように設計されている。
これらの新しいタイプをサポートするために加えられた機能
- 新しいIAuthorizationFilterとIExceptionFilterインターフェース。認可フィルタは、いかなるアクション・フィルタより前に実行されることが保証されている。あらゆる例外フィルタは、たとえあるフィルタがリクエストを取り扱うと指定されていても、実行される。この機能は、例外を記録したり、取り扱う際に役立つ。
- AuthorizeAttributeクラス。これは、IAuthorizationFilterの具体的なデフォルト実装である。アクション・メソッドを確保するのに用いられている。
- HandleErrorAttributeクラス。これは、IExceptionFilterの具体的なデフォルト実装である。例外が発生した時、例外を処理し、それの見え方を指定するのに用いられる。
新しいOutput Cachefフィルタ
堅牢なASP.NETキャッシュ・メカニズムを有効利用して、OutPutCacheAttributeはアクション・メソッドの出力をキャッシュするよう実装されている。
ASP.NET Ajaxの変更
非同期動作実装に使用されるAjaxOptionsクラスを使用する一組のAjaxヘルパーが、追加された。
- ActionLink-アクション・メソッドへアンカータグを渡す。リンクががクリックされると、アクション・メソッドは非同期に呼び出される。このヘルパーの典型的用途は、レスポンスを受け付け、AjaxOptions.UpdateTargetIdプロパティで指定されたDom要素をアップデートすることである。
- Form - 非同期にサブミットされたHTMLフォームを生成する。このヘルパーの典型的用途は、フォームをサブミットし、ActionLinkのように、レスポンスを受け付け、AjaxOptions.UpdateTargetIdプロパティで指定されるDom要素を更新することである。
Scott Hanselmanは、自身のブログの記事で(リンク)、これらの機能をデモする良い例を出している。
Routeの名前空間
前バージョンのフレームワークは、コントローラの実装を見つけるためのメソッドを使うと、例外が生成されることがあるという問題を持っていた。このリリースでは、ControllerBuilderのDefaultNamespacesプロパティを用いることで、問題を解決している。実装例は以下の通り。
void Application_Start(object sender, EventArgs e)
{
ControllerBuilder.Current.DefaultNamespaces.Add("MyApp.Controllers");
ControllerBuilder.Current.DefaultNamespaces.Add("MyApp.Blog.Controllers");
ControllerBuilder.Current.DefaultNamespaces.Add("ThirdPartyApp.Controllers");
// ...
}
強化されたTempData検査のための新しいインターフェース
新しいインターフェース、ITempDataProviderが導入された。これにより、コントローラがSessionStateTempDataProvider以外のプロバイダーを使えるようになり、開発者がセッション・ステートの代わりにセッション・クッキーを使って、より簡単にテストを行うことができるようになった。
ActionInvoker拡張性強化
インスタンスで使われるとき、呼び出し元を拡張できるようなバーチャル・メソッドが、追加された。新しいメソッドは以下の通り。
- GetFiltersForActionMethod - アクション・メソッドの認可、アクション、例外フィルタといった全てのフィルタを返す。
- InvokeActionResultWithFilters - アクション・メソッドに適用されるすべての結果フィルタを引数に、アクション・メソッドが返すActionResultオブジェクトのExecuteResultを呼び出す。
- InvokeAuthorizationFilters - アクション・メソッドに適用される認可フィルタを呼び出す。
- InvokeExceptionFilters - アクション・メソッドに適用される例外フィルタを呼び出す。
プレビューは、CodePlexにあり、ダウンロードも可能である。新機能の詳細を記述したReadmeファイルもCodePlexからダウンロード可能(リンク)なので、レビューをお忘れなく。
原文はこちらです:http://www.infoq.com/news/2008/07/aspnet-mvc-preview4