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


135

私はASP.NET MVCWeb APIを初めて使用し、基本を習得しようとしています。私の知る限り、我々はという名前のVS 2013でのプロジェクトテンプレートを、持っているMVCWeb APIBoth of them together

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

では、アーキテクチャ使用法に基づくこれらの違いは何ですか?

回答:


182

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

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

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

更新: ASP.NET Coreでは、Web APIがMVC 6プロジェクトタイプにApiController統合され、Controllerクラスがクラスに統合されました。詳細:https : //wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


1
Eladに感謝します。ansを編集して、Asp.net IdentityとWeb Api 2について何か追加できますか。
ループ

そのため、デスクトップアプリからコントローラーアクションにアクセスすることはできません。適切なGET構文を使用してURLを呼び出す場合でも、
アンブレイカブル2017

70

私の2セント...

  1. ASP.Net MVC - MVCのはControllerどうあるべきかを決定するView-すなわち、コントローラは、彼らが要求を行う際に、ユーザは、(現在のシナリオまたはコンテキストに基づいて)「見る」べきかを決定します。
  2. ASP.Net Webフォーム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の概要

比較したコードからは、なぜWebAPIの方が読みやすいのかわかりません。また、[HttpGet]などのHTTPメソッド属性を持つことが期待されているのはWeb APIであるため、反転しているように見えます。WebAPI(およびWebAPI 2)のコードをここで
Gobe

2
受け入れられた回答は、「基本的に、Web APIコントローラーはMVCコントローラーです」と述べています。それは単に間違っています。全体のことをあなたのリプライポイントPOINT WebAPIののは、それがあることをされていない MVCは、それはしません、すべての荷物とし、オーバーヘッド、「ビュー」と「レンダリング」に対処するために対処する必要があります。...そしてWebApiコントローラーは、Webサイトのみに縛られる必要さえありません。非常に良い返信-ありがとうございます!
FoggyDay 2018年

0

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

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

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.