J'ai passé quelques mois à essayer de comprendre les concepts derrière WCF et récemment j'ai développé ma première application de service WCF.
J'ai eu beaucoup de mal à comprendre tous les paramètres du fichier de configuration.
Je ne suis pas convaincu de l'environnement mais il semble que vous puissiez faire des choses incroyables avec.
L'autre jour, j'ai découvert que Microsoft a sorti une nouvelle chose appelée ASP.NET Web API .
Pour ce que je peux lire, c'est un framework RESTful , très facile à utiliser et à implémenter.
Maintenant, j'essaie de comprendre quelles sont les principales différences entre les 2 cadres et si je devrais essayer de convertir mon ancienne application de service WCF avec la nouvelle API.
Quelqu'un pourrait-il, s'il vous plaît, m'aider à comprendre les différences et l'utilisation de chacun?
la source
Réponses:
La nouvelle API Web ASP.NET est une continuation du précédent projet d' API Web WCF (bien que certains concepts aient changé ).
WCF a été créé à l'origine pour activer les services SOAP. Pour des services RESTful ou RPCish plus simples (pensez aux clients comme jQuery), l'API Web ASP.NET devrait être un bon choix.
la source
HttpClient
qui est génial, mais il ne s'occupe pas de la génération d'entités et de la sérialisation / désérialisation.INotifyPropertyChanged
des entités clientes? Et la validation?Pour nous, WCF est utilisé pour SOAP et l'API Web pour REST. Je souhaite également que l'API Web soit compatible avec SOAP. Nous n'utilisons pas les fonctionnalités avancées de WCF. Voici une comparaison de MSDN :
la source
L'API Web ASP.net est entièrement basée sur HTTP et REST GET, POST, PUT, DELETE avec un style de programmation ASP.net MVC bien connu et renvoyable JSON; L'API Web est destinée à tous les processus légers et aux composants HTTP purs. Pour aller de l'avant avec WCF, même pour un service Web simple ou simple, il apportera tous les bagages supplémentaires. Pour un service simple et léger pour les appels ajax ou dynamiques, WebApi résout toujours le besoin. Cela complète parfaitement ou aide en parallèle au MVC ASP.net.
Consultez le podcast: Hanselminutes Podcast 264 - Ce n'est pas la WCF de votre père - Tout sur le WebAPI avec Glenn Block de Scott Hanselman pour plus d'informations.
la source
Dans les scénarios répertoriés ci-dessous, vous devriez opter pour WCF:
L'API WEB est un cadre pour développer des services RESTful / HTTP.
Il y a tellement de clients qui ne comprennent pas SOAP comme les navigateurs, HTML5, dans ces cas, les API WEB sont un bon choix.
L'en-tête des services HTTP spécifie comment sécuriser le service, comment mettre en cache les informations, le type du corps du message et le corps HTTP peut spécifier tout type de contenu comme HTML et pas seulement XML comme services SOAP.
la source
Depuis que j'utilise les deux jusqu'à maintenant, j'ai trouvé de nombreuses différences entre WCF et Web API. Les deux piles technologiques sont bien adaptées à différents scénarios, il n'est donc pas possible de dire lequel est le meilleur, cela dépend de la configuration et du scénario.
Remarque: Les données ne sont pas seulement mon avis, elles sont également collectées sur d'autres sites Web officiels.
la source
WCF vous donnera tellement de choses hors de la boîte, ce n'est même comparable à rien. À moins que vous ne vouliez faire sur votre propre implémentation (pour n'en nommer que quelques-uns) l'authentification, l'autorisation, le chiffrement, la mise en file d'attente, la limitation, la messagerie fiable, la journalisation, les sessions, etc. WCF n'est pas [seulement] des services Web; WCF est une plate-forme de développement pour SOA.
la source
Pourquoi je réponds:
J'ai pris énormément de temps pour comprendre la différence entre ces deux technologies. Je vais mettre tous ces points ici que je pense "Si j'avais ces points au moment où je me demandais à la recherche de cette réponse, alors j'ai décidé très tôt dans le choix de ma technologie requise."
Source d'information:
Microsoft® Visual Studio® 2015 déchaîné
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Pourquoi l'API Web ASP.NET et WCF:
Avant de comparer les technologies de l'API Web ASP.NET et de WCF, il est important de comprendre qu'il existe en fait deux styles / normes pour la création de services Web: REST (Representational State Transfer) et SOAP / WSDL. SOAP / WSDL était la norme d'origine sur laquelle les services Web étaient construits. Cependant, il était difficile à utiliser et avait des formats de message volumineux (comme XML) qui dégradaient les performances. Les services basés sur REST sont rapidement devenus l'alternative. Ils sont plus faciles à écrire car ils exploitent les constructions de base de HTTP (GET, POST, PUT, DELETE) et utilisent généralement des formats de message plus petits (comme JSON). Par conséquent, les services HTTP basés sur REST sont désormais la norme pour les services d'écriture qui ciblent strictement le Web.
Définissons le but de l'API Web ASP.NET
L'API Web ASP.NET est la technologie de Microsoft pour développer des services Web HTTP basés sur REST. (Il a depuis longtemps remplacé l'ASMX de Microsoft, qui était basé sur SOAP / WSDL.) L'API Web facilite l'écriture de services robustes basés sur des protocoles HTTP que tous les navigateurs et appareils natifs comprennent. Cela vous permet de créer des services pour prendre en charge votre application et de les appeler à partir d'autres applications Web, tablettes, téléphones mobiles, PC et consoles de jeux. La majorité des applications écrites aujourd'hui pour tirer parti de la connexion Web toujours présente utilisent les services HTTP d'une manière ou d'une autre.
Définissons maintenant le but de WCF:
Communiquer sur Internet n'est pas toujours le moyen le plus efficace. Par exemple, si le client et le service existent sur la même technologie (ou même la même machine), ils peuvent souvent négocier un moyen de communication plus efficace (tel que TCP / IP). Les développeurs de services se sont retrouvés à faire les mêmes choix qu'ils essayaient d'éviter. Il leur faudrait désormais choisir entre créer des services internes efficaces et pouvoir bénéficier du large accès trouvé sur Internet. Et, s'ils devaient prendre en charge les deux, ils pourraient avoir à créer plusieurs versions de leur service ou au moins des procurations distinctes pour accéder à leur service. C'est le problème que Microsoft a résolu avec WCF .
Avec WCF, vous pouvez créer votre service sans vous soucier des limites. Vous pouvez ensuite laisser WCF s'inquiéter de l'exécution de votre service de la manière la plus efficace, selon le client appelant. Pour gérer cette tâche, WCF utilise le concept de points de terminaison. Votre service peut avoir plusieurs points de terminaison (configurés au moment de la conception ou après le déploiement). Chaque point de terminaison indique comment le service peut prendre en charge un client appelant: sur le Web, via l'accès à distance, via Microsoft Message Queuing (MSMQ), etc. WCF vous permet de vous concentrer sur la création de vos fonctionnalités de service. Il s'inquiète de la façon de parler le plus efficacement possible avec les clients appelants. De cette façon, un seul service WCF peut prendre en charge efficacement de nombreux types de clients différents.
Exemple de WCF:
Prenons l'exemple:
Les données client sont partagées entre les applications. Chaque application peut être écrite sur une plate-forme différente et peut exister dans un emplacement différent. Vous pouvez extraire l'interface client dans un service WCF qui fournit un accès commun aux données client partagées. Cela centralise les données, réduit la duplication, élimine la synchronisation et simplifie la gestion. De plus, en utilisant WCF, vous pouvez configurer les points de terminaison de service pour qu'ils fonctionnent de la manière qui convient au client appelant. La figure montre l'exemple précédent avec un accès centralisé aux données client dans un service WCF.
Conclusion:
i) Quand choisir l'API Web:
Il ne fait aucun doute que les services HTTP basés sur REST comme ceux créés à l'aide de l'API Web ASP.NET sont devenus la norme pour la création de services Web. Ces services offrent une approche simple et directe aux développeurs de services de création de sites Web. Les développeurs Web comprennent HTTP GET et POST et s'adaptent donc bien à ces types de services. Par conséquent, si vous écrivez des services strictement ciblés sur HTTP , l'API Web ASP.NET est le choix logique.
ii) Quand choisir WCF:
La technologie WCF est utile lorsque vous devez prendre en charge plusieurs points de terminaison de service en fonction de différents protocoles et formats de message. Des produits comme Microsoft BizTalk exploitent WCF pour créer des services robustes qui peuvent être utilisés sur le Web ainsi que via différentes configurations de machine à machine.Si, cependant, vous devez écrire une application qui communique sur TCP / IP lorsqu'elle est connectée au réseau local réseau et fonctionne sur HTTP en dehors du réseau, WCF est votre réponse .
Être averti:
Les développeurs Web considèrent souvent WCF comme plus difficile et plus complexe à développer. Par conséquent, si vous ne prévoyez pas la nécessité de services multiprotocoles, vous vous en tiendriez probablement à l'API Web ASP.NET.
la source
Il y a une comparaison sur MSDN à ce sujet
API Web WCF et ASP.NET
Pour moi, le choix portait sur qui sont les clients et où sont-ils situés?
Au sein du réseau de l'entreprise et des clients basés sur .NET: utilisez WCF avec la liaison TCP (communication rapide que HTTP)
En dehors du réseau de l'entreprise, et utilisez diverses technologies comme PHP, Python, etc .: utilisez l'API Web avec REST
la source
Pour parler affaires, WebApi n'a pas de WSDL, donc les développeurs doivent tout documenter manuellement. Et si, par exemple, l'opération WebApi renvoie une liste d'objets, le client doit créer les objets manuellement, c'est-à-dire que WebAPI est vraiment sujet aux erreurs de définitions.
Le pro de Webapi est son plus léger que WCF.
la source
En ce qui concerne la déclaration "WebApi manque de WSDL", il existe plusieurs façons de générer le client Rest. Une approche populaire est Swagger UI / (Swashbukkle Nuget). Cela donne une interface riche pour comprendre le schéma d'entrée et de sortie du point de terminaison REST et un outil en ligne pour tester les points de terminaison.
JSON LD (Json Linked Documents) est une autre norme émergente qui améliorera encore l'expérience du développeur REST basé sur JSON en exposant le schéma JSON avec une meilleure sémantique.
la source
Avec wcf, nous pouvons configurer et exposer le même support de service pour plusieurs points de terminaison comme tcp, http. Si vous voulez que votre service soit uniquement basé sur http, il sera préférable d'utiliser l'API Web. L'API Web a une configuration très inférieure par rapport à wcf et est un peu plus rapide que wcf. Wcf prend également en charge des services reposants. Si vous avez une limitation de .Net Framework 3.5, votre option est wcf.
la source