2010-06-24 38 views
1

我跟隨this brilliant piece of article解剖和理解使用WCF的聊天。邏輯是當用戶加入聊天時爲該特定用戶創建事件處理程序並存儲在字典中。爲不同的用戶創建單獨的處理程序 - WCF聊天

 lock (syncObj) 
     { 
      if (!checkIfPersonExists(person.Name) && person != null) 
      { 
       this.person = person; 
       chatters.Add(person, MyEventHandler); 
       userAdded = true; 
      } 
     } 

因此,在服務中爲多個用戶存儲多個處理程序。

我的問題是這樣的 -

如何進行服務標識時,僅通過與事件處理程序的幫助下發出的消息的目標用戶?我不明白爲用戶存儲的事件處理程序的唯一性。

handler.BeginInvoke(this, e, new AsyncCallback(EndAsync), 
        null); 

調用客戶端中爲該特定用戶實現了雙工客戶端契約接口的功能?這使他們連接?會議?

注意:我知道這可能是很難理解,沒有通過該文章。我盡我所能以通用的方式提出問題。

問候

NLV

+0

嗯。如預期。 – NLV 2010-06-24 12:39:29

回答

1

我想你是問,服務如何響應發佈/訂閱服務的客戶端。如果是這樣,答案是服務使用客戶端「訂閱」時提供的回調通道OperationContext.Current.GetCallbackChannel<IYourServiceContract>()。如果您深入瞭解這個回調通道,您會看到它維護着與客戶端進行通信的所有必要數據。如果您注意到,在您鏈接的示例應用程序中,作者從人物對象獲取此信息,他希望將其存儲在聊天人數組中。

callback = 
       OperationContext.Current.GetCallbackChannel<IChatCallback>(); 

這是我寫的一篇文章,可能會爲您簡化pub/sub模型。 http://www.codeproject.com/KB/WCF/wcfesb.aspx。這不是一個聊天程序,但可能會更多地解釋如何通過回調通道實現通信。

如果這不是你要求的...請澄清。

+0

我已經發現了。謝謝你回答:)。 – NLV 2010-07-19 17:46:58

相關問題