Web-API-Controller können in jeder ASP.NET-Anwendung erstellt und gehostet werden, nicht nur in MVC-Anwendungen. Ein offensichtlicher Grund für die Erstellung einer Web-API ist daher, dass Sie kein MVC-Front-End haben (z. B. klassische, von Ihrem Unternehmen / Ihrer Organisation gehostete RESTful-Webdienste).
MVC-Controller basieren normalerweise auf dem MVC-Framework. Wenn Sie sich die Standardvorlagen und den größten Teil der Arbeit der Community und Ihrer Kollegen ansehen, werden Sie feststellen, dass fast alle MVC-Controller unter Berücksichtigung der Ansicht implementiert sind.
Persönlich verwende ich MVC-Controller, wenn ich mit View () antworten möchte, und ich verwende eine Web-API für alles, was nicht von einer bestimmten Ansicht abhängig ist.
Natürlich gibt es einige Einschränkungen, aber wenn Sie das Modellbindungsverhalten von MVC nicht benötigen, Ihr Dienst datenzentriert ist und die Vorgänge datenzentriert sind (z. B. CRUD-Vorgänge), möchten Sie wahrscheinlich einen Web-API-Controller 'anstelle eines' Model-View Controllers '. Umgekehrt benötigen Sie stattdessen einen MVC-Controller, wenn Ihre Vorgänge auf die Ansicht ausgerichtet sind (z. B. dem Benutzer eine Benutzeradministrationsseite bereitstellen) oder wenn Sie die Modellbindung von MVC benötigen, um "Ajax-Partials" zu generieren (sehr unwahrscheinlich).
Persönlich verwende ich Web-API-Controller, um JSON-basierte RESTful-Clients zu steuern. Ich verwende MVC-Controller, um das grundlegende Browser-Routing und die Bereitstellung des SPA zu verwalten.