ASP.NET WebApi gegen MVC? [geschlossen]

141

Mit ASP.NET MVC-Controllern können Sie Ihre Daten in verschiedenen Formaten verfügbar machen. AspNetWebAPI wurde explizit zum Erstellen von APIs entwickelt, aber ich kann das problemlos mit MVC-Controllern tun. Mir ist nicht klar, in welchen Fällen es besser wäre als herkömmliche MVC-Controller. Ich interessiere mich für Szenarien, in denen die Vorteile von WebApi offensichtlich sind und es sich lohnt, meinen Anwendungen eine weitere Komplexitätsebene hinzuzufügen.

Frage: Welche Vor- und / oder Nachteile hat die Verwendung von asp.net WebApi in Bezug auf MVC?

Hugo Zapata
quelle
11
Es ist lustig für mich, wie zufällig diese "vs" -Fragen entweder sofort geschlossen werden oder auf diese Stufe der Up-Votes klettern.
cbmeeks
10
Grrr. Ich hasse diese "geschlossenen als zu braunen" Banner. So oft finde ich solche tollen Fragen. Und meistens haben sie auch keine guten Antworten. Was ist, wenn es zu breit ist? Die Experten sind hier und nicht auf Wikipedia oder einem anderen Forum. Also lass sie ihr Ding machen und aus dem Weg gehen.
nharrer

Antworten:

47

Mit WebApi können Dienste erstellt werden, die über HTTP und nicht über einen formalen Dienst wie WCF oder SOAP verfügbar gemacht werden können. Ein weiterer Unterschied besteht in der Art und Weise, wie WebApi das HTTP-Protokoll verwendet und es zu einem wirklich erstklassigen HTTP-Bürger macht.

UPDATE: Die ASP.NET Core, Web-API wurde in den MVC-Projekttyp integriert. Die ApiControllerKlasse wird in der ControllerKlasse konsolidiert . Weitere Informationen finden Sie unter : https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Ein relevanter Link für Vergleiche, Diskussionen und Tutorials:

Geben Sie hier die Bildbeschreibung ein

Yusubov
quelle
20
Nicht einverstanden, dass der andere Beitrag ähnlich ist. Der andere Beitrag handelt eigentlich von WCF vs WebAPI.
Shane Courtrille
Technisch gesehen heißt es WCF Web API, in der zweiten Zeile wird jedoch erwähnt, dass es jetzt in Asp.net Web API zusammengeführt wird und Self-Hosting unterstützt. Ich habe den Link trotzdem mit einem neueren aktualisiert. Hoffe das wird helfen.
Yusubov
Die Referenzen wurden aktualisiert.
Yusubov
23

WebAPI spuckt OData aus, sodass Sie alle Vorteile der Verwendung von OData nutzen können. Mit WebAPI erhalten Sie beispielsweise:

  • Abfrageoptionen wie $ filter, $ top, $ orderby usw.
    • Bei herkömmlichen MVC-Controllern müssen Sie diese selbst implementieren.
  • Standardisierung des Formats
    • Es gibt OData-Clients, die das zugrunde liegende Format Ihrer RESTful-API verstehen.
Paolo del Mundo
quelle
5
Art von. Ich kann oData unterstützen, aber nur, wenn Sie die Aktion mit dem Attribut 'queryable' dekorieren, zumindest ab dem RC.
EBarr
14

Asp.Net Web API VS Asp.Net MVC 1 . Asp.Net MVC wird zum Erstellen von Webanwendungen verwendet, die sowohl Ansichten als auch Daten zurückgeben. Die Asp.Net-Web-API wird jedoch zum Erstellen vollständiger HTTP-Dienste auf einfache Weise verwendet, bei der nur Daten zurückgegeben werden, die keine Ansicht sind.Geben Sie hier die Bildbeschreibung ein

2 . Die Web-API hilft beim Erstellen von REST-fähigen Diensten über .NET Framework und unterstützt auch die Aushandlung von Inhalten (es geht darum, die besten Antwortformatdaten zu bestimmen, die vom Client akzeptiert werden können. Dies können JSON-, XML-, ATOM- oder andere formatierte Daten sein ), Selbsthosting, die nicht in MVC sind.

