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.
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:
Pourquoi choisir l'API Web
Mon avis:
J'espère que cela vous donne une idée claire de ce qu'il faut choisir ...
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:
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.
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.