如何将消息队列设置为两个WCF端点之间的通信通道?

时间:2010-10-24 20:00:58

标签: .net wcf msmq

我在不同的域中有两台机器。这些域彼此不为人知(它们之间没有信任)。我希望使用net.msmq绑定将数据从一个端点传递到另一个端点。

所以,让A和S成为两台机器,其中A必须能够向S发送消息。 然后,在A的配置文件中,有这个绑定定义:

<netMsmqBinding>
  <binding name="msmq_Binding"
           durable="true"
           useActiveDirectory="false"
           exactlyOnce="false">
    <security>
      <transport msmqAuthenticationMode="None" msmqProtectionLevel="None"/>
    </security>
  </binding>
</netMsmqBinding>

此外,以下地址用于引用服务器上的消息传递队列: 的 net.msmq://本地主机/私人/ NC 即可。在同一台服务器上,WCF配置定义了端点:

<service name="Shunra.Common.Csla.WcfOneWayPortal" >
  <endpoint address="net.msmq://localhost/private/nc"
            binding="netMsmqBinding"
            bindingConfiguration="nc_msmq"
            contract="Shunra.Common.Contract.IWcfOneWayPortal" />
</service>

在我的测试中,这个设置有效,但是,唉!我在本地机器上测试它,因此没有应用任何现实生活限制。 我的问题 - 是否可以在我的场景中使用私有队列进行实际部署?实际上,这两台机器位于两个未知域之间,它们之间没有信任。  或者我们应该使用公共队列吗?

感谢。

1 个答案:

答案 0 :(得分:0)

公共队列和专用队列之间没有太大区别,因为公共队列只是Active Directory中列出的队列。但是,可以从外部应用程序访问这两种类型的队列,但由于MSMQ使用自定义协议,因此这会导致连接问题,尤其是涉及防火墙时。

可以使用http进行两个队列之间通信的替代方案是 编程WCF服务

中提到的 HTTP Bridge >