web-dev-qa-db-ja.com

ASP.NET WebApi対MVC?

ASP.NET MVCコントローラーを使用すると、さまざまな形式でデータを公開できます。 AspNetWebAPIはAPIを作成するために明示的に設計されていますが、MVCコントローラーを使用して簡単に作成できますが、従来のMVCコントローラーよりも優れている場合は明確ではありません。 WebApiの利点が明らかであり、アプリケーションに別の複雑なレイヤーを追加する価値があるシナリオに興味があります。

質問: MVCに関してasp.net WebApiを使用する利点および/または欠点は何ですか?

133
Hugo Zapata

WebApiを使用すると、WCFやSOAPなどの正式なサービスではなく、HTTPで公開できるサービスを作成できます。もう1つの違いは、WebApiがHttpプロトコルを使用し、それを本当にファーストクラスHttp市民にする方法にあります。

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

比較、ディスカッション、チュートリアルの関連リンク:

enter image description here

42
EL Yusubov

WebAPIはODataを出力するため、ODataを使用する利点をすべて利用できます。たとえば、WebAPIを使用すると、以下が得られます。

  • $ filter、$ top、$ orderbyなどのクエリオプション。
    • 従来のMVCコントローラーでは、これらを自分で実装する必要があります。
  • 形式の標準化
    • RESTful APIの基礎となる形式を理解するODataクライアントがあります。
20
Paolo del Mundo

類似点

1)両方ともasyncrequestのihhtphandlerを継承するため、基本的にapicontrollerまたはmvcコントローラーは両方ともweb.httpのラッパーです。

違い:1)mvcコントローラーは定義が非常に重いため、使用しているインターフェイスとベースコードの数を確認できます。webapiはより軽いコントローラーであり、渡されたパラメーターによってリクエストを区別します(はい、変更することもできます! )

2)MVCコントローラーには、ビュー、アクション結果、javascript結果などを返すような機能が多すぎますが、Web APIにはJSONまたはXMLのいずれかがあります

3)APIは、ビューに依存せずに任意の場所を独立してホストできるRestful(get、post、put、delete、options)サービスを実装するためのもので、MVCコントローラーはビューと緊密に統合されているため、サポートできません。

13
LostCoder

Asp.Net Web API VS Asp.Net MVCenter image description here1 Asp.Net MVCは、ビューとデータの両方を返すWebアプリケーションの作成に使用されますが、Asp.Net Web APIは、ビューではなくデータのみを返す簡単でシンプルな方法で本格的なHTTPサービスを作成するために使用されます。

2。 Web APIは、.NET Framework上でREST-fulサービスを構築するのに役立ち、コンテンツネゴシエーションもサポートします(クライアントが受け入れることができる最適な応答形式データを決定することです。JSON、XML、ATOM、またはその他の形式のデータを使用できます) )、MVCにないセルフホスティング。

3。また、Web APIは、リクエストのAcceptヘッダーに基づいてJSON、XML、またはその他のような特定の形式でデータを返す処理を行いますが、心配する必要はありません。 MVCは、JsonResultを使用してJSON形式でのみデータを返します。

4。 Web APIでは、要求はHTTP動詞に基づいてアクションにマップされますが、MVCではアクション名にマップされます。

5。 Asp.Net Web APIは新しいフレームワークであり、コアASP.NETフレームワークの一部です。 Web APIに存在するモデルバインディング、フィルター、ルーティングなどのMVC機能はMVCとは異なり、新しいSystem.Web.Httpアセンブリに存在します。 MVCでは、これらの機能はSystem.Web.Mvcにあります。そのため、Web APIはAsp.Netとともに、スタンドアロンのサービスレイヤーとしても使用できます。

6。 Web APIとMVCコントローラーを単一のプロジェクトに混在させて、JSON、XML、またはその他の形式のデータを返す高度なAJAXリクエストを処理し、本格的なHTTPサービスを構築できます。通常、これはWeb APIセルフホスティングと呼ばれます。

7。 MVCとWeb APIコントローラーが混在しており、認証を実装する場合は、MVC用とWeb API用の2つのフィルターを作成する必要があります。両方とも異なるためです。

