【问题标题】:How can work WinForm client with WCF session?WinForm 客户端如何与 WCF 会话一起工作?
【发布时间】:2015-11-06 13:03:04
【问题描述】:

我有一个分布式应用程序,其中 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)

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

【问题讨论】:

  • 我的问题更多的是不同的。
  • 那么,我的建议解决了你的问题吗?

标签: c# winforms wcf session


【解决方案1】:

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()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多