web-dev-qa-db-ja.com

ASP.NET MVC 3と4の違いは?

MVC4のすべての新機能と、MVC3からの変更点を説明する包括的なリストはありますか?

リリースノート はあまり役に立ちません)

63

MVC4リリースノート からコピーして貼り付けます。

最新のHTTPプログラミングモデル:新しく厳密に型指定されたHTTPオブジェクトモデルを使用して、Web APIのHTTP要求および応答に直接アクセスして操作します。同じプログラミングモデルとHTTPパイプラインは、新しいHttpClientタイプを介してクライアントで対称的に使用できます。

ルートの完全サポート:ASP.NET Web APIは、ルートパラメータと制約を含むASP.NETルーティングのルート機能のフルセットをサポートします。さらに、単純な規則を使用して、アクションをHTTPメソッドにマップします。

コンテンツネゴシエーション:クライアントとサーバーは連携して、Web APIから返されるデータの正しい形式を決定できます。 ASP.NET Web APIは、XML、JSON、およびフォームURLエンコード形式のデフォルトサポートを提供し、独自のフォーマッターを追加することでこのサポートを拡張したり、デフォルトのコンテンツネゴシエーション戦略を置き換えることもできます。

モデルのバインディングと検証:モデルバインダーは、HTTPリクエストのさまざまな部分からデータを抽出し、それらのメッセージ部分を.NETオブジェクトに変換する簡単な方法を提供します。 Web APIアクションで使用できます。検証は、データ注釈に基づいてアクションパラメーターでも実行されます。

Filters:ASP.NET Web APIは、[Authorize]属性などの既知のフィルターを含むフィルターをサポートします。アクション、許可、および例外処理用の独自のフィルターを作成してプラグインできます。

Query composition:IQueryableを返すアクションで[Queryable]フィルター属性を使用して、ODataクエリ規約によるWeb APIのクエリのサポートを有効にします。

テスタビリティの向上:Web APIアクションは、静的コンテキストオブジェクトにHTTPの詳細を設定するのではなく、HttpRequestMessageおよびHttpResponseMessageのインスタンスで機能します。 Web APIプロジェクトと一緒にユニットテストプロジェクトを作成し、Web API機能のユニットテストの迅速な作成を開始します。

コードベースの構成:ASP.NET Web APIの構成はコードのみで行われ、構成ファイルはクリーンなままです。提供サービスロケーターパターンを使用して、拡張ポイントを構成します。

Inversion of Control(IoC)コンテナーのサポートの改善:ASP.NET Web APIは、依存関係リゾルバーの抽象化の改善により、IoCコンテナーの優れたサポートを提供します

Self-Host:ルートのフルパワーを使用しながら、IISに加えてWeb APIを独自のプロセスでホストできます。およびWeb APIのその他の機能。

カスタムヘルプとテストページの作成:新しいIApiExplorerサービスを使用して完全なWeb APIのカスタムヘルプとテストページを簡単に構築できるようになりましたWeb APIのランタイムの説明。

モニタリングと診断:ASP.NET Web APIは、System.Diagnosticsなどの既存のロギングソリューションとの統合を容易にする軽量トレースインフラストラクチャを提供するようになりました。 ETWおよびサードパーティのログフレームワーク。 ITraceWriter実装を提供し、Web API構成に追加することにより、トレースを有効にできます。

リンク生成:ASP.NET Web API UrlHelperを使用して、同じアプリケーション内の関連リソースへのリンクを生成します。

Web APIプロジェクトテンプレート:新しいMVC 4プロジェクトウィザードから新しいWeb APIプロジェクトを選択して、ASP.NET Web APIをすばやく起動して実行します。

Scaffolding:[コントローラーの追加]ダイアログを使用して、Entity Frameworkベースのモデルタイプに基づいてWeb APIコントローラーをすばやくスキャフォールドします。

61
JSK NS

MVC4の新機能-MVC3対MVC4 からコピーして貼り付けます

MVC4の新機能-MVC3とMVC4

デフォルトのプロジェクトテンプレートの強化

新しいASP.NET MVC 4プロジェクトの作成に使用されるテンプレートが更新され、よりモダンなWebサイトが作成されました

モバイルプロジェクトテンプレート

新しいプロジェクトを開始していて、モバイルブラウザーとタブレットブラウザー専用のサイトを作成する場合は、新しいモバイルアプリケーションプロジェクトテンプレートを使用できます。これは、タッチに最適化されたUIを構築するためのオープンソースライブラリであるjQuery Mobileに基づいています

表示モード

新しい表示モード機能により、アプリケーションはリクエストを行っているブラウザに応じてビューを選択できます。たとえば、デスクトップブラウザーがホームページを要求する場合、アプリケーションは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、View Switcher、およびBrowser Overriding

