2009-06-30 6 views
2

Je sais que les liaisons WSDualHttpBinding, NetTcpBinding et NetPeerTcpBinding prennent toutes en charge les opérations de service de duplex/callback.WCF et ASP.NET: Prise en charge de la prise en charge duplex utilisant AJAX

Je ne trouve nulle part sur internet quelqu'un demandant même si le duplex est supporté d'une manière ou d'une autre pour les appels ajax. Peut-être que la raison de mon incapacité à trouver quoi que ce soit est que je ne comprends absolument pas le concept clé de WCF qui fait de la question la question la plus stupide ...

Je sais que la liaison webHttpBinding avec <enableWebScript/> gneerate le js nécessaire pour les objets proxy côté client.

Est-ce impossible parce que les services en duplex ont besoin que le service de rappel soit hébergé et qu'il n'y ait aucun moyen de le faire côté client? (Si cela a du sens ..)

Mon application est en couches comme suit:
1. WebSite1 - appels ajax à WebSite1.MyClientService.
2. WebSite1.MyClientService - WCF Service auto-hébergé faisant référence à MyServiceProxies DLL.
3. MyServiceProxies DLL - Proxy personnalisés (utilisés à la place des proxies générés automatiquement "Ajouter une référence de service") qui héritent de ClientBase. Cela délègue simplement les appels de service réels à base.Channel.OperationName() à [MyService: IMyService à WinService WCF Hôte EXE].
4. WinService WCF Hôte EXE - Il s'exécute en tant que service Windows, en tant que singleton, autorisant les appels multithread. Les appels de WebSite1 interrogent les valeurs en mémoire détenues par ce singleton. Ce singleton finira par valider toutes les données contenues dans la mémoire de la base de données via une couche de données séparée.

Le service WinService est configuré pour utiliser les appels duplex via net.tcp. WinService s'exécutera sur la même machine que WebSite1 IIS App.

Répondre

2

Je ne trouve nulle part sur internet quelqu'un même demander si duplex est pris en charge en quelque sorte pour les appels ajax. Peut-être la raison de mon incapacité à trouver quoi que ce soit c'est parce que je suis malentendu complètement un concept clé WCF qui rend la question la plus stupide question il y a ...

pas stupide, peut-être, parce que Je pense que c'est AJAX que vous ne comprenez pas, pas WCF.

Cela n'a pas vraiment de sens d'avoir un contrat duplex dans AJAX. Un contrat duplex doit s'attendre à ce que le serveur appelle les opérations de contrat à tout moment. Ce n'est pas comme publier/s'abonner, par exemple, ou solliciter une réponse, où une action du client est nécessaire avant que les messages commencent à arriver. Avec un contrat duplex, les messages peuvent arriver à tout moment.

Qui va les écouter? Pas le navigateur. Si le navigateur devait réagir à des messages non sollicités venant d'une machine distante et exécutant du code - eh bien, cela ressemble beaucoup à la définition d'un virus, n'est-ce pas?

Je ne pense pas que vous allez trouver un support pour les contrats duplex en JavaScript depuis un certain temps.