En quoi consiste exactement «API Web» dans ASP.Net MVC4?

15

Je sais ce qu'est une API Web.
J'ai écrit des API dans plusieurs langues (y compris dans MVC3).
Je suis également bien pratiqué dans ASP.Net.
Je viens de découvrir que MVC4 a une "API Web" et sans passer par les exemples vidéo, je ne trouve pas une bonne explication de ce que c'est exactement.
D'après mon expérience passée, les technologies Microsoft (en particulier ASP.Net) ont tendance à prendre un concept simple et à l'envelopper dans un tas de frais généraux inutiles qui sont censés rendre tout "plus facile".
Quelqu'un peut-il m'expliquer ce qu'est exactement l'API Web dans MVC4? Pourquoi en ai-je besoin? Pourquoi ne puis-je pas simplement écrire ma propre API?

James P. Wright
la source
3
Parlez-vous du nouveau framework Web API ? C'est distinct de MVC. Si c'est ce que vous voulez dire, jetez un œil à cet article de blog de Rick Strahl.
Oded
1
@Oded: Vous devriez mettre cela comme réponse.
James P. Wright
La chose la plus cool à propos de l'API Web (que je ne vois nulle part dans la réponse acceptée ou le lien ci-dessus) est que si vous renvoyez un IQueryable <> vos méthodes Web prennent automatiquement en charge la syntaxe de requête OData! - Dans la pile ASP.NET 4.5 générale, "l'API Web" et "SignalR" remplacent "WCF (je ne sais pas s'ils sont construits au-dessus de WCF ou non, mais WCF a été supprimé de tous les diagrammes et remplacé avec "Web API" et "SignalR").
BrainSlugs83
Why can't I just write my own API?Avec juste ASP.NET MVC normal? Vous pouvez. L'API Web ASP.NET MVC vous donne juste des bonus supplémentaires pour vous faciliter la tâche. Veuillez voir ci-dessous.
Jim G.

Réponses:

16

L'API Web ASP.NET est un framework "sans opinion" pour construire le service HTTP indépendamment de REST ou RPC. Il s'agit de la meilleure implémentation de RFC 2616 par Microsoft (spécification HTTP).

Certes, vous pouvez créer votre propre API, mais l'API Web ASP.NET:

  • Construit sur le modèle de la poupée russe qui permet d'ajouter des modules de type lego au pipeline HTTP
  • Rend le citoyen HTTP de première classe afin que tous les en-têtes courants soient fortement typés (pas seulement la valeur du nom) et aide à les analyser
  • Permet à la fois l'hébergement ASP.NET (IIS) ou l'auto-hébergement
  • prend en charge la négociation de contenu, les types de médias, ...
  • Async de haut en bas
  • Utilise une approche similaire pour les clients avec HttpClient
Aliostad
la source
6

La nouvelle API Web de Microsoft est, comme son nom l'indique, sur l'écriture d'API accessibles sur le Web, avec un penchant pour REST.

Rick Strahl a récemment blogué à ce sujet et a une bonne analyse sur le moment d'utiliser MVC vs Web API.

Des choses comme la négociation de contenu intégrée, plusieurs formats intégrés et plus encore.

Oded
la source
6

En bref: l' API Web ASP.NET fait de REST un citoyen de première classe dans .NET , que WCF n'était pas vraiment en mesure d'adopter. Comme vous le savez peut-être, l' API Web ASP.NET est un cadre for building web APIsau-dessus du .NET Framework.

L'une des plus grandes frustrations que nous ayons eues en tant que développeurs Web a été de faire face aux configurations infinies avec WCF. Je veux dire, WCF est génial mais n'a pas été adopté le REST depuis le framework API Web WCF . Il y avait quelque chose appelé REST Starter Kit, mais il s'est retrouvé mort.

Cependant, l'API Web ASP.NET est une infrastructure de nouvelle génération qui facilite la création de services HTTP qui atteignent un large éventail de clients, tels que les navigateurs et les appareils mobiles. Il s'agit d'une plate-forme idéale pour créer des applications RESTful sur le .NET Framework. Pour plus d'informations et d'excellents articles de blog, visitez la page des blogueurs de l'API Web ASP.NET

Yusubov
la source
1
Si vous recherchez l'histoire de l'API Web, elle a commencé dans WCF.
SASS_Shooter
Eh bien, il s'agit d'un remplacement léger de celui-ci avec des fonctionnalités importantes pour faciliter la configuration et rationaliser le développement d'applications.
Yusubov
@Yusobov: Ce n'est pas tout à fait vrai - Il existe également les services de données WCF qui sont assez bons pour créer des API REST compatibles avec Odata. Je l'ai utilisé dans un environnement de production et cela fonctionne vraiment bien une fois qu'il est configuré. Le seul problème avec cela est qu'il est beaucoup plus difficile à configurer qu'une API Web ASP.NET.
Adrian Grigore
1

L'API Web ASP.NET est un cadre 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.

http://www.asp.net/web-api


ÉDITER:

Plus précisément, l'API Web ASP.NET comprend:

  1. Un pipeline ASP.NET rationalisé avec une surcharge réduite si vous choisissez d'héberger votre service dans IIS.
  2. HttpClient qui facilite la connexion d'un client à l'API Web.
Jim G.
la source
Je peux lire ces choses moi-même. Ma question est quel est le point? Qu'est-ce qui est si différent en utilisant l'API Web et en utilisant MVC normal mais en ayant JsonResults au lieu de ViewResults?
James P. Wright
1. Avant MVC 4, vous pouviez retourner un JSONResult sans aucun problème. MVC 4 conserve simplement cette capacité, inclut d'autres classes d'assistance pour la rendre plus facile et rationalise le pipeline ASP.NET pour réduire la surcharge lorsque vous savez que vous n'aurez pas besoin de renvoyer ViewResults.
Jim G.
1
De plus, comme il s'agit effectivement d'une mise à jour pour l'API Web WCF, vous n'êtes pas marié à IIS. Vous pouvez auto-héberger un service d'API Web ASP.NET si vous préférez. wcf.codeplex.com/…
Jim G.
-2

Aujourd'hui, une application Web ne suffit plus pour atteindre ses clients. Les gens sont très intelligents, ils utilisent des appareils iPhone, mobiles, tablettes, etc. dans leur vie quotidienne. Ces appareils disposent également de nombreuses applications pour vous faciliter la vie. En fait, nous passons du Web au monde des applications. Donc, si vous souhaitez exposer vos données de service aux navigateurs et à toutes ces applications d'appareils modernes de manière simple et rapide, vous devez disposer d'une API compatible avec les navigateurs et tous ces appareils.

atul
la source
cela ne semble pas ajouter quoi que ce soit de substantiel aux points avancés et expliqués dans les 4 réponses précédentes
gnat