wcf operationContext

时间:2009-06-05 12:19:46

标签: wcf

你好我有一个桌面应用程序,它与我建立的wcf服务进行通信

我希望能够在没有db(statefull服务器)的情况下管理服务器内的登录用户

我还希望服务器知道如何从同一台计算机处理2个客户端,最简单的方法是什么?

我还拥有客户使用的多项服务(登录服务和应用服务)

是否有任何可以帮助我的operationContext属性?

1 个答案:

答案 0 :(得分:1)

您可以对服务器内的已记录用户进行详细管理。我已经创建了一个处理这种情况的个人模式,它通常是这样的:

  • 在WCF服务器内创建一个客户端类,它将包含有关客户端的所有必需信息。
  • 在服务中创建2个方法:logIn,logOut。 login方法应该能够收集有关您要存储的客户端的所有信息。确保定义可以唯一标识客户端实例的属性。当客户端连接到服务器时,它会调用login方法,允许服务器从客户端收集和保存信息。如果使用回调,则在客户端obejt中保存CallBack上下文对象。您现在可以将客户端对象保存在WCF服务器实例中(我使用了一个词典)。当客户端注销时,它会调用注销方法,服务器会删除该条目。
  • 在服务器中创建一个KeepAlive方法,常规检查连接的客户端是否仍然连接(如果网络出现故障或应用程序崩溃,客户端可能无法调用注销方法)。

我认为这是管理服务器中客户端的最简单方法(不是说它是最好的)。 只要您有一种唯一识别客户端的方法,从同一台计算机拥有多个客户端(在客户端登录时保存上下文)没有问题。

至于你的上一个问题,拥有多项服务应该不是问题。事实上,您拥有相同的WCF服务器,并为您提供的不同服务提供不同的合同(和端点)。 ALl合同驻留在同一个WCF服务器实例中,因此它们都可以访问连接的客户端列表。

如果您还有其他问题,我很乐意回答。