152 votes

ASP.NET WebApi contre MVC?

Avec les contrôleurs ASP.NET MVC, vous pouvez exposer vos données dans différents formats. AspNetWebAPI est conçu explicitement pour créer des API mais je peux facilement le faire avec les contrôleurs MVC, il n’est pas clair pour moi dans quels cas cela serait préférable aux contrôleurs MVC traditionnels. Je m'intéresse aux scénarios où les avantages de WebApi sont évidents et où il serait utile d'ajouter une autre couche de complexité à mes applications.

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

1 votes

13 votes

C'est drôle pour moi à quel point ces questions "vs" sont soit immédiatement fermées, soit montent à ce niveau de votes favorables.

15 votes

Grrr. Je déteste ces bannières "fermé comme trop large". Tellement de fois je trouve de grandes questions comme celle-ci. Et plus souvent qu'autrement, elles ont également de grandes réponses. Alors, et alors s'il est trop large. Les experts sont juste ici et pas sur Wikipédia ou un autre forum. Alors laissez-les faire leur travail et sortez de leur chemin.

51voto

ElYusubov Points 4165

WebApi permet de créer des services pouvant être exposés via HTTP plutôt que par le biais d'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 véritable citoyen Http de première classe.

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

Un lien pertinent de comparaison, discussions et tutoriels:

entrez la description de l'image ici

21 votes

Ne soyez pas d'accord que l'autre post est similaire. L'autre post parle en réalité de WCF vs WebAPI.

0 votes

Techniquement, il est dit WCF Web API, cependant le message mentionne à la deuxième ligne qu'il est fusionné dans Asp.net web api maintenant et prend en charge l'auto-hébergement. J'ai de toute façon mis à jour le lien avec une version plus récente. J'espère que cela aidera.

0 votes

Mise à jour des références.

24voto

Paolo del Mundo Points 1441

WebAPI crache OData, donc vous bénéficiez de tous les avantages d'utiliser OData. 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.
  • Standardisation du format
    • Il existe des clients OData qui comprendront le format sous-jacent de votre API RESTful.

6 votes

Plutôt. JE PEUX soutenir oData, mais seulement si vous décorez l'action avec l'attribut 'queryable', du moins à partir de la RC.

21voto

curiousBoy Points 569

Asp.Net Web API VS Asp.Net MVC entrer la description de l'image ici 1. Asp.Net MVC est utilisé pour créer des applications Web qui renvoient à la fois vues et données, mais Asp.Net Web API est utilisé pour créer des services HTTP complets avec une manière facile et simple qui ne renvoie que des données, pas de vues.

2. Web API aide à construire des services RESTful sur le framework .NET et prend également en charge la négociation de contenu (il s'agit de décider du meilleur format de réponse des données pouvant être accepté par le client. cela peut être JSON, XML, ATOM ou d'autres données formatées), l'auto-hébergement qui n'est pas dans MVC.

3. Web API se charge également de renvoyer des données dans un format spécifique tel que JSON, XML ou tout autre en fonction de l'en-tête Accept dans la demande et vous n'avez pas à vous en soucier. MVC ne retourne que des données au format JSON en utilisant JsonResult.

4. Dans Web API, les requêtes sont mappées aux actions en fonction des verbes HTTP mais dans MVC, elles sont mappées aux noms d'actions.

5. Asp.Net Web API est un nouveau framework et fait partie du framework ASP.NET principal. La liaison de modèle, les filtres, le routage et autres fonctionnalités MVC présentes dans Web API sont différentes de celles dans MVC et existent dans le nouvel assembly System.Web.Http. Dans MVC, ces fonctionnalités existent dans System.Web.Mvc. Par conséquent, Web API peut également être utilisé avec Asp.Net et comme une couche de service autonome.

6. Vous pouvez mélanger les contrôleurs Web API et MVC dans un seul projet pour gérer des demandes AJAX avancées qui peuvent renvoyer des données au format JSON, XML ou tout autre format et construire un service HTTP complet. Généralement, cela sera appelé auto-hébergement de Web API.

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

8. De plus, Web API est une architecture légère et en plus de l'application Web elle peut également être utilisée avec des applications pour smartphones.

La source originale se trouve ici

15voto

Mysterion Points 363

Similarités

  1. both hérite de ihttphandler pour la asyncrequest donc en gros apicontroller ou mvc controller sont tous les deux l'enveloppe autour du web.http

Différences:

  1. Le contrôleur MVC est très lourd si vous pouvez parcourir sa définition vous pouvez voir combien d'interfaces et de code de base il a utilisé, web API est un contrôleur plus léger et distingue la requête par ses paramètres passés (oui nous pouvons le changer aussi!)

  2. Le contrôleur MVC a trop de fonctionnalités comme retourner des vues, des résultats d'actions, des résultats de javascript, etc mais en web API a soit du JSON soit du XML.

  3. L'API est destinée à implémenter des services Restful (GET, POST, PUT, DELETE, OPTIONS) qui peuvent être hébergés de manière indépendante n'importe où sans dépendre des vues, le contrôleur MVC ne peut pas prendre en charge cela car il est étroitement intégré aux vues.

14voto

What-About-Bob Points 619

À un moment donné, vous pourriez vouloir oublier complètement ASP.NET MVC. Si vous êtes un développeur .NET mais que vous voulez construire une application à page unique (en utilisant Angular par exemple), vous voudrez les avantages d'un service RESTful (WebAPI) sans tout le bloat inutile qui vient avec ASP.NET MVC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X