2

我知道 WSDualHttpBinding、NetTcpBinding 和 NetPeerTcpBinding 绑定都支持双工/回调服务操作。

我在互联网上找不到任何人甚至询问是否以某种方式支持 ajax 调用双工。也许我无法在这方面找到任何东西的原因是因为我完全误解了一些关键的 WCF 概念,这使得这个问题成为最愚蠢的问题......

我知道 webHttpBinding 绑定以及<enableWebScript/>生成代理对象客户端所需的 js。

这是不可能的,因为双工服务需要托管该回调服务并且无法在客户端执行该操作吗?(如果这有意义..)

我的应用程序分层如下:
1. WebSite1 - 对 WebSite1.MyClientService 的 ajax 调用。
2. WebSite1.MyClientService - 引用 MyServiceProxies DLL 的 WCF 自托管服务。
3. MyServiceProxies DLL - 从 ClientBase 继承的自定义代理(用于代替“添加服务引用”自动生成的代理)。这只是将实际服务调用委托给 [MyService : IMyService at WinService WCF Host EXE] 处的 base.Channel.OperationName()。
4. WinService WCF Host EXE - 作为一个windows服务运行,作为一个单例,允许多线程调用。来自 WebSite1 的调用查询此单例所持有的内存值。这个单例最终将通过单独的数据层将所有保存在内存中的数据提交到数据库。

WinService 配置为通过 net.tcp 使用双工调用。WinService 将在与 WebSite1 IIS 应用程序相同的机器上运行。

4

1 回答 1

2

我在互联网上找不到任何人甚至询问是否以某种方式支持 ajax 调用双工。也许我无法在这方面找到任何东西的原因是因为我完全误解了一些关键的 WCF 概念,这使得这个问题成为最愚蠢的问题......

可能并不愚蠢,因为我认为您不了解的是 AJAX,而不是 WCF。

在 AJAX 中使用双工合同没有任何意义。双工合约必须期望服务器随时调用合约操作。例如,它不像发布/订阅或请求响应,在消息开始到达之前客户端的操作是必要的。使用双工合同,消息可以随时到达。

谁会听他们的?不是浏览器。如果浏览器要对来自某个远程机器的未经请求的消息做出反应,然后运行代码——好吧,这听起来很像病毒的定义,不是吗?

我认为您在相当长的一段时间内都不会在 JavaScript 中找到对双工合同的支持。

于 2009-07-06T23:41:50.760 回答