1

可能重复:
WCF Duplex - 向每个客户端推送不同的通知?

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

我希望每个客户端都连接到服务,订阅它,然后使用双工回调接口接收通知(服务将触发客户端中的“通知”操作)。

这是我的设计理念:

在此处输入图像描述

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

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

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

我该怎么做呢 ?

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

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

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

我需要知道每个客户端的 ID,以便当数据库中的事件发生时——我可以遍历每个连接的客户端——检查每个客户端是否要求被告知该事件——如果是的话——通知他事件。

希望我的问题被理解...

4

1 回答 1

0

我认为在实践中很难做到这一点。

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

但是,您必须提前确切地知道您的客户想要订阅什么,因为这些信息将被编入公开的服务合同中,因此更改成本很高。

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

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

于 2012-04-24T10:57:18.627 回答