web-dev-qa-db-fra.com

ASP.NET WebApi vs MVC?

Avec les contrôleurs ASP.NET MVC, vous pouvez exposer vos données dans différents formats. AspNetWebAPI est conçu explicitement pour la création d'API, mais je peux facilement le faire avec des contrôleurs MVC. Je ne vois pas très bien dans quels cas il serait préférable aux contrôleurs MVC traditionnels. Je m'intéresse aux scénarios dans lesquels les avantages de WebApi sont évidents et il serait utile d'ajouter une couche de complexité supplémentaire à mes applications.

Question: / Quels sont les avantages et/ou les inconvénients de l’utilisation de asp.net WebApi par rapport à MVC?

126
Hugo Zapata

WebApi permet de créer des services pouvant être exposés via HTTP plutôt que via un service formel tel que WCF ou SOAP. Une autre différence réside dans la manière dont WebApi utilise le protocole HTTP et en fait un citoyen de première classe en HTTP.

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

Un lien pertinent de comparaison, discussions et tutoriels: 

 enter image description here

40
EL Yusubov

WebAPI crache OData pour que vous profitiez de tous les avantages de son utilisation. Par exemple, avec WebAPI, vous obtenez:

  • Options de requête telles que $ filter, $ top, $ orderby, etc. .
    • Avec les contrôleurs MVC traditionnels, vous devez les implémenter vous-même.
  • Normalisation du format
    • Certains clients OData comprendront le format sous-jacent de votre API RESTful.
20
Paolo del Mundo

Similitudes

1) les deux héritent de ihhtphandler pour la requête asynchrone, donc fondamentalement, apicontroller ou le contrôleur mvc sont tous les deux le wrapper autour du web. 

Différences: 1) Le contrôleur mvc est très lourd. Si vous pouvez consulter sa définition, vous pouvez voir le nombre d’interfaces et le code de base qu’elle a utilisés, l’API Web est un contrôleur plus léger et distinguer la requête par ses paramètres passés ça aussi!) 

2) Le contrôleur MVC a trop de fonctionnalités comme retourner des vues, un résultat d'action, un résultat javascript, etc., mais dans l'API Web, il a soit JSON, soit XML. 

3) L’API est destinée à l’implémentation de services Restful (get, post, put, delete, options) pouvant héberger indépendamment n’importe où, sans la dépendance des vues, le contrôleur MVC ne peut pas supporter cela car il est étroitement intégré aux vues.

11
LostCoder

API Web Asp.Net VS Asp.Net MVC enter image description here 1. Asp.Net MVC est utilisé pour créer des applications Web qui renvoient les deux Vues et données, mais l’API Web Asp.Net est utilisée pour créer un HTTP .__ complet. services avec un moyen simple et simple qui renvoie uniquement les données non affichées.

2. L'API Web permet de créer des services REST-ful sur le .NET Framework et Il prend également en charge la négociation de contenu (il s'agit de choisir les meilleures données de format de réponse qui pourraient être acceptées par le client. Il pourrait s'agir de données JSON, XML, ATOM ou autres), hébergement autonome qui ne sont pas dans MVC.

3. L'API Web s'occupe également de renvoyer les données dans un format particulier comme JSON, XML ou tout autre type basé sur l'en-tête Accept de la requête et vous ne vous inquiétez pas pour ça. MVC ne renvoie que des données au format JSON en utilisant JsonResult.

4. Dans l'API Web, les demandes sont mappées aux actions basées sur les verbes HTTP mais dans MVC, il est associé au nom des actions.

5. L'API Web Asp.Net est une nouvelle infrastructure et fait partie du noyau ASP.NET cadre. La liaison de modèle, les filtres, le routage et autres MVC Les fonctionnalités existantes dans l'API Web sont différentes de MVC et existent dans le fichier nouvel ensemble System.Web.Http. Dans MVC, ces fonctionnalités existent avec in System.Web.Mvc. Par conséquent, Web API peut également être utilisé avec Asp.Net et en tant que couche de service autonome.

6. Vous pouvez combiner une API Web et un contrôleur MVC dans un seul projet pour gérer demandes avancées AJAX pouvant renvoyer des données au format JSON, XML ou n’importe quel fichier les autres formateront et créeront un service HTTP complet. Typiquement, ce sera appelé auto-hébergement API Web.