3 . Die Web-API kümmert sich auch um die Rückgabe von Daten in einem bestimmten Format wie JSON, XML oder einem anderen Format basierend auf dem Accept-Header in der Anforderung, und Sie machen sich darüber keine Sorgen. MVC gibt nur Daten im JSON-Format mit JsonResult zurück.

4 . In der Web-API werden die Anforderungen den Aktionen basierend auf HTTP-Verben zugeordnet, in MVC jedoch dem Aktionsnamen.

5 . Die Asp.Net-Web-API ist ein neues Framework und Teil des ASP.NET-Kernframeworks. Die Modellbindung, Filter, das Routing und andere MVC-Funktionen in der Web-API unterscheiden sich von MVC und sind in der neuen System.Web.Http-Assembly vorhanden. In MVC sind diese Funktionen in System.Web.Mvc vorhanden. Daher kann die Web-API auch mit Asp.Net und als eigenständige Serviceschicht verwendet werden.

6 . Sie können Web-API und MVC-Controller in einem einzigen Projekt mischen, um erweiterte AJAX-Anforderungen zu verarbeiten, die Daten in JSON-, XML- oder anderen Formaten zurückgeben und einen vollständigen HTTP-Dienst erstellen können. In der Regel wird dies als Web-API-Self-Hosting bezeichnet.

7 . Wenn Sie MVC und Web-API-Controller gemischt haben und die Autorisierung implementieren möchten, müssen Sie zwei Filter erstellen, einen für MVC und einen für Web-API, da beide unterschiedlich sind.

8 . Darüber hinaus ist die Web-API eine leichte Architektur und kann mit Ausnahme der Webanwendung auch mit Smartphone-Apps verwendet werden.

Originalquelle ist hier

neugierigBoy
quelle
13

Ähnlichkeiten

1) beide erben von ihhtphandler für die asynchrone Anfrage, so dass im Grunde genommen ein Apicontroller oder ein MVC-Controller der Wrapper um die web.http sind

Unterschiede: 1) Der MVC-Controller ist sehr schwer. Wenn Sie seine Definition durchgehen können, können Sie sehen, wie viele Schnittstellen und der Basiscode verwendet wurden. Die Web-API ist ein leichter Controller und unterscheidet die Anforderung durch die übergebenen Parameter (ja, wir können sie auch ändern! )

2) Der MVC-Controller verfügt über zu viele Funktionen, wie z. B. Ansichten, Aktionsergebnisse, Javascript-Ergebnisse usw. zurückgeben, in der Web-API jedoch entweder über JSON oder XML

3) Die API dient zur Implementierung von Restful-Diensten (Get, Post, Put, Delete, Options), die unabhängig voneinander gehostet werden können, ohne dass dies von den Ansichten abhängt. Der MVC-Controller kann dies nicht unterstützen, da er eng in die Ansichten integriert ist.

LostCoder
quelle
1
Es ist erwähnenswert, dass Sie mit MVC immer noch ein API-ähnliches Verhalten erzielen können, indem Sie MVC-Aktionsergebnisse wie JSONResult usw. verwenden. Wie Sie bereits betont haben, ist der MVC-Controller jedoch schwerer. Auch die Art und Weise, wie Web-API-Controller implementiert werden, ist für die Erstellung einer API günstiger als MVC.
Grizzly Peak Software
12

Dieses Bild scheint die Unterschiede und Ähnlichkeiten in der Art und Weise zu zeigen. Ich hoffe das hilft ist interessant für mich.

Geben Sie hier die Bildbeschreibung ein

BehrouzMoslem
quelle
10

Irgendwann möchten Sie vielleicht ASP.NET MVC alle zusammen vergessen. Wenn Sie ein .NET-Entwickler sind, aber eine Single-Page-Anwendung erstellen möchten (z. B. mit Angular), möchten Sie die Vorteile eines RESTful-Dienstes (WebAPI) ohne das unnötige Aufblähen von ASP.NET MVC nutzen.

Was ist mit Bob?
quelle
5

ASP.NET MVC und ASP.NET Web API verwenden beide für unterschiedliche Zwecke

ASP.NET

