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