2011-12-12 70 views
0

我用下面的代碼開始從我的WPF應用程序的NServisBus.host.exe文件:如何從WPF應用程序發送消息來測試NServiceBus.host服務器?

System.Diagnostics.Process.Start("NServiceBus.Host.exe"); 

我已經爲我的NServiceBus主機的以下端點設置:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server 
{ 
} 

我有下面的類在我的NServiceBus主機服務器上。我需要在我的wpf應用程序中創建這個類對象(在執行NServiceBus.host.exe之後)。

public class OrderMessaging 
{ 
    public IBus Bus { get; set; } 

    public void SendRouteMessageReceived(LabRoutingUpdateMessage routingUpdateMessage) 
    { 
     Bus.Send(new RouteMessageReceived(routingUpdateMessage)); 
    } 
} 

通過它引用的DLL文件(在我的WPF應用程序),我會再訪問此消息類,並使用下面的代碼在我的WPF應用程序將消息發送到服務器:

OrderManagement.OrderMessaging routeMessageReceived = new OrderManagement.OrderMessaging(); 
routeMessageReceived.Bus = _bus; //Main problem is here! Wpf app does does not have handle on NServiceBus server Bus. 
routeMessageReceived.SendRouteMessageReceived(_routing); 

我可以使用WPF應用程序向我的NServiceBus.host.exe發送消息(當使用process.start運行時)嗎?有沒有一種方法可以使用自定義初始化在我的wpf應用程序中託管我自己的NServiceBus,並仍然正確配置我的端點?或者有沒有一種方法可以在我的wpf應用程序中處理總線? 任何示例代碼非常感謝。提前致謝!

回答

2

這聽起來像你希望你的WPF應用程序訪問NServiceBus.Host.exe託管端點中的確切總線實例。如果這是真的,那就表明你認爲只有一個公共汽車,事實並非如此。

「總線」對於您的終端來說就像以太網卡很像您的計算機。每臺計算機都需要一張以太網卡,並用它們互相通信。同樣,「總線」就像你的以太網卡。每個進程都有自己的,他們使用它們互相發送消息。

NServiceBus.Host.exe通過控制檯窗口使得託管端點變得簡單,或者使您能夠將其作爲Windows服務安裝,以便它始終運行且可用。你應該從來沒有需要做一個Process.Start()。它也使總線的配置非常簡單 - 幾乎是自動的。您不必執行復雜的Configure.With()...流利配置位。

與任何其他應用程序類型(Windows控制檯應用程序,Windows窗體應用程序,WPF應用程序),您需要「主機」的巴士自己。這意味着,在做整體流暢的配置位和分配所產生的「下iBus」實例,你可以從應用程序的任何部分訪問一個公共靜態變量。 (在NServiceBus.Host版本,你不必有一個公共靜態參考巴士因爲主機創建它作爲一個單身,和依賴注入容器將其插入任何類創建,要求它。)

一旦你的WPF應用程序和NServiceBus.Host.exe進程都啓動並初始化了它們各自的總線,那麼WPF應用程序的總線可以向NServiceBus.Host.exe的總線發送消息。

1

這聽起來有點奇怪,你想使用process.start。爲什麼不直接將主機作爲Windows服務運行並讓它始終運行,以便它能夠收到任何進入的消息?不管怎樣,如果進程正在運行並加載消息處理程序,它應該處理這些消息。

當然,如果您發送消息到隊列中作爲主機的輸入隊列,就發送到該隊列。

我想你是問你是否可以在你的主機應用程序中使用wpf應用程序中的總線實例,如果是這樣,答案是你不會想要。只需在wpf應用程序中創建一個總線實例即可。像nservicebus這樣的東西的整個意義在於促進通過不同端點進行可靠的進程間通信。只是使用它。

您可以在wpf應用程序中設置一個總線,就像任何其他應用程序一樣,並使用它來發送消息。如果您希望wpf應用程序也處理消息,則需要爲包含處理程序的程序集加載消息處理程序。

相關問題