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

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

J’ai parcouru les didacticiels et j’ai appris que nous pouvions créer une API en utilisant MVC seul et avec Web API Template.

Alors, quelles sont les différences entre celles-ci, basées sur l’ architecture et l’ utilisation ?

Fondamentalement, un contrôleur d’ Web API est un contrôleur MVC , qui utilise HttpMessageResponse comme type de base de sa réponse, au lieu d’ ActionResponse . Ils sont les mêmes dans la plupart des autres domaines. La principale différence entre les types de projet est que le type de projet MVC Application ajoute des éléments spécifiques au Web, tels que JavaScript fichiers CSS et JavaScript par défaut et les autres ressources nécessaires à un site Web, qui ne sont pas nécessaires pour une API.

MVC est utilisé pour créer des sites Web. Dans ce cas, les Controllers renvoient généralement une View (à savoir 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 souhaitez autoriser d’autres applications à accéder à vos données / fonctionnalités, vous pouvez créer une API Web pour faciliter cet access. 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 ne doivent pas nécessairement ê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 les fonctionnalités 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 à combiner les technologies ASP.NET au sein du même projet en fonction des besoins. Microsoft appelle cette vNext .

MISE À JOUR: Pour ASP.NET Core, l’API Web a été intégrée au type de projet MVC 6 et la classe ApiController est consolidée dans la classe Controller . Plus de détails sur: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Mes deux centimes…

  1. Dans ASP.Net MVC – le Controller du MVC décide quelle doit être la View – c.-à-d. Que le contrôleur décide de ce que l’utilisateur doit «voir» (en fonction du scénario ou du contexte actuel), lorsqu’il émet une demande.
  2. Dans ASP.Net Web Forms , les pages ASPX déterminent ce que l’utilisateur doit «voir» lorsqu’elles font une demande.
  3. Mais dans l’ API Web , il n’existe aucun contrôle ou pouvoir sur les fonctionnalités de l’API Web pour décider de ce que l’utilisateur doit «voir» lorsqu’il fait une demande.

L’API Web n’est PAS une technologie liée à des sites Web uniquement. Il peut être utilisé à des fins multiples – pas seulement sur des sites Web. Donc, il ne connaît pas le sens du rendering

Lectures complémentaires

  1. Planification de 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 nouvelle génération de .NET – ASP.NET vNext
  4. Premiers pas avec ASP.NET MVC 6

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

Web Api pilote depuis le contrôleur Api et ne renvoie pas de vue.

Remarque: Vous pouvez également créer Web Api à partir du contrôleur MVC, mais vous devez retourner le résultat sous JsonResult ou d’autres types de retour pris en charge par Web Api.

Outre les réponses déjà fournies, il convient de noter que tout contrôleur héritant 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 parameters de post-entrée.