2010-02-19 6 views

Répondre

2

WCF prend en charge les services Duplex ou ceux qui ont la capacité de rappeler le client demandeur. Les services de duplex peuvent être très compliqués, car ils ne sont pas seulement à états, mais ils imposent une exigence de mise en œuvre de contrat à leurs clients.

Les services duplex nécessitent l'utilisation de WSDuplexHttpBinding. Vous devrez utiliser OperationContext pour obtenir une référence au canal de rappel. Vos clients DOIVENT implémenter le contrat de rappel dans une classe et fournir un InstanceContext qui contient une instance de la classe de rappel au proxy client. Les communications dans les deux sens doivent être soutenues, et si le client est derrière son propre pare-feu ou sur Internet, cela peut être une question compliquée à résoudre. Faites attention lorsque vous écrivez des services en duplex ... ils sont souvent plus difficiles que ce qu'ils valent ... alors assurez-vous que vous en avez vraiment besoin. ;-)

La page suivante peut être utile:

http://msdn.microsoft.com/en-us/library/ms731064.aspx

+0

Merci pour vos bons commentaires. Pouvez-vous également me rendre compte, si une telle implémentation de rappel peut être possible sur une machine portative c/Linux avec gSOAP. – Kangkan

+0

Je ne suis pas vraiment sûr. J'ai entendu parler de gSOAP, mais je n'en sais pas grand-chose. WCF est plus qu'une simple plateforme de services Web SOAP/WSDL. Il prend en charge plusieurs protocoles et types de liaison qui ne sont généralement pas pris en charge par d'autres plates-formes. En ce qui concerne les services Web en mode duplex, je ne crois pas qu'il existe de norme pour la prise en charge multiplateforme, de sorte que gSOAP devrait prendre en charge la compatibilité de l'implémentation duplex de WCF. – jrista

1

basicHttpBinding ne prend pas en charge les rappels. Une autre approche pourrait être d'avoir une autre méthode sur laquelle le client peut interroger pour la réponse.

+0

Merci. Dans un tel cas, je voudrais aller pour les appels de synchronisation. – Kangkan

1

Je suis confronté à la même question et l'approche que je suis en train est d'avoir une paire de serveurs/clients gSOAP. Fondamentalement, chaque processus va écouter sur un port pour les appels de savon et faire ses appels clients à l'autre serveur. De cette façon, j'évite l'interrogation ou d'autres approches complexes. Le code doit être évidemment sûr pour n'importe quelle logique métier, mais la paire combo client/serveur est la solution la plus simple à laquelle j'ai pensé jusqu'à présent.

Il est évident qu'il faut contrôler les deux côtés des solutions du serveur mentionné et du client mentionné.

+0

Merci @Dragos. Pour moi, la situation est un peu différente. Encore +1 pour partager cette information qui pourrait aider ailleurs. – Kangkan

Questions connexes