2010-09-20 3 views
0

J'ai un service de rappel hébergé sur wsDualHttpBinding. Je cherche à ajouter un client qui interrogera pour les données plutôt que de recevoir le rappel (sera un appareil mobile utilisant wince à des fins de démonstration). J'étais curieux de savoir quelle est la meilleure façon de le faire? Vous ne pouvez pas créer un proxy client en utilisant NetCFSvcUtil avec un service hébergé avec wsDualHttpBinding (je comprends cela), mais vous ne pouvez pas héberger un service de rappel sur basicHttpBinding. J'ai vraiment besoin du même service hébergé sur basicaHttpBinding (les clients interrogeront les données) et wsDualHttpBinding (le callback notifiera les données aux clients). Des idées sur la meilleure façon de gérer cela sans créer deux services distincts pour héberger les mêmes données?Service de rappel WCF hébergé sur basicHttpBinding et wsDualHttpBinding

Répondre

2

Qu'entendez-vous par deux services distincts hébergeant les mêmes données? Pensez-vous partager la même instance de service pour gérer les requêtes wsDualHttpBinding et basicHttpBinding?

Votre problème actuel est que l'interface de service pour la communication duplex ne peut pas être utilisée pour basicHttpBinding. Vous devez créer un deuxième contrat de service et l'implémenter dans le même service. Dans ce cas, vous pouvez exposer deux points de terminaison pour le service: un duplex avec WSDualHttpBinding et un avec BasicHttpBinding. Les points de terminaison doivent avoir des adresses relatives différentes. Du point de vue du client, ces points de terminaison sont des services distincts - chacun d'entre eux nécessite un proxy client distinct. Donc, à moins que votre service ne soit singleton, vous aurez une nouvelle instance de service pour chaque proxy client. Nouvelle instance de service signifie aucun partage de données.

Il existe quelques possibilités pour modifier ce comportement mais cela signifie remplacer le fournisseur d'instance.

+0

Merci. Les contrats de service multiples pour le même service semblent être ce qui me manquait. Je voudrais que mon service soit un service singleton et il semble que les clients utilisant le service de rappel ne «partagent» pas les données avec les clients utilisant le contrat de service sans rappel. Le service ne devrait-il pas détenir les mêmes données quel que soit le contrat utilisé par le client? J'ai InstanceContextMode = InstanceContextMode.Single et cela fonctionnait avant quand les clients partageaient le même contrat de service. Merci de votre aide. – Sean

Questions connexes