MVC4のすべての新機能とMVC3からのすべての変更点を説明する包括的なリストはありますか?
(リリースノートはあまり役に立ちません)
MVC4のすべての新機能とMVC3からのすべての変更点を説明する包括的なリストはありますか?
(リリースノートはあまり役に立ちません)
MVC4リリースノートからコピーして貼り付けました:
•<strong>最新のHTTPプログラミングモデル:新しい厳密に型指定されたHTTPオブジェクトモデルを使用して、WebAPIのHTTP要求と応答に直接アクセスして操作します。同じプログラミングモデルとHTTPパイプラインは、新しいHttpClientタイプを介してクライアントで対称的に利用できます。
•<strong>ルートの完全サポート:ASP.NET Web APIは、ルートパラメーターや制約など、ASP.NETルーティングのルート機能の完全なセットをサポートします。さらに、単純な規則を使用して、アクションをHTTPメソッドにマップします。
•<strong>コンテンツネゴシエーション:クライアントとサーバーが連携して、WebAPIから返されるデータの正しい形式を決定できます。ASP.NET Web APIは、XML、JSON、およびフォームURLエンコード形式のデフォルトのサポートを提供します。独自のフォーマッターを追加することでこのサポートを拡張したり、デフォルトのコンテンツネゴシエーション戦略を置き換えたりすることもできます。
•<strong>モデルのバインドと検証:モデルバインダーは、HTTPリクエストのさまざまな部分からデータを抽出し、それらのメッセージ部分をWebAPIアクションで使用できる.NETオブジェクトに変換する簡単な方法を提供します。検証は、データ注釈に基づいたアクションパラメータに対しても実行されます。
•<strong>フィルター:ASP.NET Web APIは、[Authorize]属性などのよく知られたフィルターを含むフィルターをサポートします。アクション、承認、および例外処理のための独自のフィルターを作成してプラグインできます。
•<strong>クエリ構成:IQueryableを返すアクションで[Queryable]フィルター属性を使用して、ODataクエリ規則を介したWebAPIのクエリのサポートを有効にします。
•<strong>テスト容易性の向上:静的コンテキストオブジェクトにHTTPの詳細を設定するのではなく、WebAPIアクションはHttpRequestMessageおよびHttpResponseMessageのインスタンスで機能します。Web APIプロジェクトと一緒に単体テストプロジェクトを作成して、WebAPI機能の単体テストの作成をすばやく開始します。
•<strong>コードベースの構成:ASP.NET Web API構成は、コードのみを介して実行され、構成ファイルをクリーンな状態に保ちます。提供サービスロケーターパターンを使用して、拡張ポイントを構成します。
•<strong>制御の反転(IoC)コンテナーのサポートの改善:ASP.NET Web APIは、依存関係リゾルバーの抽象化の改善を通じてIoCコンテナーの優れたサポートを提供します
•<strong>セルフホスト:Web APIは、IISに加えて独自のプロセスでホストでき、WebAPIのルートやその他の機能をフルに活用できます。
•<strong>カスタムヘルプとテストページの作成:新しいIApiExplorerサービスを使用してWeb APIの完全なランタイム記述を取得することにより、WebAPIのカスタムヘルプとテストページを簡単に作成できるようになりました。
•<strong>監視と診断:ASP.NET Web APIは、System.Diagnostics、ETW、サードパーティのログフレームワークなどの既存のログソリューションとの統合を容易にする軽量のトレースインフラストラクチャを提供するようになりました。ITraceWriter実装を提供し、それをWeb API構成に追加することで、トレースを有効にできます。
•<strong>リンクの生成:ASP.NET Web API UrlHelperを使用して、同じアプリケーション内の関連リソースへのリンクを生成します。
•<strong>WebAPIプロジェクトテンプレート:新しいMVC4プロジェクトウィザードから新しいWebAPIプロジェクトを選択して、ASP.NETWebAPIをすばやく起動して実行します。
•<strong>スキャフォールディング:[コントローラーの追加]ダイアログを使用して、EntityFrameworkベースのモデルタイプに基づいてWebAPIコントローラーをすばやくスキャフォールディングします。
MVC4の新機能からコピーアンドペースト-MVC3対MVC4
MVC4の新機能-MVC3とMVC4
デフォルトのプロジェクトテンプレートの機能強化
新しいASP.NETMVC4プロジェクトの作成に使用されるテンプレートが更新され、よりモダンなWebサイトが作成されました。
モバイルプロジェクトテンプレート
新しいプロジェクトを開始していて、モバイルおよびタブレットブラウザー専用のサイトを作成する場合は、新しいモバイルアプリケーションプロジェクトテンプレートを使用できます。これは、タッチ最適化UIを構築するためのオープンソースライブラリであるjQueryMobileに基づいています
表示モード
新しい表示モード機能を使用すると、アプリケーションは、要求を行っているブラウザーに応じてビューを選択できます。たとえば、デスクトップブラウザがホームページを要求した場合、アプリケーションはViews\Home\Index.cshtml
テンプレートを使用する可能性があります。モバイルブラウザがホームページを要求すると、アプリケーションがViews\Home\Index.mobile.cshtml
テンプレートを返す場合があります。
DisplayModes.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.Request.UserAgent.IndexOf
("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
jQuery Mobile、ビュースイッチャー、およびブラウザーのオーバーライド
jQuery Mobileは、タッチに最適化されたWebUIを構築するためのオープンソースライブラリです。ASP.NET MVC4アプリケーションでjQueryMobileを使用する場合は、開始に役立つNuGetパッケージをダウンロードしてインストールできます。Visual Studio Package Manager Consoleからインストールするには、次のコマンドを入力します。Install-Package jQuery.Mobile.MVCこれにより、jQuery Mobileと、次のようないくつかのヘルパーファイルがインストールされます。Views/ Shared/Layout.Mobile.cshtml。 jQueryMobileベースのレイアウト。ビュー/共有/ViewSwitcher.cshtml部分ビューとViewSwitcherController.csコントローラーで構成されるビュースイッチャーコンポーネント。パッケージをインストールした後、モバイルブラウザ(またはFirefox User Agent Switcherアドオンなどの同等のもの)を使用してアプリケーションを実行します。あなたのページはかなり異なって見えるでしょう、jQueryMobileがレイアウトとスタイルを処理するためです。これを利用するには、次の操作を実行できます。訪問者がリンクをクリックすると、同じページのデスクトップバージョンに切り替わります。デスクトップレイアウトにはデフォルトでビュースイッチャーが含まれていないため、訪問者はモバイルモードに入る方法がありません。これを有効にするには、要素のすぐ内側にあるデスクトップレイアウトに_ViewSwitcherへの次の参照を追加します。
@Html.Partial("_ViewSwitcher")
...ブラウザーのオーバーライドはASP.NETMVC4のコア機能であり、jQuery.Mobile.MVCパッケージをインストールしなくても使用できます。ただし、これはビュー、レイアウト、および部分ビューの選択にのみ影響します。Request.Browserオブジェクトに依存する他のASP.NET機能には影響しません。
VisualStudioでのコード生成のレシピ
新しいレシピ機能により、Visual Studioは、NuGetを使用してインストールできるパッケージに基づいてソリューション固有のコードを生成できます。Recipesフレームワークを使用すると、開発者はコード生成プラグインを簡単に作成できます。このプラグインを使用して、エリアの追加、コントローラーの追加、ビューの追加の組み込みコードジェネレーターを置き換えることもできます。レシピはNuGetパッケージとして展開されるため、ソース管理に簡単にチェックインして、プロジェクトのすべての開発者と自動的に共有できます。これらは、ソリューションごとに利用することもできます。
非同期コントローラーのタスクサポート
TaskまたはTaskタイプのオブジェクトを返す単一のメソッドとして非同期アクションメソッドを記述できるようになりました。
たとえば、Visual C#5を使用している(または非同期CTPを使用している)場合は、次のような非同期アクションメソッドを作成できます。
public async Task Index(string city) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common", new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(),
SportsScores = await sportsService.GetScoresAsync()
});
}
前のアクションメソッドでは、newsService.GetHeadlinesAsyncとsportsService.GetScoresAsyncの呼び出しは非同期で呼び出され、スレッドプールからのスレッドをブロックしません。
タスクインスタンスを返す非同期アクションメソッドもタイムアウトをサポートできます。アクションメソッドをキャンセル可能にするには、タイプCancellationTokenのパラメーターをアクションメソッドのシグネチャに追加します。次の例は、タイムアウトが2500ミリ秒で、タイムアウトが発生した場合にTimedOutビューをクライアントに表示する非同期アクションメソッドを示しています。
[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task Index(string city, CancellationToken cancellationToken) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common", new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
SportsScores = await sportsService.GetScoresAsync(cancellationToken)
});
}
お役に立てれば。ありがとう
MVC 3
MVC 4
参照:http ://dotnet-developers-cafe.blogspot.in/2013/09/difference-between-aspnet-mvc-3-and-mvc.html
違いについては、以下のリンクを確認してください。
http://forums.asp.net/t/1753017.aspx
http://www.askamoeba.com/Answer/130/Whats-new-in-MVC4-MVC3-Vs-MVC4
http://forums.asp.net/t/1918539.aspx?Main+difference+between+regular+webapplication+mvc3+and+mvc4+
MVC 4.0で導入された重要な機能の1つは、非同期アクションメソッドの記述を可能にする非同期コントローラーでした。非同期コントローラーを使用すると、作業スレッドをアイドル状態にすることなく操作を実行できます。
非同期アクションが呼び出されると、次の手順が実行されます。
Webサーバーはスレッドプール(ワーカースレッド)からスレッドを取得し、着信要求を処理するようにスケジュールします。このワーカースレッドは非同期操作を開始します。ワーカースレッドはスレッドプールに戻され、別のWebリクエストを処理します。非同期操作が完了すると、ASP.NETに通知します。Webサーバーは、スレッドプール(非同期操作を開始したスレッドとは異なるスレッドである可能性があります)からワーカースレッドを取得して、応答のレンダリングを含む残りの要求を処理します。
同期アクションメソッドから非同期アクションメソッドへの変換
以下は、同期アクションメソッドとそれに相当する非同期バージョンの例です。
同期コントローラー:
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
}
上記の操作の非同期バリアント:
public class TestController : AsyncController
{
public void IndexAsync()
{
return View();
}
public ActionResult IndexCompleted()
{
return View();
}
}
手順:
同期コントローラーは、Controllerクラスから派生したクラスであり、Controllerからコントローラーを派生させるのではなく、AsyncControllerクラスから派生させてAsyncControllerを実装します。AsyncControllerから派生したコントローラーを使用すると、ASP.NETで非同期要求を処理でき、同期アクションメソッドを引き続き処理できます。
同期コントローラーの同期アクションメソッドに対応して、非同期コントローラーのアクション用に2つのメソッドを作成する必要があります。非同期プロセスを開始する最初のメソッドには、アクションと接尾辞「Async」で構成される名前を付ける必要があります。非同期プロセスの終了時に呼び出されるもう1つのメソッド(コールバックメソッド)には、アクションと接尾辞「Completed」で構成される名前を付ける必要があります。
上記のサンプル例では、Indexアクションは、非同期コントローラーでIndexAsyncとIndexCompletedの2つのメソッドに変換されています。
IndexAsyncメソッドはvoidを返し、IndexCompletedメソッドはActionResultインスタンスを返します。アクションは2つのメソッドで構成されていますが、同期アクションメソッドの場合と同じURL(たとえば、コントローラー/インデックス)を使用してアクセスされます。
非同期アクションメソッドについては、次の点に注意してください。
アクション名がSampleの場合、フレームワークはSampleAsyncメソッドとSampleCompletedメソッドを探します。
ビューページには、SampleAsync.aspxやSampleCompleted.aspxではなくSample.aspxという名前を付ける必要があります。(アクション名はSampleであり、SampleAsyncではありません)
コントローラには、SampleAsyncという名前の非同期メソッドとSampleという名前の同期メソッドを含めることはできません。含まれている場合、SampleAsyncアクションメソッドとSampleアクションメソッドのリクエストシグネチャが同じであるため、AmbiguousMatchException例外がスローされます。
詳細については、ここをクリックしてください:http: //www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html