本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。
原典:Announcing release of ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix
ASP.NET MVC 3、IIS Express、SQL CE 4、Webファーム・フレームワーク、Orchard、WebMatrixリリースのお知らせ
本日の製品リリースについてお知らせでき、大変うれしく思っています。
- ASP.NET MVC 3
- NuGet
- IIS Express 7.5
- SQL Server Compact Edition 4
- Web DeployおよびWebファーム・フレームワーク 2.0
- Orchard 1.0
- WebMatrix 1.0
上記の製品は、すべて無償です。これらは、.NET 4とVS 2010上にビルドされており、ASP.NET (WebフォームおよびMVC)、そしてMicrosoft Webサーバ関連に対して、非常に大きな付加価値を与えます。
ASP.NET MVC 3
ASP.NET MVC 3の最終リリース版を出荷しました。ここから、ASP.NET MVC 3をダウンロードおよびインストールできます。ASP.NET MVC 3のソースコード(OSI準拠のオープンソースライセンスの下)も、オプションとしてここ(zipファイル)からダウンロードできます。
ASP.NET MVC 3では、大幅な更新が行われ、非常に多くの新機能が追加されています。以下は、その一例です。
Razor
ASP.NET MVC 3には、(既存の.aspxビューエンジンは継続してサポート/改善されていることに加えて)『Razor』と呼ばれる新しいビューエンジンオプションがあります。Razorは、ビューテンプレートを書く時の文字数やキーストロークを最小限におさえ、高速で流れのあるコーディングのワークフローを可能にします。
よくあるテンプレート文法と違い、HTMLでサーバブロックの開始と終了を明示的に示すためのコーディングは、Razorでは必要ありません。Razorのパーサーは、コードからサーバブロックの開始と終了を推測します。これにより、コンパクトで表現力のある文法が可能となり、クリーンで高速に楽しくタイプできます。
この半年間に行った私のブログ投稿で、Razorの詳細が確認できます。
- Razorの紹介
- Razorの@model新キーワード
- Razorでのレイアウト
- Razorでサーバサイドのコメント
- Razorの@:と<text>文法
- Razorで暗黙的、明示的コードナゲット
- Razorのレイアウトとセクション
今回のリリースでは、Visual Studio 2010および無償のVisual Web Developer 2010 Expressで、Razor(VBおよびC#)のコードIntelliSenseがフルサポートされています。
JavaScriptの改善
ASP.NET MVC 3は、よりリッチなJavaScriptシナリオが可能で、HTML5機能を活用できるようになります。
ASP.NET MVC 3のAJAXおよび検証ヘルパーは、Unobtrusive JavaScriptベースの方法を使用するようになりました。Unobtrusive JavaScriptは、HTMLへJavaScriptを挿入しないので、新しいHTML 5の『data-』属性変換(これはIE6を含む古いブラウザでも動作し便利です)を使用するよりも、クリーンな動作の分別が可能です。これにより、HTMLを簡潔でクリーンに保て、JSライブラリの交換やカスタマイズすることもさらに簡単になります。
サーバ上のアクションメソッドへ、クライアントサイドからJSONベースのパラメータを送信するためのサポートが、ASP.NET MVC 3にビルトインされました。これにより、クライアントとサーバ間のデータ交換や、リッチなJavaScriptフロントエンドのビルドが、より簡単になります。特に、クライアントテンプレートおよびデータバインディング(jQueryプロジェクトにASP.NETチームが最近提出したjQueryプラグインを含む)が関連するシナリオで、この機能は便利だと思います。前回のバージョンのASP.NET MVCで、コアのjQueryライブラリが含まれました。ASP.NET MVC 3では(検証ヘルパーが、クライアントサイドの検証シナリオで使用する)jQuery検証プラグインも出荷されます。デフォルトで、(プロジェクト内で使用できるリッチなクライアントサイドのJavaScript UIウィジット一式を提供する)jQuery UIも含まれます。
検証の改善
ASP.NET MVC 3では、より簡単にデータが扱えるよう、数多くの検証が改善されました。
クライアントサイドの検証は、ASP.NET MVC 3(Unobtrusive JavaScript実装を使用)ではデフォルトで有効になっています。本日のリリースで、リモート検証のビルトインサポートも含まれており、これにより検証属性でモデルクラスを注釈できるため、クライアント上での入力検証時に、ASP.NET MVCはサーバメソッドに対してリモート検証の呼び出しが実施できます。
.NET 4のSystem.ComponentModel.DataAnnotations名前空間で導入された検証機能は、ASP.NET MVC 3でサポートされるようになりました。これには、新しいIValidatableObjectインターフェイスが含まれているので、モデルレベルの検証が可能で、モデル全体またはモデル内の2つのプロパティの状態に特有の検証エラーメッセージが提供できます。
ASP.NET MVC 3は、.NET 4のValidationAttributeクラスに行われた改善もサポートしています。ValidationAttributeは、新しいIsValidオーバーロードをサポートするようになり、どのオブジェクトが検証されたかなど、既存の検証コンテキストについてさらに多くの情報を提供します。このサポートを使用して、2つのプロパティの値を自由な形で簡単に比較/検証できるビルトインの[Compare]検証属性を、ASP.NET MVC 3とともに出荷しました。
ASP.NET MVCでは、すべてのデータアクセスAPIおよび技術が使用できます。この1年の間、新しいEFコードファーストライブラリとASP.NET MVCアプリケーションが、本当に上手く機能するように、.NETデータチームと密接に作業してきました。これら2つの投稿は、最新のEFコードファーストプレビュー版をカバーしており、ASP.NET MVC 3を使用してどのようにデータ編集を簡単にするのか(一貫したクライアント+サーバ検証サポートとともに)を表示しています。EFコードファーストの最終リリース版は、数週間内に出荷される予定です。
新しいMvcScaffoldingプロジェクトの初回プレビュー版も、本日公開しました。これは、ASP.NET MVC 3のコントローラやビューを簡単にスキャフォールドでき、EFコードファーストと非常に上手く動作します(そして他のデータプロバイダとの接続サポートも行います)。Steve Sanderson氏のMvcScaffoldingブログ投稿から、詳細の確認やNuGetを通じてインストールできます。
出力キャッシュ
ASP.NET MVCの以前のリリース版は、URLまたはアクションメソッドレベルで、出力キャッシュコンテンツをサポートしていました。
ASP.NET MVC V3では、パーシャルページの出力キャッシュもサポートするようになり、全体ではなく、リスポンスのキャッシュ領域または断片を簡単に出力できます。これは多くのシナリオで非常に便利に使え、サーバに対してアプリケーションが与える負荷を、劇的に減少させることができます。
ASP.NET MVC 3の新しいパーシャルページの出力キャッシュにより、サイト上の複数のURLに渡り、キャッシュされたサブ領域/断片を簡単に再利用できます。Webサーバ上でコンテンツをキャッシュすることも、オプションでWindows Server AppFabricや分散型メモリキャッシュシステムのような、分散キャッシュサーバ内にキャッシュすることもできます。
今後パーシャルページシナリオに対して、どのようにASP.NET MVC 3の新しい出力キャッシュサポートを利用していくのかについて、いくつかブログ投稿する予定です。
改善されたDependency Injection
ASP.NET MVC 3では、Dependency Injection(DI)の適用と、Dependency Injection/IOCコンテナとの統合に対するサポートが改善されました。
ASP.NET MVC 3では、コントローラとのDIを有効にするために、独自のControllerFactoryクラスを作成する必要はなくなりました。その代りに、ASP.NET MVC 3でDependency Injectionフレームワークを登録すると、コントローラだけでなく、アプリケーション内で使用するビュー、アクションフィルタ、モデルバインダー、値プロバイダー、検証プロバイダー、モデルメタデータプロバイダーに対しても依存性の解決を行います。
これにより、プロジェクト内でDependency Injectionのクリーンな統合が、さらに簡単になります。
その他の素晴らしい機能
ASP.NET MVC 3には、コードを書く量を減らしたり、クリーンなコードを書くための改善が数多く行われています。
以下はその一例です。
- テンプレートからASP.NET MVC 3の新規プロジェクトを簡単に開始できるようにした、プロジェクトの新規作成ダイアログの改善
- さらにクリーンなビューテンプレートの生成を可能にする[Add]-[View Scaffolding]サポートの改善
- .NET 4の動的サポートを使用して、コントローラからビューへ遅延バインドされたデータを引き渡すViewBagプロパティの新規追加
- アプリケーション内のすべてのコントローラに渡り、横びきフィルタ属性([HandleError]など)が指定できるグローバルフィルタのサポート
- モデルへフォーム送信したデータをバインディングする際に、より粗目のリクエストを可能にする[AllowHtml]属性の新規追加
- コントローラ上でのSessionStateの有効/無効をきめ細やかに制御できるSessionlessコントローラのサポート
- HttpNotFoundResultやRedirectPermanentなどのよくあるHTTPシナリオに対するActionResult型の新規追加
- 出力をHTMLエンコードしないことを示すHtml.Rawヘルパーの新規追加
- パスワードの暗号化に対するCryptoヘルパーの新規追加
- などなど
ASP.NET MVC 3の詳細
今後数週間中に、http://asp.net/mvcサイトにチュートリアルやサンプルをたくさん投稿する予定です。以下は、本日同サイト上で利用可能な2つのASP.NET MVC 3のチュートリアルです。
これからASP.NET MVC 3のチュートリアルやビデオもhttp://asp.net/mvcサイトに追加していく予定なので、定期的に新しいチュートリアルがあるかどうか確認してみてください。
既存プロジェクトのアップグレード方法
ASP.NET MVC 3は、ASP.NET MVC 2と互換性があるので、既存のMVCプロジェクトをASP.NET MVC 3に更新するのは簡単です。
MVC 1およびMVC 2リリースで既に行なった基礎の上にASP.NET MVC 3の新機能はビルドされています。つまり、獲得済みのスキル、知識、ライブラリ、本などは直接MVC 3リリースでも適用可能です。MVC 3には新機能が追加されていますが、新機能によって既存の機能が陳腐化してしまうことはありません。
リリースノートにある手動によるアップグレード方法に従い、既存のASP.NET MVC 2プロジェクトをアップグレードできます。また、それ以外では、この自動化されたASP.NET MVC 3のアップグレードツールを使って、既存のプロジェクトを簡単に更新できます。
ローカライズされたビルド
本日のASP.NET MVC 3リリースは、英語で利用可能です。数日中には、ローカライズ版のASP.NET MVC 3 (9言語)をリリースする予定です。利用可能になり次第、ローカライズ版のダウンロードURLをブログ投稿します。