Différence entre le projet MVC 5 et le projet Web Api

135

Je suis nouveau dans ASP.NET MVC et API Web et j'essaie d'obtenir les bases. AFAIK, nous avons des modèles de projet dans VS 2013, nommés comme MVC, Web APIet Both of them together.

J'ai parcouru les tutoriels et appris que nous pouvons créer une API en utilisant MVC seul ainsi qu'avec un modèle d'API Web.

Alors, quelles sont les différences entre ceux-ci, en fonction de l' architecture et de l' utilisation ?

boucle
la source

Réponses:

182

Fondamentalement, un Web APIcontrôleur est un MVCcontrôleur, qui utilise HttpMessageResponsecomme type de base de sa réponse, au lieu de ActionResponse. Ils sont les mêmes à bien d'autres égards. La principale différence entre les types de projet est que le MVC Applicationtype de projet ajoute des éléments spécifiques au Web comme par défaut CSS,JavaScript fichiers et d'autres ressources nécessaires pour un site Web, qui ne sont pas nécessaires pour une API.

MVC est utilisé pour créer des sites Web. Dans ce cas, Controllersretournez généralement unView (réponse HTML) aux requêtes du navigateur. Les API Web, en revanche, sont généralement conçues pour être utilisées par d'autres applications. Si vous souhaitez autoriser d'autres applications à accéder à vos données / fonctionnalités, vous pouvez créer une API Web pour faciliter cet accès. Par exemple, Facebook dispose d'une API afin de permettre aux développeurs d'applications d'accéder aux informations sur les utilisateurs utilisant l'application. Les API Web n'ont pas besoin d'être destinées à la consommation publique. Vous pouvez également créer une API pour prendre en charge vos propres applications. Par exemple, nous avons créé une API Web pour prendre en charge la fonctionnalité AJAX de notre site Web MVC.

Microsoft a changé la façon dont ils présentent les différents modèles. Désormais, au lieu d'utiliser différents modèles pour différents types de projets, ils encouragent les développeurs à mélanger les technologies ASP.NET dans le même projet selon les besoins. Microsoft appelle cela vNext.

MISE À JOUR: pour ASP.NET Core, l'API Web a été intégrée dans le type de projet MVC 6 et la ApiControllerclasse est consolidée dans la Controllerclasse. Plus de détails sur: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Elad Lachmi
la source
1
Merci Elad je l'ai compris.Pouvez-vous modifier vos ans et ajouter quelque chose sur Asp.net Identity et Web Api 2 Juste quelques mots pour les utiliser et en bénéficier.
boucle
Donc, je ne peux en aucun cas accéder à une action du contrôleur à partir de l'application dektop. même si j'utilise la syntaxe GET appropriée pour appeler l'URL?
Incassable
70

Mes deux centimes...

  1. Dans ASP.Net MVC - le MVC Controllerdécide de ce qui devrait être le View- c'est-à-dire que le contrôleur décide ce que l'utilisateur doit «voir» (en fonction du scénario ou du contexte actuel), lorsqu'il fait une demande.
  2. Dans les formulaires Web ASP.Net , les ASPXpages déterminent ce que l'utilisateur doit «voir» lorsqu'il effectue une demande.
  3. Mais dans l' API Web , il n'y a aucun contrôle / pouvoir sur aucune des fonctionnalités de l'API Web pour décider ce que l'utilisateur doit «voir» lorsqu'il fait une demande.

L'API Web n'est PAS une technologie liée uniquement aux sites Web. Il peut être utilisé à des fins multiples - pas seulement pour des sites Web. Donc, il ne connaît pas la signification derendering

Lectures complémentaires

  1. Planification des solutions Web aujourd'hui: formulaires Web, ASP.NET MVC, API Web et OWIN.
  2. API Web WCF ou ASP.NET? Mes deux cents sur le sujet
  3. La prochaine génération de .NET - ASP.NET vNext
  4. Premiers pas avec ASP.NET MVC 6
LCJ
la source
Je ne peux pas dire à partir des codes comparés pourquoi WebAPI est plus lisible. De plus, il semble qu'il y ait quelque chose de retourné ici, car c'est l'API Web qui devrait avoir un attribut de méthode HTTP tel que [HttpGet]. Vérifiez quelques codes WebAPI (et WebAPI 2) ici
Gobe
2
La réponse acceptée déclare "Fondamentalement, un contrôleur API Web est un contrôleur MVC". C'est tout simplement faux. Votre réponse souligne que tout le POINT de WebAPI est qu'il N'EST PAS MVC, il n'a PAS à gérer tous les bagages et les frais généraux pour traiter les «vues» et le «rendu». ... et les contrôleurs WebApi n'ont même pas besoin d'être liés uniquement à des sites Web. Très bonne réponse - merci!
FoggyDay
0

Contrôleur MVC dérivé de la classe de contrôleur. Dans Mvc, vous pouvez renvoyer des vues. Mvc achitecture utilise pour créer une application. Cependant, les API Web sont utilisées pour fournir des données à diverses applications.

Web Api conduit à partir du contrôleur Api et ne renvoie pas de vue.

Remarque: vous pouvez également créer une API Web à partir du contrôleur MVC, mais vous devez renvoyer le résultat sous forme de JsonResult ou d'autres types de retour pris en charge par l'API Web.

Akshay Kapoor
la source
0

En plus des réponses déjà fournies ici, il vaut la peine de noter tout contrôleur qui hérite d'ApiController et ayant une action avec le verbe Http POST ne peut avoir qu'un seul paramètre d'entrée [FromBody]. Si vous utilisez un contrôleur MVC (dérivant de 'Controller'), vous pouvez avoir de nombreux paramètres de post-entrée.

barrypicker
la source