2012-04-24 53 views
1

可能重複:
WCF Duplex - Push different notifications to each client?WCF雙工 - 將不同的通知推送給每個客戶端?

我設計一個2個WCF服務,我的所有客戶端將連接到。 其中一項服務將是通知服務。

我希望每個客戶端連接到服務,訂閱它,然後接收通知,使用雙工回調接口(該服務將觸發客戶端的「通知」操作)。

這是我的設計理念:

enter image description here

我的問題是: 當每個客戶端連接到我的服務,我會在我的數據庫驗證它針對「用戶」表(我將使用a UserNamePasswordValidator並執行'驗證' 函數)。

要求: 每個用戶都需要根據數據庫中定義的規則接收不同的通知。

假定我的服務檢測到數據庫發生了變化(一種'wine'類型的新產品被插入到數據庫中) - 它現在需要通知客戶端。但並非所有的客戶都需要得到這方面的通知。只有要求更新葡萄酒的客戶才能得到通知。

我該怎麼做?

一旦客戶端連接並使用UserNamePasswordValidator驗證 - 我有某種'ClientID'連接到該客戶端嗎?

我知道我不應該在我的服務中存儲「客戶端端點+客戶端ID」的本地列表,因爲這意味着我必須使用單一服務,對吧?

那麼,如何爲每個連接到該服務的客戶端存儲該客戶端的ID?

我需要知道每個客戶端的ID,以便在數據庫中發生事件時 - 我可以遍歷每個連接的客戶端 - 如果他要求瞭解有關該事件的信息,請檢查每個客戶端,如果是這樣 - 通知他關於那個事件。

希望我的問題被理解...

回答

0

我認爲在實踐中很難做到這一點。

一個可能的解決方案將涉及維護許多不同的服務回調協議列表並公開相同數量的訂閱操作。因此,您的客戶會針對他們感興趣的每個事件調用訂閱操作,然後您的服務可以爲每個訂閱事件調用一次客戶端回調協議。

但是,您必須事先確切知道您的客戶需要提前訂閱哪些內容,因爲這些信息將被編入暴露的服務合同中,因此需要付出更高的代價。

如何將其鏈接到數據庫中定義的規則我不知道。

處理此問題的另一種方式是轉移到像NServiceBus這樣的pubsub消息平臺,但這意味着要遠離使用WCF。

+0

我覺得我的問題寫得不好,所以我會重新發布它作爲一個新問題。 – 2012-04-24 12:23:40

+0

這裏是我的轉貼問題的鏈接:[-Question-](http://stackoverflow.com/questions/10297892/wcf-duplex-push-different-notifications-to-each-client) – 2012-04-24 12:33:44

相關問題