ASP.NET WebAPI + Savon
Ne WebAPI soutien de SAVON? Je suis en train d'écrire un Serveur SOAP en MVC4 et alors que je peux le faire dans WCF, il semble que WebAPI est de le remplacer, mais je ne vois pas les moyens d'utiliser du SAVON en cela encore, il suffit d'JSON /XML à l'aide d'un RESTE de Style de l'interface.
- S'il est important d'avoir les deux, vous pouvez toujours utiliser la WCF REST 4.0 modèles, et de fournir des POX/JSON points de terminaison du service, et également des points de terminaison SOAP mixte dans votre RPC.
Vous devez vous connecter pour publier un commentaire.
Pour citer Scott Guthrie: Les dernières années ont vu la montée de l'Api Web services exposés sur HTTP normal plutôt que par le biais d'un cadre plus formel de contrat de service (comme le SAVON ou WS*).
Donc je dirais que non.
API WEB est la réponse de Microsoft à la REST api. Si vous voulez SAVON, aller avec WCF.
Vous devriez envisager de chercher à ServiceStack qui permet à votre service même à l'appui de REPOS + Api SOAP, même si, depuis que le SAVON ne fonctionne que sur HTTP POST, il a certaines restrictions
Ajouter ServiceStack De Référence
Comme une alternative au SAVON, ServiceStack offre une meilleure alternative à la WCF Ajouter une Référence de Service ce qui peut générer un tapé API à partir d'une URL à l'aide de Ajouter ServiceStack De Référence fonctionnalité intégrée ServiceStackVS.
Avantages sur WCF
WebAPI et WCF à la fois de promouvoir RPC signatures de méthode
Ce qui est intéressant, c'est que malgré WebAPI ApiController méthodes avoir pris le même RPC approche de la WCF à l'aide de C# RPC méthodes pour créer et définir des bavards services web, qu'ils ne sont pas encore en mesure de prendre en charge leur propre SAVON standard fabriqués par la même société.
ServiceStack prend en charge RESTE, du SAVON, du HTML et MQ points d'accès avec le même service.
C'est un testament à ServiceStack de message de conception basée sur la qui offre de nombreux avantages pas supporter d'être en mesure pour l' même service à l'appui de plusieurs points de terminaison et les formats, y compris de REPOS, de SAVON et de MQ points de terminaison ainsi que générer côté serveur ou côté client des sites web HTML si vous en avez besoin. Voici un exemple d'un riche Base de données les comptoirs de l'éditeur que parce qu'il a été construit avec ServiceStack active automatiquement tapé des Api REST qui peut être appelé avec de riches natif de clients de Bureau, les Applications Mobiles et les Single Page Apps.
SAVON est encore une mauvaise option pour les services à distance
Bien que malgré l'appui de SAVON pour l'interopérabilité, l'accessibilité et l'arrière des raisons de compatibilité, nous ne le recommandons pas pour la création de services web plates-formes avec l'onu, nécessairement complexe, fragile, lent et bavard et il y a beaucoup de meilleures alternatives à l'utilisation. Je expliquer plus en détail dans mon interview sur InfoQ.
IReturn<T>
marqueur de sorte que le client obtient un typée API.WebApi ne prend pas en charge SAVON hors de la boîte, en effet. Mais il est très souple et vous pourrait "s'adapter" à la poignée de SAVON: rien ne vous empêche de manuellement l'analyse de la reçu des messages SOAP (ils sont XML en clair, après tout) et de générer manuellement les réponses des chaînes XML, puis de les envoyer avec le approproate-tête content-type (vous pourriez même écrire votre propre contenu formateur pour cela).
En fonction de vos besoins et de votre base de code existante, cela peut être en vaut la peine ou vous pouvez utiliser un SAVON plus-aimable de la technologie telles que la WCF ou le déjà mentionné ServiceStack cadre.
Vous voudrez peut-être regarder à ServiceStack qui devrait soutenir à la fois du SAVON et de REPOS dans une interface sans aucun tracas. Il prétend être un meilleur match que WebAPI pour les services web.
Je ne peux pas prétendre tout savoir à propos de la différence, mais les problèmes qu'ils prétendent sont inhérentes au Web API approche que je peux dire par expérience sont réel de l'API de l'évolution (inévitables dans un projet réel) est assez délicate dans l'api web. Et bien sûr, l'api web ne prend pas en charge le SAVON.
Il n'est pas comme la Mer de l'API prend en charge SOAP, mais en raison de SAVON est juste un standard qui utilise le langage XML et elle se déplace jeter HTTP, vous pouvez utiliser l'API Web pour exposer un Service de POSTE pour lire le fichier XML et de trouver les nœuds que vous avez besoin de l'aide de XPath et puis Désérialiser les nœuds d'objets.
Tout d'abord, vous devez ajouter le support de XML pour la ConfigureServices
Puis dans votre contrôleur, vous avez juste besoin d'ajouter une méthode qui reçoit un XMLDocument et avec XPath de recherche pour le nœud vous êtes intéressé (Essentiellement de retirer l'enveloppe soap, l'en-tête, le corps) et puis vous pouvez désérialiser l'objet.
Dans mon cas, j'ajoute le service de référence en utilisant le WSDL et avec qui, je désérialiser l'objet.
Comme vous pouvez le voir dans l'image suivante le service qui essaie de consommer votre service utilise une Méthode de Demande de POSTE avec le Accept-Encoding: gzip. C'est pourquoi vous pouvez exposer une API Web qui peut être consommé pour un service SOAP.