ASP.NET WebApi vs MVC? [fermé]

140

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, ce n'est pas clair pour moi dans quels cas ce serait mieux que les contrôleurs MVC traditionnels. Je m'intéresse aux scénarios où les avantages de WebApi sont évidents et il serait intéressant 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?

Hugo Zapata
la source
11
C'est drôle pour moi à quel point ces questions «vs» sont aléatoires, soit se clôturent immédiatement, soit atteignent ce niveau de votes positifs.
cbmeeks
10
Grrr. Je déteste ces bannières "fermées comme trop brutes". Tant de fois, je trouve de grandes questions comme celle-ci. Et le plus souvent, ils ont également d'excellentes réponses. Alors que faire si c'est trop large. Les experts sont ici et non sur wikipedia ou sur un autre forum. Alors laissez-les faire leur truc et s'écarter du chemin.
nharrer

Réponses:

47

WebApi permet de créer des services qui peuvent ê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 véritable citoyen Http de première classe.

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

Un lien pertinent de comparaison, de discussions et de tutoriels:

entrez la description de l'image ici

Yusubov
la source
20
Je ne suis pas d'accord pour dire que l'autre poste est similaire. L'autre article concerne en fait WCF vs WebAPI.
Shane Courtrille
Techniquement parlant, il indique l'API Web WCF, mais la publication mentionne sur la deuxième ligne qu'elle est maintenant fusionnée dans l'API Web Asp.net et prend en charge l'auto-hébergement. J'ai quand même mis à jour le lien avec un plus récent. J'espère que cela aidera.
Yusubov
Mise à jour des références.
Yusubov
23

WebAPI crache OData, de sorte que vous bénéficiez de tous les avantages de l'utilisation d'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.
Paolo del Mundo
la source
5
Sorte de. JE PEUX prendre en charge oData, mais seulement si vous décorez l'action avec l'attribut «interrogeable», au moins à partir du RC.
EBarr
14

API Web Asp.Net VS Asp.Net MVC 1 . Asp.Net MVC est utilisé pour créer des applications Web qui retournent à la fois des vues et des données, mais l'API Web Asp.Net est utilisée pour créer des services HTTP complets avec un moyen simple et simple qui ne renvoie que les données et non les vues.entrez la description de l'image ici

2 . L'API Web aide à créer des services REST-ful sur le .NET Framework et prend également en charge la négociation de contenu (il s'agit de décider du meilleur format de données de réponse qui pourrait être acceptable par le client. Il peut s'agir de JSON, XML, ATOM ou d'autres données formatées ), auto-hébergement qui ne sont pas dans MVC.

3 . L'API Web prend également en charge le retour des données dans un format particulier tel que JSON, XML ou tout autre basé sur l'en-tête Accept dans la requête et vous ne vous inquiétez pas à ce sujet. MVC renvoie uniquement des données au format JSON à l'aide de JsonResult.

4 . Dans l'API Web, la demande est mappée aux actions basées sur les verbes HTTP, mais dans MVC, elle est mappée au nom des actions.

5 . L'API Web Asp.Net est un nouveau framework et fait partie du framework ASP.NET principal. La liaison de modèle, les filtres, le routage et d'autres fonctionnalités MVC existant dans l'API Web sont différents de MVC et existent dans le nouvel assembly System.Web.Http. Dans MVC, ces fonctionnalités existent avec dans System.Web.Mvc. Par conséquent, l'API Web peut également être utilisée avec Asp.Net et en tant que couche de service autonome.

6 . Vous pouvez mélanger l'API Web et le contrôleur MVC dans un seul projet pour gérer les requêtes AJAX avancées qui peuvent renvoyer des données au format JSON, XML ou tout autre format et créer un service HTTP complet. En général, cela s'appellera l'auto-hébergement d'API Web.

7 . Lorsque vous avez mélangé MVC et un contrôleur d'API Web et que vous souhaitez implémenter l'autorisation, vous devez créer deux filtres, un pour MVC et un autre pour l'API Web, car les deux sont différents.

8 . De plus, l'API Web est une architecture légère et, à l'exception de l'application Web, elle peut également être utilisée avec des applications de téléphone intelligent.

