您好,我们公司正在开发 wcf 服务。这被用作服务器,它工作得很好。将鼠标悬停在客户的愿望是,在他们登录到应用程序后,他们想查看哪些用户也登录了。我读到了 CallbackContract(基于一些 wcf 聊天应用程序)。我们怎样才能实现这个目标?
问问题
368 次
1 回答
1
类似的问题在这里问
您可以明确地管理服务器内的登录用户。我创建了一个处理这种情况的个人模式,通常是这样的:
在 WCF 服务器内创建一个客户端类,该类将保存有关客户端的所有所需信息。
在服务中创建 2 个方法:logIn、logOut。登录方法应该能够收集有关您要存储的客户端的所有信息。确保定义可以唯一标识客户端实例的属性。当客户端连接到服务器时,它调用登录方法,允许服务器收集并保存来自客户端的信息。如果使用回调,这是在客户端对象中保存回调上下文对象的地方。您现在可以将 Client 对象保存在 WCF 服务器实例中(我使用字典)。当客户端注销时,它会调用注销方法,服务器会删除该条目。
- 在服务器中创建一个 KeepAlive 方法,该方法定期检查连接的客户端以查看它们是否仍然连接(在网络故障或应用程序崩溃的情况下,客户端可能不会调用注销方法)。
我认为这是在服务器中管理客户端的最简单的方法(并不是说它是最好的)。只要您有一种唯一标识客户端的方法,来自同一台计算机的多个客户端就没有问题(您在客户端登录时保存上下文)。
至于您的最后一个问题,拥有多项服务应该不是问题。事实上,对于您提供的不同服务,您拥有具有不同合同(和端点)的相同 WCF 服务器。所有合同都驻留在同一个 WCF 服务器实例中,因此它们都可以访问已连接的客户端列表。
如果您还有其他问题,我很乐意回答。
您可以在此处找到实际构建所需的 WCF 服务所需的代码
于 2010-02-04T20:46:52.660 回答