我正在设计两个WCF服务,所有客户端都将连接到其中之一的通知服务。其中一个服务将是通知服务。
我希望每个客户端都连接到服务,订阅它,然后使用双工回调接口接收通知(服务将在客户端中触发“Notify”操作)。
这是我的设计思路:
我的问题是:当每个客户端连接到我的服务时,我将根据我的数据库中的“用户”表对其进行验证(我将使用UserNamePasswordValidator并实现“Validate”函数)。
要求:每个用户需要根据在数据库中定义的规则接收不同的通知,但他们都使用相同的合同。
例如:
John Smith在数据库中的规则可能是:通知我所有价格超过100美元的新产品。
Jane Doe在数据库中的规则可能是:通知我所有名称以“JA”开头的新产品。
Jim Jabra在数据库中的规则可能是:通知我所有类型为“食品”的新产品。
我的服务将具有检测数据库更改的工作线程(已插入新产品到数据库中)。
然后,它应该循环遍历所有连接的客户端,并为每个客户端仅在其匹配客户端的通知请求时发送新产品的通知。
再次强调-所有客户端都接收相同类型的更新(新产品),但每个客户端应根据数据库中的规则接收不同的产品。
我认为实现此操作的一种方法是使用单例服务,该服务包含以下列表:
客户端终结点
用户对象(来自数据库)
这样-每次工作线程检测到新产品时,它都会循环遍历此列表,并向需要它的人发送通知。这种方法的问题在于为了拥有一个全局客户端列表,我需要将服务设置为Singleton,对吗?
第二种方法是...好吧...我没有另一个想法,可以从工作线程访问连接到服务的客户端列表...
我想我遇到的主要问题是每个客户端可能希望收到不同类型的产品通知。也就是说,发布/订阅方法在这里不太好用,因为我的场景需要服务了解客户端。
有关如何解决这些问题的建议?
我希望每个客户端都连接到服务,订阅它,然后使用双工回调接口接收通知(服务将在客户端中触发“Notify”操作)。
这是我的设计思路:
我的问题是:当每个客户端连接到我的服务时,我将根据我的数据库中的“用户”表对其进行验证(我将使用UserNamePasswordValidator并实现“Validate”函数)。
要求:每个用户需要根据在数据库中定义的规则接收不同的通知,但他们都使用相同的合同。
例如:
John Smith在数据库中的规则可能是:通知我所有价格超过100美元的新产品。
Jane Doe在数据库中的规则可能是:通知我所有名称以“JA”开头的新产品。
Jim Jabra在数据库中的规则可能是:通知我所有类型为“食品”的新产品。
我的服务将具有检测数据库更改的工作线程(已插入新产品到数据库中)。
然后,它应该循环遍历所有连接的客户端,并为每个客户端仅在其匹配客户端的通知请求时发送新产品的通知。
再次强调-所有客户端都接收相同类型的更新(新产品),但每个客户端应根据数据库中的规则接收不同的产品。
我认为实现此操作的一种方法是使用单例服务,该服务包含以下列表:
客户端终结点
用户对象(来自数据库)
这样-每次工作线程检测到新产品时,它都会循环遍历此列表,并向需要它的人发送通知。这种方法的问题在于为了拥有一个全局客户端列表,我需要将服务设置为Singleton,对吗?
第二种方法是...好吧...我没有另一个想法,可以从工作线程访问连接到服务的客户端列表...
我想我遇到的主要问题是每个客户端可能希望收到不同类型的产品通知。也就是说,发布/订阅方法在这里不太好用,因为我的场景需要服务了解客户端。
有关如何解决这些问题的建议?