7. Lorsque vous avez mélangé les contrôleurs MVC et Web API et que vous voulez Pour mettre en œuvre l'autorisation, vous devez créer deux filtres, l'un pour MVC et un autre pour Web API, car les deux sont différents.

8. De plus, les API Web sont des architectures légères et excepté le Web application, il peut également être utilisé avec des applications pour téléphones intelligents.

La source originale est ici

10
curiousBoy

À un moment donné, vous voudrez peut-être oublier ASP.NET MVC tous ensemble. Si vous êtes un développeur .NET mais que vous souhaitez créer une application à une seule page (en utilisant Angular, par exemple), vous souhaiterez bénéficier des avantages d'un service RESTful (WebAPI) sans tout le fardeau inutile fourni avec ASP.NET MVC.

10
What-About-Bob

Cette image semble montrer les différences et les similitudes dans le traitement de la question. J'espère que cela aide est intéressant pour moi.

 enter image description here

10
BehrouzMoslem

ASP.NET MVC et l’API Web ASP.NET qu’ils utilisent tous deux à des fins différentes

ASP.NET

ASP.NET propose trois frameworks pour créer des applications Web: Web Forms, ASP.NET MVC et ASP.NET Web Pages. Les trois frameworks sont stables et matures, et vous pouvez créer d'excellentes applications Web avec n'importe lequel d'entre eux. Quel que soit le framework que vous choisissez, vous bénéficierez de tous les avantages et fonctionnalités d’ASP.NET, où que vous soyez.

Chaque framework cible un style de développement différent. Celle que vous choisissez dépend de la combinaison de vos ressources de programmation (connaissances, compétences et expérience en développement), du type d’application que vous créez et de l’approche de développement avec laquelle vous êtes à l’aise. Les trois infrastructures seront prises en charge, mises à jour et améliorées dans les prochaines versions d’ASP.NET.

MVC

ASP.NET MVC vous offre un moyen puissant, basé sur des modèles, de créer des sites Web dynamiques qui permettent une séparation nette des problèmes et un contrôle total du balisage pour un développement agréable et agile. ASP.NET MVC comprend de nombreuses fonctionnalités qui permettent un développement rapide et convivial pour TDD afin de créer des applications sophistiquées utilisant les normes Web les plus récentes.

API Web

L'API Web ASP.NET est une infrastructure qui facilite la création de services HTTP qui atteignent un large éventail de clients, y compris les navigateurs et les appareils mobiles. L'API Web ASP.NET est une plate-forme idéale pour la création d'applications RESTful sur le .NET Framework.

vous pouvez lire plus de formulaire ici http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

4
Coder

ASP.NET MVC vise à faciliter la sortie du code HTML. L'API Web ASP.NET vise à faciliter la production de données brutes.

Dans le monde WebForms, ASP.NET MVC équivaudrait à des pages .aspx et l’API Web ASP.NET à .asmx.

2
Murugesan Nataraj

Généralement, WebAPI utilisé pour les services de données où MVC peut générer plus de types de sorties.

WebAPI simplifie assurément la manière dont nous pouvons créer des services de données . Il est propre et simple à cette fin . MVC est livré avec des outils supplémentaires.

MVC peut générer n'importe quelle sortie WebAPI peut générer une sortie . La génération de sorties à partir de modèles peut être facilement réalisée dans MVC. Je ne trouve pas de raison de le faire dans WebAPI. Les développeurs PHP et les anciens programmeurs ASP connaissent peut-être cette attitude du passé, dans laquelle vous pouvez créer des fichiers HTML contenant du code C #.

WebAPI-DATA MVC - DONNÉES, UI/HTML, XHTML, Fichiers, Modèles, etc.

1
Eitan Revach

Asp.Net MVC est utilisé pour créer des applications Web qui renvoient à la fois des vues et des données, mais l'API Web Asp.Net est utilisé pour créer des services HTTP complets avec un moyen simple et simple qui renvoie uniquement les données non vues.

L'API Web permet de créer des services REST-ful sur le .NET Framework et prend également en charge la négociation de contenu (il s'agit de choisir les meilleures données de format de réponse pouvant être acceptées par le client. Il peut s'agir de JSON, XML, d'hébergement autonome dans MVC.

L'API Web s'occupe également de renvoyer les données dans un format particulier, tel que JSON, XML ou tout autre type basé sur l'en-tête Accept de la requête et vous n'avez pas à vous en préoccuper. MVC renvoie uniquement les données au format JSON à l'aide de JsonResult.

0
Nikhil Fegade