Question

Je me demandais si quelqu'un avait quelques bons conseils à faire pour concevoir des contrats WCF avec un souci d'interopérabilité des services Web, à la fois en termes de technologies de services Web Microsoft plus anciennes (par exemple, WSE) et non Microsoft. technologies telles que l'appel Java de services Web WCF.

Par exemple: existe-t-il des règles spéciales à prendre en compte lors de l’exposition de DateTime en tant que type dans votre contrat? Qu'en est-il des dictionnaires et des tables de hachage? Quels sont les problèmes que vous pourriez rencontrer avec les différentes liaisons disponibles?

Était-ce utile?

La solution

Problèmes WCF DateTime

En ce qui concerne votre question DateTime, vous avez raison de ne pas vouloir transmettre DateTime via WCF. Ce n’est qu’un maillon parmi tant d’autres qui se plaignent des difficultés… http://daveonsoftware.blogspot.com/2008/07/wcf -datetime-field -justed.html

En ce qui concerne l'équivalence de type

Selon la section 3.1.3 du livre de Juval Lowy intitulé Programming WCF Services, 2nd Edition ...

  

WCF propose des contrats de données implicites pour   les types primitifs parce qu'il y a   un standard de l'industrie pour les schémas   de ces types.

Il souligne également l'utilisation de types personnalisés en tant que paramètres dans les méthodes de contrat d'opération. Je suppose que cela s'applique également aux types de retour de méthode.

  

Pour pouvoir utiliser un type personnalisé en tant que   paramètre de fonctionnement, il y a deux   exigences: premièrement, le type doit être   sérialisable, et en second lieu, les deux   client et le service doivent avoir un   définition locale de ce type   entraîne le même schéma de données.

Vous pouvez également consulter la section F.4. Data Contracts, qui fait partie de sa norme de codage WCF. La puce n ° 9 s'applique à votre question ...

  

Ne transmettez pas les types spécifiques à .NET, tels que   en tant que Type, en tant que paramètres d'opération.

Liaisons définissant les attentes

Les liaisons basées sur WSHttpBindingBase (recherche dans Reflector.NET pour ses quatre dérivations) vont être les plus interopérables, car elles sont conçues pour l’interopérabilité.

Recommandation du livre

Je recommande vivement le livre de Juval: http://www.bookpool.com/sm/0596521308

Autres conseils

Donc, si vous souhaitez interagir avec des services non Microsoft, vous voudrez probablement éviter tout type non primitif. WCF utilise la sérialisation pour encoder les données à transmettre et Java par exemple ne pourra pas désérialiser une table de hachage. Toutefois, WCF étant construit sur SOAP, vous devriez pouvoir utiliser n'importe quelle fonctionnalité SOAP entre un client JAVA et le service WCF, ou inversement.

N'oubliez pas de composer des contrats de primitives et vous devriez vous en sortir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top