Question WCF vs API Web ASP.NET [fermé]


J'ai passé quelques mois à essayer de comprendre les concepts derrière WCF et j'ai récemment 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 pouvez faire des choses incroyables avec lui.

L’autre jour, j’ai découvert que Microsoft avait sorti une nouvelle chose appelée API Web ASP.NET.

Pour ce que je peux lire c'est un Cadre RESTful, très facile à utiliser et à mettre en œuvre.

Maintenant, j'essaie de comprendre quelles sont les principales différences entre les deux cadres et si je devrais essayer de convertir mon vieux 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?


428
2018-02-19 11:08


origine


Réponses:


Le nouveau API Web ASP.NET est une continuation de la précédente API Web WCF projet (bien que certains les concepts ont changé).

WCF a été créé à l'origine pour activer les services SOAP. Pour des services RESTful ou RPCish plus simples (pensez à des clients comme jQuery), l'API Web ASP.NET devrait être un bon choix.


165
2018-02-19 19:48



Pour nous, WCF est utilisé pour les API SOAP et Web pour REST. Je souhaite également à SOAP supporté par Web API. Nous n'utilisons pas les fonctionnalités avancées de WCF. Voici la comparaison de MSDN:

enter image description here


223
2018-05-02 18:20



ASP.net Web API est tout sur HTTP et REST basé sur GET, POST, PUT, DELETE avec le style de programmation ASP.net MVC bien connu et JSON retournable; L'API Web est destinée à tous les processus légers et à tous les composants basés sur HTTP. Pour aller de l'avant avec WCF même pour simple ou simple service web unique, 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 problème. Cela complète parfaitement ou aide parallèlement à ASP.net MVC.

Vérifiez podcast: Hanselminutes Podcast 264 - Ce n'est pas la WCF de votre père - Tout sur le WebAPI avec Glenn Block par Scott Hanselman pour plus d'informations.


75
2018-04-03 20:42



Dans les scénarios énumérés ci-dessous, vous devriez aller pour WCF:

  1. Si vous devez envoyer des données sur des protocoles tels que TCP, MSMQ ou MIME
  2. Si le client consommateur sait comment utiliser les messages SOAP

L'API WEB est un framework pour le développement de services RESTful / HTTP.

Il y a tellement de clients qui ne comprennent pas SOAP comme les navigateurs, HTML5, dans ce 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 peuvent spécifier n'importe quel type de contenu comme HTML et pas seulement XML en tant que services SOAP.


60
2018-01-06 09:01



WCF va vous donner tellement de choses, ce n'est même pas comparable à rien. Sauf si vous voulez faire votre propre implémentation de (pour en nommer quelques uns) l'authentification, l'autorisation, le cryptage, la mise en file d'attente, la limitation, la messagerie fiable, la journalisation, les sessions, etc. WCF n'est pas [uniquement] des services Web; WCF est une plateforme de développement pour SOA.


31
2017-07-02 10:42



Depuis l'utilisation des deux jusqu'à maintenant, j'ai trouvé beaucoup de différence entre WCF et Web API. Les deux technologies s'empilent bien dans différents scénarios. Donc, il est impossible de dire ce qui est mieux, cela dépend de la configuration et du scénario.

See this image to understand more differnce

Note: Les données ne sont pas seulement mon point de vue, il est également collecté à partir d'un autre site officiel.


26
2017-12-22 15:37



Il y a une comparaison sur MSDN à ce sujet

API Web WCF et ASP.NET

Pour moi, le choix concernait Qui sont les clients et où sont-ils situés?

Au sein du réseau d'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 utiliser diverses technologies comme PHP, Python, etc.: Utiliser l'API Web avec REST


9
2018-02-08 01:31



En tant que professionnel, WebApi ne possède pas de WSDL, les développeurs doivent donc tous 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 réellement sujet aux erreurs de définitions.

Le pro de Webapi est son plus léger que WCF.


7
2018-03-04 12:33



En ce qui concerne l'affirmation "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 l'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 de développement REST basée sur JSON en exposant le schéma JSON avec une meilleure sémantique.


6
2017-09-13 06:34



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 à l'époque où je me demandais autour à la recherche de cette réponse, alors j'ai décidé très tôt dans la sélection 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 réalité deux styles / normes de création de services Web: REST (Representational State Transfer) et SOAP / WSDL. Le SOAP / WSDL était la norme originale sur laquelle les services Web étaient construits. Cependant, il était difficile à utiliser et avait des formats de messages 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 l'objectif de l'API Web ASP.NET

ASP.NET Web API est la technologie de Microsoft pour le développement de 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 les périphériques 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, ordinateurs et consoles de jeux. La majorité des applications écrites aujourd'hui pour exploiter la connexion Web toujours présente utilisent les services HTTP d'une manière ou d'une autre.

Définissons maintenant l'objectif 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 plus efficace de communiquer (tel que TCP / IP). Les développeurs de services se sont retrouvés à faire les mêmes choix qu’ils essayaient d’éviter. Ils devraient désormais choisir entre la création de services internes efficaces et l’accès à Internet sur Internet. Et, s'ils devaient supporter les deux, ils pourraient devoir créer plusieurs versions de leur service ou au moins séparer les proxys 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, en fonction du 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 du design 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 distant, via Microsoft Message Queuing (MSMQ), et plus encore. WCF vous permet de vous concentrer sur la création de vos fonctionnalités de service. Il s'inquiète de la manière de parler le plus efficacement avec les clients appelants. De cette manière, un seul service WCF peut efficacement prendre en charge de nombreux types de clients différents.

Exemple de WCF:

Considérez 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. En outre, 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 d'avant avec l'accès centralisé des données client dans un service WCF.

This is how WCF serves different clients

Conclusion:

i) Quand choisir Web API:

Il est indéniable que les services HTTP basés sur REST, tels que 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 pour les développeurs Web qui créent des services. Les développeurs Web comprennent HTTP GET et POST et s'adaptent ainsi bien à ces types de services. Par conséquent, si vous écrivez prestations de service strictement ciblé 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 tirent parti de WCF pour créer des services robustes qui peuvent être utilisés sur le Web aussi bien que via différentes configurations de machine à machine.Si, cependant, vous avez besoin d'écrire une application qui communique sur TCP / IP lorsqu'elle est connectée au réseau local et fonctionne sur HTTP en dehors du réseau, WCF est votre réponse.

Être averti:

Les développeurs Web considèrent souvent que WCF est plus difficile et complexe à développer. Par conséquent, si vous ne prévoyez pas le besoin de services multiprotocoles, vous utiliserez probablement l'API Web ASP.NET.


5
2018-03-20 22:37



Avec wcf, nous pouvons configurer et exposer le même support de service pour plusieurs points de terminaison comme tcp, http.si vous souhaitez que votre service soit uniquement basé sur http, il vaudra mieux utiliser l'API Web. Web API a une configuration très inférieure à celle de 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.


0
2018-06-18 17:17