Différence entre le projet MVC5 et le projet D'Api Web

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

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

donc, quelles sont les différences entre ceux-ci, basé sur Architecture et Utilisation ?

128
demandé sur loop 2014-03-23 13:51:05

4 réponses

essentiellement, un Web API contrôleur est un MVC contrôleur, qui utilise HttpMessageResponse comme le 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 type de projet MVC Application ajoute des choses spécifiques au web comme par défaut CSS , JavaScript fichiers et autres ressources nécessaires pour un site web, qui ne sont pas nécessaires pour une API.

MVC est utilisé pour la création de sites web. Dans ce cas, Controllers renvoie habituellement un View (c.-à-d. une réponse HTML) aux requêtes du navigateur. En revanche, les API Web sont généralement conçues pour être consommées par d'autres applications. Si vous voulez permettre à d'autres applications d'accéder à vos données / fonctionnalité, vous pouvez créer une API Web pour faciliter cet accès. Par exemple, Facebook a 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 à être consommées par le public. 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. Maintenant, au lieu d'utiliser différents modèles pour différents types de projets, ils encouragent les développeurs à mélanger ASP.NET technologies à l'intérieur du même projet selon les besoins. Microsoft appelle cela vNext .

UPDATE: pour ASP.NET Core, L'API Web a été intégrée dans le type de projet MVC 6 et la classe ApiController est consolidée dans la classe Controller . Plus de détails à: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

170
répondu Elad Lachmi 2016-07-21 11:08:01

mes deux cents...

  1. In ASP.Net MVC - le MVC Controller décide ce qui doit être le View - c'est-à-dire que le contrôleur décide ce que l'utilisateur doit" voir " (basé sur le scénario ou le contexte actuel), quand il fait une requête.
  2. In ASP.Net les formulaires web , les pages ASPX déterminent ce que l'utilisateur doit "voir" lorsqu'il présente une demande.
  3. But dans Web API , il n'y a aucun contrôle/puissance à aucune des fonctionnalités de L'API Web pour décider ce que l'utilisateur devrait "voir" quand ils font 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 des sites web. Donc il ne connaît pas le sens de rendering

Autre Lecture

  1. planification Web Solutions Today: formulaires Web, ASP.NET MVC, API Web, et OWIN.
  2. WCF or ASP.NET APIs Web? Mes deux cents sur le sujet
  3. The Next Generation of .NET – ASP.NET vNext
  4. pour commencer ASP.NET MVC 6
66
répondu Lijo 2016-07-11 15:25:52

MVC controller dérivé de la classe controller. Dans Mvc vous pouvez retourner des vues. Mvc Architecture utilise pour créer une application. Toutefois, les API Web sont utilisées pour fournir des données à diverses applications.

les lecteurs D'Api Web du contrôleur D'Api et il ne renvoie pas la vue.

Note: Vous pouvez également créer une Api Web à partir du contrôleur MVC, mais vous devez retourner le résultat comme JsonResult ou d'autres types de retour pris en charge par l'api web.

0
répondu Akshay Kapoor 2018-04-11 10:27:19

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 Post de verbe Http ne peut avoir qu'un seul paramètre d'entrée [FromBody]. Si vous utilisez un controller MVC (dérivé de' Controller'), vous pouvez avoir de nombreux paramètres d'entrée post.

0
répondu barrypicker 2018-05-11 18:38:19