2011-12-13 64 views
1

我正嘗試連接到MSMQ併發送一些消息。不幸的是,這個項目中有「先前的藝術」,我應該模仿它。這個以前的應用程序連接的方式如下:連接到MSMQ,「正確」的方式?

if (MSMQ in workgroup mode) 
{ 
    connect via FormatName; 
} 
else 
{ 
    if (connected to network) 
     connect via PathName; 
    else 
     connect via GUID (as FormatName) 
} 

這一切是否真的有必要?不應該有一個正確的FormatName足以連接到一個隊列?

此外,通過調用NetGetDCName()來檢測「連接到網絡」,它在我的MSDN中被標記爲廢棄,這增加了我爲什麼以這種方式連接應用程序的困惑。

TL; DR:上述連接邏輯是錯誤的,過時的還是正確的?我是否可以通過簡單地使用FormatName連接所有情況來簡化此操作?

回答

4

該代碼通過查找域控制器來確定域是否可用。如果域不可用,則MSMQ被假定爲以非域或工作組模式工作。

域模式允許使用公共隊列和路徑名尋址。 工作組模式改爲使用專用隊列和格式名稱尋址(儘管這是一種簡化)。

因此,代碼確實決定了要使用的消息尋址模式。

沒有足夠的關於環境的信息來說明是否可以對所有情況使用formatname。

乾杯
約翰Breakwell

+0

所以基本上,我的最簡單的辦法是簡單地做他們的方式一樣嗎?即使使用過時的功能?我問過這個環境,他們說它應該是一個工作組,但我仍然需要覆蓋所有的基礎(我非常警惕「應該」:))。 –

+1

obselete代碼不是MSMQ的一部分,所以我不能說。我期望它應該能夠在域中的PDC模擬器作出響應。我猜測代碼是從Windows NT4時代開始的。 FormatName尋址可以連接到任何東西,所以你應該可以標準化。 –

+0

如果FormatName很好,那就是我需要的!謝謝你的幫助! –