WCF Duplex - 向每个客户端推送不同的通知?

时间:2012-04-24 10:23:44

标签: wcf push-notification authentication

  

可能重复:
  WCF Duplex - Push different notifications to each client?

我正在设计一个我所有客户将连接的2 WCF服务。 其中一项服务将是通知服务。

我希望每个客户端连接到服务,订阅它然后使用双工Callback接口接收通知(该服务将在客户端中激活'Notify'操作。)

这是我的设计理念:

enter image description here

我的问题是: 当每个客户端连接到我的服务时,我将根据我的数据库中的“用户”表对其进行验证(我将使用 UserNamePasswordValidator 并实现'验证'  功能)。

要求: 每个用户都需要根据数据库中定义的规则接收不同的通知。

假设我的服务检测到数据库中的更改(“wine”类型的新产品已插入数据库) - 它现在需要通知客户端。但并非所有客户都需要通知此事。只有那些要求更新葡萄酒的客户才会收到通知。

我该怎么做?

客户端连接并使用 UserNamePasswordValidator 进行验证后 - 我是否将某种“ClientID”附加到该客户端?

我知道我不应该在我的服务中存储“客户端端点+客户端ID”的本地列表,因为这意味着我必须使用Singleton服务,对吗?

那么如何为连接到服务的每个客户端存储 - 该客户端的ID?

我需要知道每个客户端的ID,以便在数据库中发生事件时 - 我可以遍历每个连接的客户端 - 检查每个客户端是否请求了解该事件 - 如果是 - 请通知关于那个事件他。

希望我的问题得到理解......

1 个答案:

答案 0 :(得分:0)

我认为在实践中很难实现这一目标。

可能的解决方案是维护许多不同的服务回调合同列表并公开相同数量的订阅操作。因此,您的客户会为他们感兴趣的每个事件调用订阅操作,然后您的服务就可以为每个订阅的事件调用一次客户回调合约。

但是,您必须事先知道客户想要订阅的内容,因为这些信息将被编入暴露的服务合同中,因此更改成本很高。

如何将此链接到您不知道的数据库中定义的规则。

处理此问题的另一种方法是转移到像NServiceBus这样的pubsub消息传递平台,但这意味着不再使用WCF。