2010-10-24 27 views
1

我有兩臺機器在不同的領域。域名彼此不知道(他們之間沒有信任)。我希望使用net.msmq綁定來將數據從一個端點傳遞到另一個端點。如何將消息隊列設置爲兩個WCF端點之間的通信通道?

所以,讓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:// localhost/private/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

標記嗨提到HTTP橋,我需要做同樣的事情,我完全新的WCF。你想要做的事情似乎是要走的路。你有沒有設法讓它工作? – 2011-09-06 15:37:48

+0

@ chrisp_68 - 我打算給你兩個建議,目前你可能不會感激,但如果你聽他們的話 - 你會在以後爲自己節省很多麻煩。 1.不要使用WCF,而要看看OpenRasta。 2.不要使用MSMQ。無需開始排隊或採取一些開源實施。這兩個建議都是基於我個人對我們項目的體驗。在使用MSMQ近兩年後,我們完全拋棄了它,在使用WCF近3年後,我們用服務器端的OpenRasta和客戶端的Hammock進行了純REST通信。 – mark 2011-09-06 17:28:28

回答

0

公共隊列和專用隊列之間沒有太大的區別,因爲公用隊列只是Active Directory中列出的那些隊列。但是,這兩種類型的隊列都可以從外部應用程序訪問,但由於MSMQ使用自定義協議,所以這可能會導致連接問題,特別是涉及防火牆時。它可以使用HTTP通信的兩個隊列之間

另一種方法是在編程WCF服務