2010-05-04 3 views
0

Je conçois un ensemble de services Web pour permettre à nos clients de se connecter à partir de leurs applications à l'un de nos systèmes. Nos clients ont leurs applications développées dans toutes les variétés de frameworks (.NET, Java, PHP, Python et même occasionnellement toutes les applications JS), donc évidemment WS est le chemin à parcourir.Conception de services Web interopérables

Enquêter un peu sur WS réellement interopérable J'ai trouvé que le chemin à parcourir est de concevoir d'abord le WSDL et le XSD et de dériver les implémentations à partir de là.

Ce que je cherche vraiment, c'est de savoir si c'est vraiment le chemin à parcourir. J'ai lu que WCF crée un WS interopérable mais je ne suis pas un fan de MS créant quelque chose de standard.

Devrais-je utiliser WCF ou il existe un bon ensemble d'outils pour la conception de WSDL et XSD sans la douleur que j'attends.

Merci à l'avance

Répondre

1

Si vous souhaitez interopérer avec JavaScript, il est préférable de créer une API de style REST. Il s'agit essentiellement d'appels HTTP standard, donc vous êtes interopérable dès le départ. Cependant, vous avez indiqué que vous voulez utiliser SOAP, alors ...

Si vous utilisez SOAP/WSDL, je recommanderais certainement d'utiliser la plate-forme serveur - oui, même .NET - pour générer WSDL, vérifiez simplement que les options que vous utilisez produisent un bon fichier WSDL interopérable.

Je suis un développeur Java avec un historique de PHP & Perl, et j'ai interopéré avec .Net sur un certain nombre de projets WS, des deux côtés de la pièce (en tant que serveur et client). Il n'y a généralement pas de problème majeur - être juste Méfiez-vous des deux choses:

  • certains éléments exclusifs qui mélange MS avec les standards ouverts. Pour par exemple, ils peuvent offrir l'authentification de type NTLM , qui n'est pas vraiment nécessaire dans la plupart des cas d'utilisation, en particulier lorsque vous utilisez SSL .
  • SOAP a pris quelques différentes formes au cours des années (Document/literal, RPC/Encoded, ...) vous probablement vous trouverez ne pas besoin à vous soucier de cela, RPC/encodée sont morts ainsi que des anciens cadres et cadres les plus modernes tendent vers document/literal
  • SOAP offre quelques boulonné sur les normes (par exemple MMD & DIME pour les pièces jointes, et SOAP-WS pour l'authentification ). Essayez d'éviter les verrous , car différentes plates-formes implémenter différents sous-ensembles.
  • Pour plus de sécurité, je vous conseille d'utiliser SSL pour la confiance & la confidentialité, puis soit HTTP auth de base, ou simplement sur mesure jetons de chaîne dans la définition de votre demande de savon.

Il suffit de garder le WSDL aussi minime que possible, essayez interopérer assez tôt dans le processus, et vous ne devriez pas avoir trop de problèmes

0

WSDL et XSD indépendants de la langue, il vous suffit d'avoir un mécanisme pour communiquer en utilisant d'autres langues. Bonne chose pour vous de faire serait la conception de base de données à mon humble avis, de sorte que vous n'auriez pas besoin de XSD autant pour les mêmes entités de données.

1

Vous pouvez utiliser WCF et contrat premier développement. Si l'interopérabilité est la principale préoccupation, je recommanderais d'utiliser WCF pour fournir l'implémentation du service, mais au lieu de compter sur WCF pour générer l'interface de service afin d'utiliser le développement en premier pour modéliser l'interface.

Un très bon article sur comment développer de cette façon est Schema-based Development with Windows Communication Foundation.

Si vous voulez créer votre propre WSDL et vos propres schémas, vous aurez probablement besoin d'un éditeur comme XmlSpy ou LiquidXml. J'aime le prix de LiquidXML (gratuit!) Mais je ne me souviens pas si vous devez payer pour les fonctionnalités du service Web.

Un autre outil intéressant pour le développement de contrats en premier avec Visual Studio et WCF est WSCF.blue. Je ne l'ai pas utilisé mais il semble être activement développé basé sur le WCSF.blue roadmap.

0

Je ne suis pas sûr de ce que vous voulez dire quand vous demandez "devrais-je utiliser WCF"? WCF est le mécanisme actuel pour développer des services Web (et d'autres types de services de communication) sur .NET. Il n'y a pas d'autre mécanisme actuel. Les autres sont obsolètes ou considérés comme des «technologies héritées».

+0

Vous pouvez utiliser les services Web WCF ou ASP.NET. Je pense que les services Web ASP .NET n'est pas obsolète mais je peux me tromper. –

+0

@Zyd: vous avez tort. Voir http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!860.entry –

+0

oh mon dieu! Juste pour le plaisir, j'ai été à travers la documentation en ligne de services Web asmx et je n'ai pas été en mesure de trouver cet avertissement de technologie héritée. Mais je pense que je vais m'en tenir à ça pour le moment puisque j'ai du code déjà développé. –