web-dev-qa-db-fra.com

API Web ASP.Net vs WCF, lequel dois-je choisir dans mon projet?

Jusqu'à présent, j'ai lu de nombreux articles sur le Web concernant les différences entre les API Web WCF et ASP.Net. Malheureusement, je ne pouvais pas arriver à une idée claire de ce qui servirait mon but. La plupart des articles que j'ai lus sont soulignés du point de vue de la conception des deux services Web. Mais je ne comprends pas ce qui fonctionnera le mieux pour mon projet et pourquoi? Voici ma brève description du projet.

J'ai besoin de créer un canal de communication entre deux serveurs (les deux sont écrits en C #). Les serveurs communiqueront par messages (certains types de commandes). Les messages peuvent parfois n'être que des accusés de réception, et parfois des messages peuvent contenir des instructions permettant d'effectuer des calculs. Par exemple, un message peut être dessiner quelque chose, ou envoyer un SMS etc. Et les messages ne concerneront pas nécessairement des transactions de base de données. Mais les messages peuvent parfois envoyer des fichiers texte volumineux comme charge utile (environ 1 à 5 Mo maximum). Ce que je crois que WCF fera très certainement, mais puis-je faire la même chose avec l’API Web ASP.net. Parce que jusqu’à présent, tous les exemples que j’ai vu pour l’API Web ASP.Net: ils conviennent aux services RESTful qui manipulent un type de magasin de base de données (GET, PUT, DELETE). Mais dans mon cas, je devrai exposer des points de service qui 

faire un type de traitement tel que renvoyer la valeur d'un calcul, envoyer et accuser réception des messages, etc. 

Pas seulement manipuler un magasin de base de données.

Alors, quel devrait être le moyen le plus simple et le meilleur de le faire? Il convient de mentionner que je n’ai trouvé aucun exemple concret permettant d’atteindre cet objectif à l’aide de l’API Web ASP.Net. 

8
P basak

La question que vous avez posée est trop large ou principalement basée sur une opinion, et il est difficile de donner un exemple de ce que vous avez demandé. 

Les ​​points importants:

  • Tout d'abord, si vous allez créer un service qui serait utilisé sur différentes plates-formes, optez pour WCF. 
  • Deuxièmement, si vous créez un service Internet qui utilisera ressource externe, utilisez l’API Web.
  • L'API Web est le meilleur choix si vous envisagez de créer un service permettant aux périphériques à faible bande passante ou aux périphériques mobiles d'accéder au client.HTTP La requête/réponse est également plus lisible que SOAP car elle contient en-tête, corps, etc. ce qui le rend complexe.

Prenez quelques minutes et lisez l’article ci-dessous, jusqu’à ce que vous compreniez parfaitement quelques principes. 

On peut trouver la source originale ici , ici et ici .

À qui choisir entre une API WCF ou WEB:

  1. Choisissez WCF lorsque vous souhaitez créer un service prenant en charge des scénarios spéciaux tels que la messagerie unidirectionnelle, les files de messages, la communication en mode duplex, etc.
  2. Choisissez WCF lorsque vous souhaitez créer un service qui peut utiliser des canaux de transport rapides lorsqu'ils sont disponibles, tels que TCP, Named Pipes ou même UDP (dans WCF 4.5), et vous souhaitez également prendre en charge HTTP lorsque tous les autres canaux de transport sont indisponibles.
  3. Choisissez l'API Web lorsque vous souhaitez créer un service axé sur les ressources sur HTTP pouvant utiliser toutes les fonctionnalités de HTTP (telles que les URI, les en-têtes de requête/réponse, la mise en cache, la gestion des versions, divers formats de contenu).
  4. Choisissez l'API Web lorsque vous souhaitez exposer votre service à un large éventail de clients, notamment des navigateurs, des téléphones portables, un iPhone et des tablettes.

Pourquoi choisir l'API Web

  • L'API Web n'a pas de configuration fastidieuse et extensive comme le service WCF REST.
  • C'est très simple, créer un service avec Web API. Où, comme avec WCF REST, la création de service est un peu difficile (nécessite une compréhension claire des configurations).
  • Les API Web reposent uniquement sur HTTP et HTTPS et sont faciles à définir, à exposer et à consommer de manière REST complète.
  • L'API Web est une architecture légère et convient aux appareils disposant d'une bande passante limitée, comme les téléphones intelligents.

Mon avis:

  • Le moyen le plus simple de le faire - API Web (puisque vous n’avez pas d’exemples pour cela)
  • Hardest Way is (Configurations) - WCF (Mieux vaut utiliser WCF, car vous avez des exemples)

J'espère que cela vous donne une idée claire de ce qu'il faut choisir ...

9
RajeshKdev

Tout d’abord, RESTful est une norme d’interface uniforme et sans état qui peut être appliquée aux services Web. Il n'est pas nécessaire que ce soit automatiquement et uniquement un ancien service CRUD soutenu par une base de données.

Dans le monde réel, on peut difficilement dire que toutes les API Web REST respectent pleinement la norme, en fait, la plupart du temps, en particulier la partie sans état.

Pour votre API basée sur les messages, en particulier si elle est bidirectionnelle et basée sur des événements, vous pouvez utiliser websockets et considérer l'API REST comme un moyen d'exposer une interface Web uniforme et sans état pour les créer. Et oui, vous pouvez utiliser des websockets avec ASP.NET WebApi , vous y trouverez de nombreux tutoriels, même pour le nouveau noyau ASP.NET.

La partie interactions "entre services" n’est pas différente du navigateur Web habituel <=> service Web, vous utilisez simplement du code C # au lieu de JS pour le client.

Je ne peux guère recommander WCF qui utilise SOAP car il n’est guère portable compte tenu des standards Web actuels. Par exemple, si vous souhaitez utiliser un client de navigateur au lieu d'un autre service ASP.NET, vous devrez ajouter du code supplémentaire côté client pour gérer les supports.

Vous pouvez utiliser WCF websockets , offrant presque tous les avantages de WCF SOAP.

tl; dr:

  • Vous pouvez mélanger RESTful et Websockets, cela peut en fait être mieux que d’aller complet REST ou complet Websockets
  • Si vous préférez utiliser SOAP par-dessus des Websockets, sa dette personnelle est potentiellement lourde, compte tenu de ce que vous souhaitez faire par la suite.
  • L'API de message entre services n'est pas différent d'une API de message entre un service et un navigateur
2
Uwy

WebAPI n'est pas uniquement utile pour les services Web RESTful. Vous pouvez facilement envoyer des demandes à un contrôleur WebAPI et les traiter comme vous le souhaitez: calculs, envoi de messages, interaction avec un CRM, interaction avec une base de données ou toute autre chose.

WCF a été créé pour gérer les services Web basés sur SOAP et apporte une complexité supplémentaire. Il gère TCP, Mime ...

Si vous devez simplement gérer les requêtes HTTP, le moyen le plus simple consiste à utiliser WebAPI.

0
PMerlet

Je suggérerais une API Web si elle s’applique à des services RESTful, car WCF n’a jamais été conçu pour servir de services de repos, même si vous pouvez en faire un où l’API Web a été spécialement conçue pour cela.

0
Rohit N.