2011-01-12 74 views
0

我有一個靜態類庫,我用它來爲ASP.NET MVC3應用程序提供服務。NServiceBus使用靜態類庫

我想讓我的腦袋圍繞提供異步數據庫調用的最佳方式。我有一個將數據發送到節點的應用程序,它將節點傳遞給節點知道的所有節點等等。

我正在使用NServiceBus2接受來自Web客戶端的節點消息。控制然後被髮回到web應用程序以允許控制器完成並因此將頁面返回給用戶。

在後臺,一個監聽器拿起那條消息並啓動節點數據庫拖網。我創建了一個新的類庫,這是一個可以正常工作的偵聽器。

我的問題是發佈。每次調用方法時都必須創建總線嗎?我可以在哪裏存儲公交車?我想我可以嘗試WCF路線?


澄清

  • 我不認爲這是一個偉大的想法,直接從Web應用程序提高的消息 - 以同樣的方式,你可能不會把DB代碼在控制器中。我想有一個單獨的類庫,它是'業務邏輯'。
+0

聽起來像你使用NServiceBus錯誤。 – Phill 2011-01-12 09:05:52

回答

0

有幾種方法可以通過ASP.NET Web應用程序在總線上獲取消息。首先,您可以在全球範圍內引導一次總線(global.asax或其他)併爲其提供參考。我們更喜歡通過一些抽象來引用總線,通常是一個類,如ServiceAgent <T>其中T是一個消息,您將在內部Bus.Send()。如果您不想在您的Web應用程序中增強總線,另一種方法是將您的NServiceBus端點作爲WCF服務公開。這隻需要通過WcfService < TRequest,TResponse >來實現一個類。從那裏你可以簡單地調用暴露的SOAPy服務。如果您不喜歡SOAP,則可以對端點進行不同的配置。從你的端點中,你可以做一個Publish()。

0

您創建每個服務的總線。服務可以是Windows服務,win-forms應用程序或您的情況下的網站。
在網站/ web服務場景中,我通常在global.asax的application_start事件中創建總線。

您可以將總線保存在容器中,例如StructureMap或Castle Windsor。

不直接從您的網站發佈消息,而是調用發佈消息的wcf服務。或使用從您的網站發送。花點時間瞭解與nservicebus進行消息傳遞的不同用法。特別是pub/sub和發送/回覆場景在使用什麼時候的差異。

您的其他文字:我不明白你的情況。如果您還有其他問題,請編輯您的原始帖子以幫助我們理解。