2013-10-23 65 views
2

我有一個WCF服務,使用溫莎城堡和Nhibernate,目前我使用LifestylePerWebRequest和everythig工作正常。我想添加到服務中,以便它也偵聽來自隊列的消息,並調用與web服務相同的方法,但是我意識到這可能不起作用,因爲我的Nhibernate存儲庫正在使用LifestylePerWebRequest範圍。城堡溫莎多生活方式(Nhibernate)

我可以根據情況動態改變生活方式嗎?

感謝

+0

你真正的問題在這裏是不可理解的,請詳細說明情況。你的WCF服務會監聽一個隊列嗎?你的版本庫和監聽邏輯之間有什麼關係?如果您需要兩個不同關注的組件,您可以使用不同的生活方式註冊兩次。 – mecek

+0

爲什麼您的存儲庫是每個Web請求,如果它們是無狀態的(它們應該是無狀態的),則可以將它們註冊爲單例,但是您必須註冊nhibernate Session perwebrequest或每個線程,因爲Session不能使用多個線程。 – mecek

+0

我有同樣的問題。對我來說,一切都在WCF調用的上下文中工作,但是當我嘗試從(Windows)服務中訪問我的回購站時,它會抱怨。你找到解決方案嗎? –

回答

0

你爲溫莎城堡檢查'WCF Integration Facility'

我想你應該看看它。

有幾個特定的​​生活方式,可以幫助你(例如PerWcfSessionPerWcfOperation

如果你需要,你可以使用自定義安裝程序爲每個應用程序的不同應用的不同的生活方式。

+0

我已經在使用WCF集成工具。所有這些在通過Web請求處理呼叫時都可以正常工作。但我也想通過消息隊列呼叫我的服務層 - 這不會通過網絡請求,這意味着我的生活方式無效。我需要將生活方式改變爲可能的範圍。但我不確定在安裝後如何完成這項工作 – pogorman

+0

您有多少個應用程序?您是否有一個Web應用程序處理Web請求,另一個Web應用程序(例如WCF)應該處理來自消息隊列的請求? –