ASP.NET bietet drei Frameworks zum Erstellen von Webanwendungen: Web Forms, ASP.NET MVC und ASP.NET-Webseiten. Alle drei Frameworks sind stabil und ausgereift, und Sie können mit jedem von ihnen großartige Webanwendungen erstellen. Unabhängig davon, für welches Framework Sie sich entscheiden, erhalten Sie überall alle Vorteile und Funktionen von ASP.NET.

Jedes Framework zielt auf einen anderen Entwicklungsstil ab. Die Auswahl hängt von einer Kombination Ihrer Programmierressourcen (Kenntnisse, Fähigkeiten und Entwicklungserfahrung), der Art der von Ihnen erstellten Anwendung und dem Entwicklungsansatz ab, mit dem Sie vertraut sind. Alle drei Frameworks werden in zukünftigen Versionen von ASP.NET unterstützt, aktualisiert und verbessert.

MVC

ASP.NET MVC bietet Ihnen eine leistungsstarke, musterbasierte Möglichkeit zum Erstellen dynamischer Websites, die eine saubere Trennung von Bedenken ermöglicht und Ihnen die volle Kontrolle über Markups für eine unterhaltsame, agile Entwicklung gibt. ASP.NET MVC enthält viele Funktionen, die eine schnelle, TDD-freundliche Entwicklung ermöglichen, um anspruchsvolle Anwendungen zu erstellen, die die neuesten Webstandards verwenden.

Web-API

Die ASP.NET-Web-API ist ein Framework, mit dem sich auf einfache Weise HTTP-Dienste erstellen lassen, die eine breite Palette von Clients erreichen, einschließlich Browsern und Mobilgeräten. Die ASP.NET-Web-API ist eine ideale Plattform zum Erstellen von RESTful-Anwendungen auf .NET Framework.

Weitere Informationen finden Sie hier http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Differenz-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

Codierer
quelle
3

ASP.NET MVC konzentriert sich darauf, die Ausgabe von HTML zu vereinfachen. Die ASP.NET-Web-API konzentriert sich darauf, die Ausgabe von Rohdaten zu vereinfachen.

In der WebForms-Welt entspricht ASP.NET MVC ASPX-Seiten und ASP.NET-Web-API ASMX

Murugesan Nataraj
quelle
2

Asp.Net MVC wird zum Erstellen von Webanwendungen verwendet, die sowohl Ansichten als auch Daten zurückgeben. Die Asp.Net-Web-API wird jedoch zum Erstellen vollständiger HTTP-Dienste auf einfache Weise verwendet, bei der nur Daten zurückgegeben werden, die nicht angezeigt werden.

Die Web-API hilft beim Erstellen von REST-fähigen Diensten über .NET Framework und unterstützt auch die Aushandlung von Inhalten (es geht darum, die besten Antwortformatdaten zu ermitteln, die vom Client akzeptiert werden können. Dies können JSON, XML und Self-Hosting sein, die dies nicht sind in MVC.

Die Web-API kümmert sich auch um die Rückgabe von Daten in einem bestimmten Format wie JSON, XML oder einem anderen Format, das auf dem Accept-Header in der Anforderung basiert, und Sie machen sich darüber keine Sorgen. MVC gibt nur Daten im JSON-Format mit JsonResult zurück.

Nikhil Fegade
quelle
1

Normalerweise wird WebAPI für Datendienste verwendet, bei denen MVC mehr Arten von Ausgaben generieren kann.

WebAPI vereinfacht mit Sicherheit die Art und Weise, wie wir Datendienste erstellen können. Es ist sauber und einfach für diesen Zweck. MVC wird mit einigen weiteren Tools geliefert.

MVC kann jede Ausgabe generieren, die WebAPI ausgeben kann. Das Generieren von Ausgaben aus Vorlagen kann in MVC problemlos erreicht werden. Ich kann in WebAPI keinen Grund dafür finden. PHP-Entwickler und alte ASP-Programmierer kennen diese Einstellung möglicherweise aus der Vergangenheit, in der Sie HTML-Dateien mit C # -Code erstellen können.

WebAPI-DATA MVC - DATA, UI / HTML, XHTML, Dateien, Vorlagen usw.

Eitan Revach
quelle