ASP.NET WebApi対MVC?[閉まっている]


141

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

質問: MVCに関してasp.net WebApiを使用する利点と欠点は何ですか?



11
これらの「対」の質問がどれほどランダムにすぐに閉じられるか、このレベルの賛成票に上がるかは、私にとっては面白いです。
cbmeeks 2016

10
うん。私はそれらの「あまりにも堅いので閉ざされた」バナーを嫌います。何度もこのような素晴らしい質問を見つけます。そして、多くの場合、彼らは素晴らしい答えも持っていません。それで、それが広すぎる場合はどうでしょう。エキスパートはここにあり、ウィキペディアや他のフォーラムにはありません。だから、彼らに自分のことをさせて、邪魔にならないようにしましょう。
nharrer

回答:


47

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

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

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

ここに画像の説明を入力してください


20
他の投稿も同様であることに同意しません。もう1つの投稿は、実際にはWCFとWebAPIに関するものです。
Shane Courtrille、2014年

技術的にはWCF Web APIと書かれていますが、2行目には、Asp.net Web APIに統合され、セルフホスティングをサポートしていることが投稿で言及されています。とにかく、最近のリンクでリンクを更新しました。お役に立てれば幸いです。
Yusubov

リファレンスを更新しました。
ユスボフ2017年

23

WebAPIはODataを吐き出すため、ODataを使用することのすべての利点が得られます。たとえば、WebAPIでは次のようになります。

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

5
ちょっと。私はoDataをサポートできますが、少なくともRCの時点で 'queryable'属性を使用してアクションを装飾する場合のみです。
EBarr

14

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

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

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

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

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

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

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

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

元のソースはこちら


13

類似点

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コントローラーはビューと緊密に統合されているため、それをサポートできません。


1
それでも、JSONResultなどのmvcアクション結果を使用して、MVCで動作のようなAPIを実行できることは注目に値します。ただし、指摘したように、MVCコントローラーは重いです。また、Web APIコントローラーの実装方法は、MVCよりもAPIの作成に役立ちます。
Grizzly Peakソフトウェア

12

この画像は、問題の方法の違いと類似点を示しているようです。お役に立てれば幸いです。

ここに画像の説明を入力してください


10

ある時点で、ASP.NET MVCをまとめて忘れたい場合があります。.NET開発者であるが、(たとえばAngularを使用して)単一ページアプリケーションを構築したい場合は、ASP.NET MVCに付随する不必要な肥大化のないRESTfulサービス(WebAPI)の利点が必要になります。


5

ASP.NET MVCとASP.NET Web APIの両方が異なる目的で使用されている

ASP.NET

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

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

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


3

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

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


2

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

Web APIは、.NET Frameworkを介してRESTフルサービスを構築するのに役立ち、コンテンツネゴシエーションもサポートします(これは、クライアントが受け入れることができる最良の応答フォーマットデータを決定することです。JSON、XML、セルフホスティングではないMVCで。

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


1

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

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

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

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

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