如何通过跨机器实现发布/订阅通信

时间:2013-01-07 11:32:52

标签: wcf c#-4.0 wcf-binding

我在服务器Windows 2008上托管了.Net服务,并且.Net客户端通过互联网连接到此服务器。

我想使用wsDualHttpBinding实现与Microsoft示例相同的发布订阅模型,其中客户端可以订阅服务上的事件,并在数据可用时将数据推送到它们。

我在服务器上实现了服务,并且能够成功浏览。但是当我尝试从客户端进行通信时,它最终会超时(我在文件客户端和服务器上增加了配置文件的时间属性)

客户端配置文件:    

<client>
  <endpoint name="" address="http://x.x.x.x/servicemodelsamples/service.svc" binding="wsDualHttpBinding" bindingConfiguration="Binding1" contract="Microsoft.ServiceModel.Samples.ISampleContract"/>
</client>

<bindings>
  <wsDualHttpBinding>
    <!--If running in cross machine then replace localhost with the FQDN of the machine on whihc datasource.exe is run-->
    <binding name="Binding1" clientBaseAddress="http://xxxx:xxxx/myClient/" closeTimeout="00:05:00"
        openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
        bypassProxyOnLocal="false" maxBufferPoolSize="524288" maxReceivedMessageSize="500000000"
        useDefaultWebProxy="true">
      <security mode="None">
        <message clientCredentialType="None" negotiateServiceCredential="false" />
      </security>

    </binding>
  </wsDualHttpBinding>
</bindings>

1 个答案:

答案 0 :(得分:1)

WSDualHttpBinding不适用于互联网上的普通客户。

这个答案解释了原因:Connecting over internet to WCF service using wsDualHttpBinding times out

由于您的客户端是.NET,因此您应该能够使用双工NetTcpBinding