it-swarm.com.de

Unterschied zwischen MVC 5 Project und Web Api Project

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

Ich habe die Tutorials durchgegangen und habe gelernt, dass wir eine API erstellen können, indem Sie MVC allein sowie mit der Web-API-Vorlage verwenden.

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

132
loop

Grundsätzlich ist ein Web API-Controller ein MVC-Controller, der HttpMessageResponse als Basistyp seiner Antwort anstelle von ActionResponse verwendet. Sie sind in den meisten anderen Bereichen gleich. Der Hauptunterschied zwischen den Projekttypen besteht darin, dass der Projekttyp MVC Application webspezifische Elemente wie standardmäßige CSS-, JavaScript-Dateien und andere für eine Website benötigte Ressourcen hinzufügt. 

MVC wird zum Erstellen von Websites verwendet. In diesem Fall gibt Controllers normalerweise eine View (d. H. HTML-Antwort) an Browseranfragen zurück. Web-APIs hingegen werden normalerweise für andere Anwendungen verwendet. Wenn Sie anderen Anwendungen den Zugriff auf Ihre Daten/Funktionen ermöglichen möchten, können Sie eine Web-API erstellen, um diesen Zugriff zu ermöglichen. Beispielsweise verfügt Facebook über eine API, mit der App-Entwickler auf Informationen zu Benutzern zugreifen können, die die App verwenden. Web-APIs müssen nicht für den öffentlichen Gebrauch bestimmt sein. Sie können auch eine API erstellen, um Ihre eigenen Anwendungen zu unterstützen. Wir haben beispielsweise eine Web-API zur Unterstützung der AJAX - Funktionalität unserer MVC-Website erstellt.

Microsoft hat die Darstellung der verschiedenen Vorlagen geändert. Anstatt verschiedene Vorlagen für unterschiedliche Projekttypen zu verwenden, werden Entwickler dazu angeregt, ASP.NET-Technologien nach Bedarf in demselben Projekt zu mischen. Microsoft nennt dies vNext.

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

175
Elad Lachmi

Meine zwei Cent...

  1. In ASP.Net MVC - die Controller des MVC entscheidet, welche View sein soll -, d. H. Der Controller entscheidet, was der Benutzer "sehen" soll (basierend auf dem aktuellen Szenario oder Kontext), wenn er eine Anforderung stellt.
  2. In ASP.Net Web Forms entscheiden die ASPX-Seiten, was der Benutzer bei einer Anfrage "sehen" soll.
  3. In Web API können jedoch keine Funktionen des Web API gesteuert werden, um zu entscheiden, was der Benutzer bei einer Anforderung "sehen" soll.

Die Web-API ist KEINE Technologie, die nur an Websites gebunden ist. Es kann für mehrere Zwecke verwendet werden - nicht nur für Websites. Es kennt also nicht die Bedeutung von rendering

Weiterführende Literatur

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

MVC-Controller von Controller-Klasse abgeleitet. In Mvc können Sie Ansichten zurückgeben. Mvc achitecture verwendet zum Erstellen einer Anwendung. Webapis werden jedoch verwendet, um Daten für verschiedene Anwendungen bereitzustellen.

Web Api fährt von einem Api-Controller, und es wird keine Ansicht zurückgegeben.

Hinweis: Sie können Web Api auch über den MVC-Controller erstellen. Das Ergebnis muss jedoch als von JsonResult oder anderen von Web Api unterstützte Rückgabetypen zurückgegeben werden. 

0
Akshay Kapoor

Zusätzlich zu den bereits gegebenen Antworten ist es erwähnenswert, dass alle Controller, die von ApiController erben und eine Aktion mit dem Http-Verb POST haben, nur einen Eingangsparameter [FromBody] haben. Bei Verwendung eines MVC-Controllers (abgeleitet von 'Controller') können Sie viele Nacheingabeparameter haben.

0
barrypicker