I have two machines in different domains. The domains are not known to each other (no trust between them). I wish to use the net.msm开发者_运维百科q binding to communicate data from one endpoint to another.
So, let A and S be two machines, where A must be able to send messages to S. Then, in the config file of A, there is this binding definition:
<netMsmqBinding>
<binding name="msmq_Binding"
durable="true"
useActiveDirectory="false"
exactlyOnce="false">
<security>
<transport msmqAuthenticationMode="None" msmqProtectionLevel="None"/>
</security>
</binding>
</netMsmqBinding>
In addition, the following address is used to refer the messaging queue on server: net.msmq://localhost/private/nc. And on the same server the WCF configuration defines the endpoint:
<service name="Shunra.Common.Csla.WcfOneWayPortal" >
<endpoint address="net.msmq://localhost/private/nc"
binding="netMsmqBinding"
bindingConfiguration="nc_msmq"
contract="Shunra.Common.Contract.IWcfOneWayPortal" />
</service>
In my tests this setup works, but, alas! I am testing it on the local machine, so none of the real life constraints are applied. My question - is it possible to use the private queue in my scenario in real deployment? In reality, the two machines are located on two unknown domains with no trust between them. Or should we use the public queue?
Thanks.
There is not much difference between the Public and Private Queues, as the Public Queues are only the ones listed in the Active Directory. however both type of queues can be accessed from the external applications, but as the MSMQ use a custom protocol, so this can cause problems in the connectivity especially if firewalls are involved.
An Alternative which can use the http to communication between the two queues is the HTTP Bridge mentioned in the Programming WCF Services
精彩评论