web-dev-qa-db-ja.com

MVC 5プロジェクトとWeb Apiプロジェクトの違い

ASP.NET MVCおよびWeb APIが初めてで、基本を取得しようとしています。 VS 2013には、MVCWeb APIBoth of them togetherという名前のプロジェクトテンプレートがあります。

チュートリアルを完了し、MVCだけでなくWeb APIテンプレートを使用してAPIを作成できることを学びました。

Architecturesageに基づいたこれらの違いは何ですか?

132
loop

基本的に、Web APIコントローラーはMVCコントローラーであり、HttpMessageResponseの代わりにActionResponseを応答の基本タイプとして使用します。他のほとんどの点で同じです。プロジェクトタイプの主な違いは、MVC Applicationプロジェクトタイプは、デフォルトのCSSJavaScriptファイル、APIには不要なWebサイトに必要なその他のリソースなど、Web固有のものを追加することです。

MVCはWebサイトの作成に使用されます。この場合、Controllersは通常、ブラウザーのリクエストに対してView(つまり、HTML応答)を返します。一方、Web APIは通常、他のアプリケーションによって消費されるように作られています。他のアプリケーションがデータ/機能にアクセスできるようにしたい場合は、このアクセスを容易にするWeb APIを作成できます。たとえば、Facebookには、アプリ開発者がアプリを使用しているユーザーに関する情報にアクセスできるようにするためのAPIがあります。 Web APIは、一般消費用である必要はありません。 APIを作成して、独自のアプリケーションをサポートすることもできます。たとえば、MVC WebサイトのAJAX機能をサポートするWeb APIを作成しました。

マイクロソフトは、さまざまなテンプレートの表示方法を変更しました。現在、プロジェクトタイプごとに異なるテンプレートを使用する代わりに、開発者は必要に応じて同じプロジェクト内でASP.NETテクノロジーを混在させることを推奨しています。 MicrosoftはこれをvNextと呼びます。

UPDATE:ASP.NET Coreの場合、Web APIはMVC 6プロジェクトタイプに統合され、ApiControllerクラスはControllerクラスに統合されています。詳細については、 https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

177
Elad Lachmi

私の2セント...

  1. ASP.Net MVC– MVCのControllerは、Viewを決定します。つまり、コントローラーは、ユーザーが「見る」べきものを決定します(現在のシナリオまたはコンテキスト)、リクエストを行うとき。
  2. ASP.Net Web Formsでは、ASPXページは、ユーザーがリクエストを行うときに「見る」べき内容を決定します。
  3. しかし、Web APIでは、ユーザーがリクエストを行うときに「見る」べきものを決定するWeb APIの機能の制御/パワーはありません。

Web APIは、Webサイトのみに結び付けられたテクノロジーではありません。 Webサイトだけでなく、複数の目的に使用できます。したがって、renderingの意味がわかりません

さらに読む

  1. 今日のWebソリューションの計画:Webフォーム、ASP.NET MVC、Web API、およびOWIN
  2. WCFまたはASP.NET Web API?このテーマに関する2セント
  3. 次世代の.NET – ASP.NET vNext
  4. ASP.NET MVC 6入門
70
Lijo

コントローラークラスから派生したMVCコントローラー。 Mvcでは、ビューを返すことができます。 Mvc achitectureは、アプリケーションの作成に使用します。ただし、Web APIはさまざまなアプリケーションにデータを提供するために使用されます。

Web ApiはApiコントローラーから駆動し、ビューを返しません。

注:MVCコントローラーからWeb Apiを作成することもできますが、JsonResultまたはその他のWeb APIがサポートする戻り値の型として結果を返す必要があります。

0
Akshay Kapoor

ここで既に提供されている回答に加えて、ApiControllerを継承し、Http動詞POSTを持つアクションを持つコントローラーには、[FromBody]入力パラメーターを1つしか指定できません。 MVCコントローラー(「コントローラー」から派生)を使用する場合、多くの入力後パラメーターを使用できます。

0
barrypicker