C# 为不同用户创建单独的处理程序-WCF chat

C# 为不同用户创建单独的处理程序-WCF chat,c#,.net,wcf,chat,duplex,C#,.net,Wcf,Chat,Duplex,下面我将剖析和理解使用WCF聊天。其逻辑是,当用户加入聊天时,会为该特定用户创建一个事件处理程序,并将其存储在字典中 lock (syncObj) { if (!checkIfPersonExists(person.Name) && person != null) { this.person = person; chatters.Add(

下面我将剖析和理解使用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

我想你是在问,一个服务如何响应一个pub/sub服务中的客户。如果是这样,那么答案是服务使用客户端“订阅”时提供的callbackchannel
OperationContext.Current.GetCallbackChannel()
。如果深入研究此回调通道,您将看到它维护与客户端通信所需的所有数据。如果您注意到,在您链接的示例应用程序中,作者是从person对象中获取的,b/c他希望将其存储在chatters数组中

callback = 
                 OperationContext.Current.GetCallbackChannel<IChatCallback>(); 
回调=
OperationContext.Current.GetCallbackChannel();
下面是我写的一篇文章,它可能会为您简化发布/订阅模型。它不是一个聊天程序,但可能会更多地解释如何通过回调通道实现通信


如果这不是你想要的。。。请澄清

我想你是在问,在酒吧/酒吧服务中,服务是如何响应客户的。如果是这样,那么答案是服务使用客户端“订阅”时提供的callbackchannel
OperationContext.Current.GetCallbackChannel()
。如果深入研究此回调通道,您将看到它维护与客户端通信所需的所有数据。如果您注意到,在您链接的示例应用程序中,作者是从person对象中获取的,b/c他希望将其存储在chatters数组中

callback = 
                 OperationContext.Current.GetCallbackChannel<IChatCallback>(); 
回调=
OperationContext.Current.GetCallbackChannel();
下面是我写的一篇文章,它可能会为您简化发布/订阅模型。它不是一个聊天程序,但可能会更多地解释如何通过回调通道实现通信

如果这不是你想要的。。。请澄清