我的想法是拥有一台将托管2个WCF服务的Windows服务。
WCF服务A 将用于想要访问数据库并对其执行CRUD操作的客户端。它将公开“GetProducts”和“AddProduct”等操作。
WCF服务B 将用于WPF“管理员”控制台,该控制台将连接到该服务,并且将能够查看哪些客户端应用程序连接到 WCF服务A ,它还会公开将客户端与服务断开连接的操作,以及查看客户端执行了哪些操作。
我的问题是:
问题1)为了维护连接到 WCF服务A 的客户端列表 - 我可能需要在服务A的实例中添加某种类型的列表客户的名称(每个客户端都有一个唯一的名称)。这是否意味着我需要使用“单一实例”模式创建 WCF服务A (否则每个客户端将使用仅具有1个客户端的客户端列表生成它自己的服务实例)。 或者是将客户列表放在 WCF服务A 之外的所有实例将使用的一些静态类中的更好方法(可能使用锁?)
问题2)在某个“经理”容器中是否有任何设计这两种服务的智能方法?
谢谢。
答案 0 :(得分:0)
对于两个合同(标准和管理员),您可以使用具有两个端点的单个服务。您可以对两个端点应用不同的安全性。
如果将当前连接的用户列表保持为单例,则可以从任一端点更新和读取它,而无需使用InstanceContextMode来控制它。请记住,您很可能有多个线程试图操作单例,因此您必须确保在访问时使用线程同步