2011-10-25 2 views
0

Supposons que je souhaite créer un service WCF WebHTTP ("ServiceREST") ayant une référence à un service duplex ("ServiceDuplex"). ServiceDuplex nécessite des implémentations de certains membres de rappel pour fournir les données qui lui sont demandées. Par exemple, un appel à GetCustomers sur ServiceDuplex déclenche une méthode sur ce service qui renvoie les clients au client via un rappel "ReceiveCustomers". Cela étant dit, supposons que je voulais une méthode "GetSingleCustomer" sur ServiceREST. En supposant que toutes les données sont récupérées à la demande (plutôt que la mise en cache après le démarrage), je dois d'abord appeler "GetCustomers" de ServiceDuplex et attendre que ma collection soit remplie dans le callback que j'implémente avant de pouvoir rechercher le client unique J'ai besoin.Consommation d'un service WCF Duplex à l'intérieur d'un service RESTful

Étant donné que webHttp ne prend pas en charge les rappels au client, je suis obligé d'utiliser quelque chose comme un AutoResetEvent dans mon appel GET (GetSingleCustomer) jusqu'à ce que le rappel du duplex remplisse la collection.

Y a-t-il une «meilleure pratique» pour ce que j'essaie de faire, ou est-ce que j'essaie de faire tellement mal qu'une telle pratique n'a pas été créée ?!

Merci pour l'aide.

Répondre

0

Keep It Simple, le ServiceDuplex ne fait pas ce qu'il est supposé faire, comme faire les appels asynchrones, alors pourquoi l'utiliser en premier lieu ... il suffit de s'en tenir à seulement REST.

+0

Je n'ai pas vraiment le choix de m'en tenir uniquement à REST. Le ServiceDuplex existe déjà et j'ai besoin de données. Aussi, pourquoi le ServiceDuplex "ne fait-il pas ce qu'il est censé faire"? – Thelonias

+0

Un canal duplex est créé pour obtenir un comportement asynchrone dans nos méthodes, le chaîner avec un service REST est vraiment une surcharge, il ajoute du temps pour obtenir la réponse et annule les appels asynchrones car vous devrez les rendre synchrones pour le REST service, je le ferai seulement comme une dernière ressource, mais c'est juste mon opinion. – Andresps2

+0

J'ai travaillé avec duplex OR REST pendant un moment, dans mon entreprise nous avons un gros projet qui utilise le duplex et ma tâche était de faire un petit client iOS, nous avions deux choix, d'intégrer les deux systèmes, ou créer juste le REST avec la logique métier à partir de zéro, le dernier était notre choix et cela fonctionne très bien, mais c'était un petit client, c'est différent si nous devons réécrire 100% du service duplex. Mes 2 cents. – Andresps2