8。さらに、Web APIは軽量アーキテクチャであり、Webアプリケーションを除き、スマートフォンアプリでも使用できます。

元のソースは ここ です

12
curiousBoy

ある時点で、ASP.NET MVCをすべて忘れてしまうかもしれません。 .NET開発者であるが、シングルページアプリケーションを構築する場合(たとえば、Angularを使用)、不要な肥大化を伴わないRESTfulサービス(WebAPI)の利点が必要になります。 ASP.NET MVCを使用します。

10
What-About-Bob

この画像は、問題の方法の違いと類似点を示しているようです。それが私にとって役立つことを願っています。

enter image description here

10
BehrouzMoslem

ASP.NET MVCとASP.NET Web apiは両方とも異なる目的で使用しています

ASP.NET

ASP.NETは、Webアプリケーションを作成するための3つのフレームワーク、Web Forms、ASP.NET MVC、およびASP.NET Web Pagesを提供します。 3つのフレームワークはすべて安定しており、成熟しています。いずれのフレームワークでも優れたWebアプリケーションを作成できます。どのフレームワークを選択しても、ASP.NETのすべての利点と機能をどこでも利用できます。

各フレームワークは、異なる開発スタイルを対象としています。どちらを選択するかは、プログラミング資産(知識、スキル、開発経験)の組み合わせ、作成しているアプリケーションの種類、および快適な開発アプローチによって異なります。 3つのフレームワークはすべて、ASP.NETの将来のリリースでサポート、更新、改善される予定です。

MVC

ASP.NET MVCは、動的なWebサイトを構築するための強力なパターンベースの方法を提供します。これにより、関心事を明確に分離し、楽しくアジャイルな開発のためにマークアップを完全に制御できます。 ASP.NET MVCには、最新のWeb標準を使用する洗練されたアプリケーションを作成するための、TDDに優しい高速開発を可能にする多くの機能が含まれています。

Web API

ASP.NET Web APIは、ブラウザーやモバイルデバイスを含む幅広いクライアントに到達するHTTPサービスを簡単に構築できるフレームワークです。 ASP.NET Web APIは、.NET FrameworkでRESTfulアプリケーションを構築するための理想的なプラットフォームです。

こちらのフォームを読むことができます http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

5
Coder

ASP.NET MVCは、HTMLの出力を簡単にすることに重点を置いています。 ASP.NET Web APIは、生データの出力を簡単にすることに重点を置いています。

WebFormsの世界では、ASP.NET MVCは.aspxページに相当し、ASP.NET Web APIは.asmxになります

3

通常、MVCがより多くの種類の出力を生成できるデータサービスに使用されるWebAPI。

WebAPIは確かにデータサービスの作成方法を簡素化します。この目的のためにそれはきれいで簡単です。 MVCには、さらにいくつかのツールが付属しています。

MVCは、WebAPIが出力できる任意の出力を生成できます。テンプレートからの出力の生成は、MVCで簡単に実現できます。 WebAPIでそうする理由を見つけることができません。 PHP開発者と古いASPプログラマーは、C#コードに関連するHTMLファイルを内部で構築できる過去からこの態度を知っているかもしれません。

WebAPI- DATA MVC-データ、UI/HTML、XHTML、ファイル、テンプレートなど。

1
Eitan Revach

Asp.Net MVCは、ビューとデータの両方を返すWebアプリケーションの作成に使用されますが、Asp.Net Web APIは、ビューではなくデータのみを返す簡単でシンプルな方法で本格的なHTTPサービスを作成するために使用されます。

Web APIは、.NET Frameworkを介したREST-fulサービスの構築を支援し、コンテンツネゴシエーションもサポートします(クライアントが受け入れられる最適な応答形式データを決定することです。JSON、XML、 MVCで。

また、Web APIは、リクエストのAcceptヘッダーに基づいてJSON、XML、またはその他のような特定の形式でデータを返す処理を行いますが、心配する必要はありません。 MVCは、JsonResultを使用してJSON形式でのみデータを返します。

0
Nikhil Fegade