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?
asp.net-mvc
asp.net-web-api
Hugo Zapata
quelle
quelle
Antworten:
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
ApiController
Klasse wird in derController
Klasse konsolidiert . Weitere Informationen finden Sie unter : https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6Ein relevanter Link für Vergleiche, Diskussionen und Tutorials:
quelle
WebAPI spuckt OData aus, sodass Sie alle Vorteile der Verwendung von OData nutzen können. Mit WebAPI erhalten Sie beispielsweise:
quelle
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.
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
quelle
Ä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.
quelle
Dieses Bild scheint die Unterschiede und Ähnlichkeiten in der Art und Weise zu zeigen. Ich hoffe das hilft ist interessant für mich.
quelle
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.
quelle
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
quelle
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
quelle
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.
quelle
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.
quelle