MicrosoftがASP.NET MVCの次期バージョンの開発に取り掛かったようだ。次期バージョンでは、アプリケーションの開発や配置のワークフローの円滑化、Webフォームとのさらなる機能共有、Ajaxサポートの改善、モバイルやタブレット+HTML 5に、特に力を入れている。
注意:この記事ではまだ計画段階の機能について述べており、最終的にMVC 4に含まれない可能性もあるので注意してほしい。
レシピ
ASP.NET MVCに複合ユーザーコントロールがないということは、開発スピードの観点から言えば弊害をもたらす要因であった。MVCチームは、複合コントロールなしでWebフォームのような開発スピードを提供できる方法を探し続けてきた。その答えが“レシピ”だ。例を挙げて、レシピ機能について説明しよう。
クライアントサイドのソート機能を備えた複雑なグリッドを使いたい、という状況を想像してほしい。Webフォームを使って開発していれば、あなたは適切なグリッドスタイルのユーザーコントロールを選んで利用するだろう。だがこのようなユーザーコントロールを使う場合、あなたが必要としている機能以外に、実際には使わない機能まで押し付けられることになる。ASP.NET MVCのレシピ機能では、ダイアログであなたが必要としている機能のみを選択し、その実現に必要なHTMLやJavaScriptのみを生成する、といったことが可能になる。
レシピ機能についてもう一つ例を取り上げよう。今度はOAuthベースの認証を実装することを考えてほしい。この場合、通常はどこを変更すればいいか確認しつつ、数箇所のコードを変更していくことになるだろう。レシピ機能を使うと、必要なコードは全て適切な場所に追加され、変更ミスにより実行時エラーやセキュリティ上の脆弱性が発生する可能性を劇的に減らしてくれるだろう。
レシピの開発も難しくはない。本質的には、レシピはEnvDTE.DTEインターフェースのインスタンスを与えられたダイアログであり、Visual Studioのプラグインやマクロと同じように動作する。ASP.NET MVCは、DTEについて1から10まで学習しなくてもレシピの開発ができるよう、例えばソリューションエクスプローラのコンテキストメニューにレシピを表示するといったことを行ってくれる。
モバイル開発
モバイル開発のための機能の1つは、デフォルトプロジェクトテンプレートに含まれるCSSの改善だ。これは、小さなサイズの画面できれいに見えるように調整されている。
よりモバイル用に特化させたければ、デバイス特化ビューを使うという選択肢もある。この機能を使えば、モバイルデバイスの画面にフィットしないコンテンツをCSSとJavaScriptを駆使して隠すといったことをせず、完全にこれらをページから削除することができるようになる。これにより、必要な通信量の削減やより高速なレンダリングが可能になるだろう。
パフォーマンス改善
非同期処理の技術を使うことにより、1台のWebサーバーで同時にさばけるクライアントの最大数を大幅に増やすことができるのは、よく知られている。だが、不恰好で美しくないコールバック処理の羅列を書かなければならないのも、またよく知られていることだ。
次期Webフォームと同じく、C# 5とVB 11のasync/awaitキーワードがASP.NET MVCでもサポートされる予定だ。以下のコードは、インラインで2つの非同期処理を呼び出す例だ。
もう1つのパフォーマンス強化に、CSSとJavaScriptのバンドル機能がある。この機能は特に、たくさんのCSSやJavaScriptを使っている巨大なサイトにとって重要だ。バンドル機能によってCSSとJavaScriptは1つのファイルにまとめられ、同時に不要なコメントや空白が削除されるので、レンダリングにかかる時間が改善されるだろう。