jQuery Mobileは、タッチに最適化されたWeb UIを構築するためのオープンソースライブラリです。 jQuery MobileをASP.NET MVC 4アプリケーションで使用する場合は、開始に役立つNuGetパッケージをダウンロードしてインストールできます。 Visual Studioパッケージマネージャーコンソールからインストールするには、次のコマンドを入力します。Install-Package jQuery.Mobile.MVCこれにより、jQuery Mobileと、次を含むいくつかのヘルパーファイルがインストールされます。Views/ Shared/Layout.Mobile.cshtml jQuery Mobileベースのレイアウト。 Views/Shared/ViewSwitcher.cshtml部分ビューとViewSwitcherController.csコントローラーで構成されるビュースイッチャーコンポーネント。パッケージをインストールしたら、モバイルブラウザー(またはFirefox User Agent Switcherアドオンなどの同等のもの)を使用してアプリケーションを実行します。 jQuery Mobileがレイアウトとスタイリングを処理するため、ページの外観がまったく異なることがわかります。これを活用するには、次の操作を行います。訪問者がリンクをクリックすると、同じページのデスクトップバージョンに切り替わります。デスクトップレイアウトにはデフォルトでビュースイッチャーが含まれないため、訪問者はモバイルモードにアクセスできません。これを有効にするには、_ViewSwitcherへの次の参照をデスクトップレイアウトの要素内に追加します。

@Html.Partial("_ViewSwitcher")

...ブラウザオーバーライドはASP.NET MVC 4のコア機能であり、jQuery.Mobile.MVCパッケージをインストールしなくても使用できます。ただし、ビュー、レイアウト、および部分ビューの選択にのみ影響します。Request.Browserオブジェクトに依存する他のASP.NET機能には影響しません。

Visual Studioでのコード生成のレシピ

新しいレシピ機能により、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の呼び出しは非同期に呼び出され、スレッドプールからスレッドをブロックしません。

Taskインスタンスを返す非同期アクションメソッドもタイムアウトをサポートできます。アクションメソッドをキャンセル可能にするには、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)
    });
}

お役に立てれば。ありがとう

42
Display Name

すべてのMVC 4新機能のURL を実行してください

2
Afazal

MVC 3

  1. NuGetを介して拡張可能な統合された足場システム
  2. HTML 5対応のプロジェクトテンプレート
  3. 新しいRazor View Engineを含む表情豊かなビュー
  4. 依存性注入とグローバルアクションフィルターを備えた強力なフック
  5. 控えめなJavaScript、jQuery検証、JSONバインディングによる豊富なJavaScriptサポート

MVC 4

  1. ASP.NET Web API
  2. 更新され、近代化されたデフォルトのプロジェクトテンプレート
  3. 新しいモバイルプロジェクトテンプレート
  4. モバイルアプリをサポートする多くの新機能
  5. 非同期メソッドのサポートの強化

参照: http://dotnet-developers-cafe.blogspot.in/2013/09/difference-between-aspnet-mvc-3-and-mvc.html

1
Mukesh Kumar
0
Rahul

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();
  }
}

手順:

  • 同期コントローラーは、コントローラーをコントローラーから派生させる代わりに、AsyncControllerを実装するためにコントローラークラスから派生したクラスで、AsyncControllerクラスから派生します。 AsyncControllerから派生したコントローラーは、ASP.NETが非同期要求を処理できるようにし、引き続き同期アクションメソッドを処理できます。

  • 同期コントローラの同期アクションメソッドに対応して、非同期コントローラのアクションに対して2つのメソッドを作成する必要があります。非同期プロセスを開始する最初のメソッドは、アクションとサフィックス「Async」で構成される名前を持っている必要があります。非同期プロセスの終了時に呼び出される他のメソッド(コールバックメソッド)には、アクションと接尾辞「Completed」で構成される名前が必要です。

    上記のサンプルの例では、非同期アクションでIndexアクションがIndexAsyncとIndexCompletedの2つのメソッドに変わりました。

    IndexAsyncメソッドはvoidを返し、IndexCompletedメソッドはActionResultインスタンスを返します。アクションは2つのメソッドで構成されていますが、同期アクションメソッドと同じURL(Controller/Indexなど)を使用してアクセスされます。

非同期アクションメソッドについては、次のことに注意してください:

アクション名がSampleの場合、フレームワークはSampleAsyncおよびSampleCompletedメソッドを探します。

ビューページには、SampleAsync.aspxまたはSampleCompleted.aspxではなく、Sample.aspxという名前を付ける必要があります。 (アクション名はSampleAsyncではなくSampleです)

コントローラには、SampleAsyncという名前の非同期メソッドとSampleという名前の同期メソッドを含めることはできません。存在する場合、SampleAsyncアクションメソッドとSampleアクションメソッドのリクエストシグネチャが同じであるため、AmbiguousMatchException例外がスローされます。

詳細については、ここをクリックしてください: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html

0