wcf http绑定vs dualhttp绑定

时间:2012-06-18 12:09:03

标签: c# wcf

我正在尝试使用wcf构建一个http侦听器(webservice)。此侦听器是更大的桌面应用程序的一部分。此桌面应用程序还调用http侦听器。

当侦听器接收数据时,应将其传递给桌面应用程序。我尝试构建一个httpbinding服务并使用回调机制

[OperationContract(IsOneWay = true)]
void OnDataReceived(Data data);

问题是因为回调我需要wsDualhttpbinding。

我是否真的需要使用dualhttp将数据从一个.NET应用程序发送到另一个应用程序,或者我错过了什么?

由于

3 个答案:

答案 0 :(得分:2)

是的,您需要双重或双工通信。 HTTP本质上是单向协议。客户端必须调用服务器。服务器没有办法与客户端交谈。

答案 1 :(得分:1)

如果您使用的是回调机制,而不是轮询机制,那么是的,您需要双重绑定,因为WCF服务需要能够同时发送和接收消息(而不是接收和返回响应)

答案 2 :(得分:1)

您的问题是您有一个作为WCF服务公开的事件源。服务实时向其客户端发送事件的唯一方法是通过全双工连接,这意味着使用duathttp或dualtcp绑定。

但是,使用双面打结最多也很复杂。允许客户端订阅服务然后在客户感兴趣的事件发生时接收消息会更简单。

这比双工绑定简单得多,因为客户端和服务之间没有实际连接,只有异步消息。

虽然WCF为msmq传输提供绑定,但它不提供与这种pub-sub支持的绑定,因此您可以为此编写代码,也可以使用像NServiceBus这样的开源消息传递总线。