我正在设计我的所有客户都将连接到的 2 个 WCF 服务。其中一项服务将是通知服务。
我希望每个客户端都连接到服务,订阅它,然后使用双工回调接口接收通知(服务将触发客户端中的“通知”操作)。
这是我的设计理念:
我的问题是:当每个客户端连接到我的服务时,我将根据数据库中的“用户”表对其进行验证(我将使用UserNamePasswordValidator并实现“验证”功能)。
要求:每个用户需要根据数据库中定义的规则接收不同的通知。
假设我的服务检测到数据库中的更改(将“葡萄酒”类型的新产品插入到数据库中) - 它现在需要通知客户端。但并非所有客户都需要被告知这一点。只有要求更新葡萄酒的客户才会收到通知。
我该怎么做呢 ?
一旦客户端连接并使用UserNamePasswordValidator进行验证- 我是否有某种“ClientID”附加到该客户端?
我知道我不应该在我的服务中存储“客户端端点+客户端 ID”的本地列表,因为这意味着我必须使用单例服务,对吗?
那么如何为每个连接到服务的客户端存储该客户端的 ID 呢?
我需要知道每个客户端的 ID,以便当数据库中的事件发生时——我可以遍历每个连接的客户端——检查每个客户端是否要求被告知该事件——如果是的话——通知他事件。
希望我的问题被理解...