如何使用带有WCF会话的WinForm客户端

本文关键字:WinForm 客户端 会话 WCF 何使用 | 更新日期: 2023-09-27 18:20:55

我有一个分布式应用程序,其WinForm客户端连接到WCF服务。目前我不使用会话。我想使用会话,因为应用程序有登录、操作和注销。

在WCF方面,我有以下代码

[ServiceContract]
public interface IOperationsUser
{
    [OperationContract]
    User login(User loginUsers);
    *****
}

在客户端,我使用这种方式

private OperationsUser WCF_OPERATIONS_USER =  new OperationsUser ();

因此调用方法

User userLogin = WCF_OPERATIONS_USER.login(myUser)

如何为每个用户使用会话?

如何使用带有WCF会话的WinForm客户端

1)使用InstanceContextMode=InstanceContextMode.PerSession创建一个服务,这样可以保证您拥有相同的服务实例来为后续请求提供服务。

2) 要启动新会话,请使用标有OperationContract(IsInitiating = True) 的服务操作

3) 在一个会话中,将使用一个相同的服务实例,因此您可以在该服务中拥有一个状态。

4) 关闭会话使用标记有OperationContract(IsTerminating = True) 的方法

对于IsInitiatingIsTerminating方法,您也可以添加IsOneWay=true

[ServiceContract(SessionMode = SessionMode.Allowed)]
public interface Iservice
{
   // you do not need really to return anything
   [OperationContract(IsInitiating = True, IsOneWay=true)]
   void Login(UserData user)
   [OperationContract(IsInitiating = false)]
   double ProcessData(double n1, double n2)
   // your implementation can do some finalization or even can be empty.
   // the call will simply drop the session
   [OperationContract(IsInitiating = False, IsTerminating =True, IsOneWay=True)]
   void Logout()
}