La source originale est ici

curieux
la source
13

Similitudes

1) les deux héritent de ihhtphandler pour l'asyncrequest, donc essentiellement apicontroller ou mvc controller sont tous les deux le wrapper autour du Web.

Différences: 1) le contrôleur mvc est très lourd si vous pouviez passer par sa définition, vous pouvez voir combien d'interfaces et le code de base il a utilisé, l'api Web est un contrôleur plus léger et distingue la demande par ses paramètres passés (oui, nous pouvons le changer aussi! )

2) Le contrôleur MVC a trop de fonctionnalités telles que le retour de vues, le résultat de l'action, le résultat javascript, etc., mais dans l'API Web, il contient soit JSON, soit XML

3) L'API sert à implémenter des services Restful (obtenir, publier, mettre, supprimer, options) qui peuvent indépendamment héberger n'importe où sans les vues dépendantes, le contrôleur MVC ne peut pas prendre en charge cela car il est étroitement intégré aux vues.

LostCoder
la source
1
Il est intéressant de noter que vous pouvez toujours accomplir un comportement de type API avec MVC en utilisant des résultats d'action mvc comme JSONResult, etc. Cependant, comme vous l'avez souligné, le contrôleur MVC est plus lourd. De plus, la façon dont les contrôleurs d'API Web sont implémentés est plus propice à la création d'une API que MVC.
Logiciel Grizzly Peak
12

Cette image semble montrer les différences et les similitudes dans la façon dont la matière. J'espère que cette aide est intéressante pour moi.

entrez la description de l'image ici

BehrouzMoslem
la source
10

À 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 à page unique (en utilisant Angular par exemple), vous souhaiterez profiter des avantages d'un service RESTful (WebAPI) sans tous les ballonnements inutiles fournis avec ASP.NET MVC.

Quoi-sur-Bob
la source
5

ASP.NET MVC et l'API Web ASP.NET les deux utilisent à des fins différentes

ASP.NET

ASP.NET propose trois cadres pour la création d'applications Web: Web Forms, ASP.NET MVC et pages Web ASP.NET. 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 cadre que vous choisissez, vous bénéficierez de tous les avantages et fonctionnalités d'ASP.NET partout.

Chaque framework cible un style de développement différent. Celui que vous choisissez dépend de la combinaison de vos ressources de programmation (connaissances, compétences et expérience de 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 frameworks seront pris en charge, mis à jour et améliorés dans les futures versions d'ASP.NET.

MVC

ASP.NET MVC vous offre un moyen puissant et basé sur des modèles de créer des sites Web dynamiques qui permet une séparation nette des préoccupations et qui vous donne un contrôle total sur le 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 pour créer des applications sophistiquées qui utilisent les dernières normes Web.

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 créer des 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

Codeur
la source
3

ASP.NET MVC se concentre sur la simplification de la sortie HTML. L'API Web ASP.NET vise à faciliter la sortie des données brutes.

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

Murugesan Nataraj
la source
2

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

L'API Web aide à créer des services REST sur le .NET Framework et prend également en charge la négociation de contenu (il s'agit de décider du meilleur format de réponse que le client pourrait accepter. Cela peut être JSON, XML, auto-hébergement qui ne le sont pas. dans MVC.

L'API Web prend également en charge le retour des données dans un format particulier tel que JSON, XML ou tout autre basé sur l'en-tête Accept dans la requête et vous ne vous inquiétez pas à ce sujet. MVC renvoie uniquement des données au format JSON à l'aide de JsonResult.

Nikhil Fegade
la source
1

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

WebAPI simplifie à coup sûr la façon dont nous pouvons créer des services de données. C'est propre et facile à cet effet. MVC est livré avec d'autres outils.

MVC peut générer n'importe quelle sortie que WebAPI peut générer. La génération de sorties à partir de modèles peut être facilement réalisée dans MVC. Je ne trouve aucune raison de le faire dans WebAPI. Les développeurs PHP et les anciens programmeurs ASP peuvent connaître cette attitude du passé, où vous pouvez créer des fichiers HTML impliqués avec du code C # à l'intérieur.

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

Eitan Revach
la source