如何使用带有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)
如何为每个用户使用会话?
1)使用InstanceContextMode=InstanceContextMode.PerSession
创建一个服务,这样可以保证您拥有相同的服务实例来为后续请求提供服务。
2) 要启动新会话,请使用标有OperationContract(IsInitiating = True)
的服务操作
3) 在一个会话中,将使用一个相同的服务实例,因此您可以在该服务中拥有一个状态。
4) 关闭会话使用标记有OperationContract(IsTerminating = True)
的方法
对于IsInitiating和IsTerminating方法,您也可以添加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()
}