Unterschied zwischen MVC 5 Projekt und Web Api Projekt

Ich bin neu in ASP.NET MVC und Web API und versuche, die Grundlagen zu bekommen. AFAIK, wir haben Projektvorlagen in VS 2013, benannt als MVC , Web API und Both of them together .

Ich habe die Tutorials durchgelesen und gelernt, dass wir eine API erstellen können, indem wir MVC alleine und mit Web API Template verwenden.

Also, Was sind die Unterschiede zwischen diesen, basierend auf Architektur und Nutzung ?

Grundsätzlich ist ein Web API Controller ein MVC Controller, der anstelle von ActionResponse HttpMessageResponse als Basistyp seiner Antwort ActionResponse . In den meisten anderen Punkten sind sie gleich. Der Hauptunterschied zwischen den Projekttypen besteht darin, dass der Projekttyp ” MVC Application ” webspezifische Elemente wie Standard- CSS , JavaScript Dateien und andere für eine Website benötigte Ressourcen hinzufügt, die für eine API nicht benötigt werden.

MVC wird zum Erstellen von Websites verwendet. In diesem Fall geben Controllers Regel eine View (dh HTML-Antwort) an Browser-Anfragen zurück. Auf der anderen Seite werden Web-APIs normalerweise dazu verwendet, von anderen Anwendungen konsumiert zu werden. Wenn Sie anderen Anwendungen den Zugriff auf Ihre Daten / functionen ermöglichen möchten, können Sie eine Web-API erstellen, um diesen Zugriff zu erleichtern. Zum Beispiel hat Facebook eine API, um es App-Entwicklern zu ermöglichen, auf Informationen über Benutzer zuzugreifen, die die App verwenden. Web-APIs müssen nicht öffentlich genutzt werden. Sie können auch eine API erstellen, um Ihre eigenen Anwendungen zu unterstützen. Zum Beispiel haben wir eine Web-API zur Unterstützung der AJAX-functionalität unserer MVC-Website erstellt.

Microsoft hat die Darstellung der verschiedenen Vorlagen geändert. Anstatt unterschiedliche Vorlagen für verschiedene Projekttypen zu verwenden, ermutigen sie Entwickler, ASP.NET-Technologien innerhalb des gleichen Projekts zu mischen. Microsoft nennt dies vNext .

UPDATE: Für ASP.NET Core wurde die Web-API in den MVC 6-Projekttyp und die ApiController class in die Controller class integriert. Weitere Informationen unter: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Meine zwei Cent…

  1. In ASP.Net MVC – der MVC- Controller entscheidet, was sollte die View – dh der Controller entscheidet, was der Benutzer “sehen” sollte (basierend auf dem aktuellen Szenario oder Kontext), wenn sie eine Anfrage stellen.
  2. In ASP.Net Web Forms entscheiden die ASPX Seiten, was der Benutzer “sehen” soll, wenn er eine Anfrage stellt.
  3. Aber in der Web-API gibt es keine Kontrolle / Macht zu irgendwelchen der Web-API-functionen, um zu entscheiden, was der Benutzer “sehen” sollte, wenn sie eine Anfrage stellen.

Web-API ist keine Technologie, die nur mit Websites verbunden ist. Es kann für mehrere Zwecke verwendet werden – nicht nur Websites. Es kennt also nicht die Bedeutung von rendering

Weiterführende Literatur

  1. Planung von Weblösungen heute: Web Forms, ASP.NET MVC, Web API und OWIN.
  2. WCF- oder ASP.NET-Web-APIs? Meine zwei Cent zum Thema
  3. Die nächste Generation von .NET – ASP.NET vNext
  4. Erste Schritte mit ASP.NET MVC 6

MVC-Controller von der Controller-class abgeleitet. In Mvc können Sie Ansichten zurückgeben. Mvc achitecture verwendet, um eine Anwendung zu erstellen. Web-Apis werden jedoch verwendet, um Daten für verschiedene Anwendungen bereitzustellen.

Web Api fährt vom Api-Controller und gibt die Ansicht nicht zurück.

Hinweis: Sie können auch Web-API vom MVC-Controller aus erstellen, müssen aber das Ergebnis als JsonResult oder andere Web-API-unterstützte Rückgabetypen zurückgeben.

Zusätzlich zu den Antworten, die hier bereits angegeben wurden, kann es einen Controller geben, der von ApiController erbt und eine Aktion mit dem Http-Verb POST hat, nur einen [FromBody] Eingabeparameter haben. Bei Verwendung eines MVC-Controllers (abgeleitet von “Controller”) können Sie viele Post-Input-Parameter haben.