2012-08-28 122 views
1

這裏是場景: 我們正在實現一個應用程序,它允許用戶在場所中與端點進行「通信」。我們正在做一些研究並Windows Azure服務總線主題似乎是一個不錯的選擇,因爲它可以幫助我們創建雙向通信&幫助我們解決防火牆,NAT設備的問題。
但是,當用戶通過無狀態Web應用程序與機器進行交互(在本例中爲MVC 3)時,對每個請求重新創建TopicClient未被接受。
由於每個用戶都有自己的端點,因此有人建議分享一個TopicClient也不起作用。
另一種方法是使用會話爲每個用戶保留TopicClient,但使用會話對於無狀態並託管在Windows Azure Web應用程序上似乎不是一個好的選擇。
在MVC 3中實現Windows Azure服務總線主題/訂閱?

任何幫助將不勝感激。

+0

我對你描述的有點遺憾,你的第一個場景是談論服務總線中繼,在場所託管WCF服務通過SB端點公開,可以通過SB從客戶端消費。第二部分討論主題/訂閱,在這種情況下,您將在客戶端創建一個BrokerMessage,然後從訂閱服務總線隊列中讀取該消息(基於訂戶數量),訂閱(發佈/訂閱模型)你解釋你想要使用哪種場景? – user728584

+0

對不起,讓你的困惑。第一種情況正是我想要的(我只是將自己與主題/訂閱混淆)。目前,每次向SB發出請求時都必須創建客戶端並連接到SB,這很慢。因此,我想在用戶登錄時創建SB客戶端實例,然後在整個會話中重新使用該實例。但是,有些人認爲會話對於Windows Azure服務是一種很好的做法。請指教。 –

回答

0

客戶端和服務之間的實際連接存在於MessagingFactory級別,從該工廠創建的所有TopicClient對象將共享相同的連接。因此,您可以根據需要緩存MessagingFactory和/或儘可能多的TopicClient。另外這些對象是線程安全的,因此可以被不同的消費者同時共享和使用。

+1

謝謝阿布舍克給你答案。然而,我正在實現的應用程序是一個Web應用程序,緩存對象也是一個大問題。你有什麼建議我應該如何緩存這些對象?謝謝 –

相關問題