我在不同的域中有两台机器。这些域彼此不为人知(它们之间没有信任)。我希望使用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>
在我的测试中,这个设置有效,但是,唉!我在本地机器上测试它,因此没有应用任何现实生活限制。 我的问题 - 是否可以在我的场景中使用私有队列进行实际部署?实际上,这两台机器位于两个未知域之间,它们之间没有信任。 或者我们应该使用公共队列吗?
感谢。
答案 0 :(得分:0)
公共队列和专用队列之间没有太大区别,因为公共队列只是Active Directory中列出的队列。但是,可以从外部应用程序访问这两种类型的队列,但由于MSMQ使用自定义协议,因此这会导致连接问题,尤其是涉及防火墙时。
可以使用http进行两个队列之间通信的替代方案是 编程WCF服务
中提到的 HTTP Bridge >