好的,所以我正在改变我的服务向客户推送通知的方式。现在 ServiceModelEx 的工作方式是,如果任何客户端订阅了一个事件,它会向所有订阅的用户发送消息,无论该消息是否是给他们的。在客户端,我确定消息是否适合他们。正如您可以想象的那样,这会产生大量的网络流量,尤其是当您只需要发送到某些客户端时。
现在我正在使用TransientSubscriptions
.
我尝试调试代码,但我唯一能说的是每个订阅者都存储为某种类型的 Generic CallbackChannel
。
每个 TransientSubscriber 都是这样定义的。
T subscriber = OperationContext.Current.GetCallbackChannel<T>();
当它添加一个 TransientSubscriber 时,它会执行此操作。
static void AddTransient(T subscriber, string eventOperation) {
lock (typeof(SubscriptionManager<T>)) {
List<T> list = m_TransientStore[eventOperation];
if (list.Contains(subscriber)) {
return;
}
list.Add(subscriber);
}
}
如果有更好的方法,那么我愿意接受建议。我只想向 1 个客户而不是所有客户发送通知。
这里还有一篇关于 ServiceModelEx的msdn文章。