.NET 4.5のリリースが近づき、Microsoftは次のバージョンの開発プラットフォームを公開し始めた。すでにメトロとWindows 8が発表されており、以前はWeb、サービス、データ開発にフォーカスされていた.NETのコア機能を改善して、短い間に人気をさらうことになるだろう。
ASP.NET Webフォームは、最近の.NET frameworkのリリースでは低迷しており、開発者市場はASP.NET MVCに傾いている。.NET 4.5においてMicrosoftはASP.NET Webフォームがサポートするモデルバインディングを提供することで、2つのWeb開発の生産性のギャップを減らすために多くのことを行った。このバインディングは、開発者がサービス呼び出ししなくても、コードビハインドとバインドして、直接コントロールに値を割り当てることができる。
この方法は時間を節約できるが、ページの描画とビジネスロジックを完全に切り離すことはできていない:グリッドを読み込むサービスメソッド名はコントロールに埋め込まれている。
モデルバインディングの他のASP.NETの改善は、HTML 5サポート、メモリ消費量の削減、非同期コードの容易化などがあげられ、ASP.NETファミリーは、Visual Studioエディタでよりリッチな開発体験を行うことができる。目に見える改善にはスマートタスクある。タグから、Ctrl + . (ドット)を押すと、開発者は、ントロールにどんな設定をすることができるかの詳細を知るまでもなく、迅速にスマートタスクを使用することができる。
その他のVisual Studioの改善: JavaScriptとCSSをサポートした改善されたインテリセンスだけでなく、ページ検証ツールのようなより精巧なデバッグメカニズム
RESTful web サービスは、ASP.NET MVCの最初のバージョンから最新バージョンまで、いろいろな形で提供されており、MicrosoftはWeb APIの標準化でこのコンセプトを提供している。Web APIの鍵は、IQueryable<>をRESTfulメソッドとして公開することができ、開発時間を削減する機能を提供していることである。この機能により、クライアントサイドクエリの開発にフォーカスした開発者が、一般的に必要なコードを書くことなく、便利なサービスを提供することができる。.NET 4.5の改善において、この機能に対するコードのフットプリントは最小限である。
標準APIコントローラーは以下の通り:
すべての製品を返すGetProducts()をベースにしたRESTクエリ:
http://localhost:8334/api/product
クエリ可能なAPIは以下の通り:
コスト(cost)が4より小さい製品を返すGetProductsByQuery()をベースにしたRESTクエリ:
http://localhost:8334/api/product?$filter=(cost lt 4)
フィルターは、その結果を生成するために実行時にクエリ後に適用される。特別なケースや特定の機能に必要な副作用はおそらく独自の実相が必要になるだろう。
最後にWeb APIを通じて公開する必要があるデータを管理するために、MicrosoftはEntity Framework 5を提案している。Entity Frameworkのその他のモデル(コードファースト、データベースファースト、エンティティファーストなど)として、Entity Framework 5は、モデルの同期を自動化するためと、開発期間を超えたデータベースのコンセプトを提供する。これは、すでに永続化されたデータを管理するためにSQL変更スクリプトを作成するために費やされていた多くのサイクルを削減することができる。マイグレーションの調整を行うためのパッケージマネージャーコンソールに依存しているが、構文を学ぶ価値がある。
コードファーストアプリケーションからこのコマンドを実行する:
もしMigrationsディレクトリに“InitialCreate”ファイルが追加されなかったら、このコマンドを実行する:
与えられたモデル:
“HasLid”プロパティを追加したら:
モデル変更に伴うデータベース更新のコマンド
変更をロールバックさえたければ、単純にadd-migrationコマンドを実行して、データベースなどの反映したい対象を特定する:
これらの変更は、.NET開発者の生産性向上として広くポジティブに受け取られているが、.NET 4.5の大幅な変更にはいくつかの問題が存在している。 Greg Duncan氏は、Microsoftが.NET frameworkを進化させるスピードに関する彼の懸念を簡潔に示した“Microsoft(またはチーム)はアジャイルで常にそれぞれのイテレーションで改善して、最後から学習しようとしていると言えるんじゃないか...? (げふっ... 少なくてもそうであって欲しい... げふっ).”