• WCF 中状态的保存


    WCF 状态的保存分为两步:
          (1) 使用SessionMode 来使Session有效化
                

                [ServiceContract(SessionMode=SessionMode.Required)]
                public interface ICalculator
                {
                        [OperationContract(IsOneWay=true)]
                        void Adds(double x);

                        [OperationContract]
                        double GetResult();
                }

          (2)ServiceBehavior 里面利用参数InstanceContextMode设定到底使用哪一种Session方式
                

                [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
                public class CalculatorService:ICalculator
              {
                  private double _result;

                  public double Result
                  {
                      get { return _result; }
                      set { _result = value; }
                  }

                  public void Adds(double x)
                  {
                      Console.WriteLine("The Add Method is invoked and The current SessionID is {0} ",OperationContext.Current.SessionId);
                      this._result += x;
                  }

                  public double GetResult()
                  {
                      Console.WriteLine("The GetResult Method is invoked and The current SessionID is {0} ", OperationContext.Current.SessionId);
                      return this._result;
                  }

                  public CalculatorService()
                  {
                      Console.WriteLine("CalculatorService object has been Created ");
                  }


                  ~CalculatorService()
                  {
                      Console.WriteLine("CalculatorService object has been destoried ");
                  }

              }


    SessionMode 有三种值:
    (1)Allowed 默认选值,允许但不强制使用Session
    (2)Required 强制使用Session
    (3)NotAllowed 不允许使用Session 

    InstanceContextMode 有三种值:
    (1) Percall 为user的每一次调用生成一个SessionID
          生命周期:调用开始 ---->调用结束,这种情况和不使用Session是一样的
    (2) PerSession 为每个用户生成一个SessionID
          生命周期:客户端代理生成--->客户端代理关闭   和最原先的Session是一样的
    (3) Seigle 生成唯一的SessionID,所有的用户共享 从host创建---->host 关闭,和Application 一样

  • 相关阅读:
    编译和安装在Windows上橡胶树 (Compiling and Installing Yate on Windows)
    Microsoft Sync Framework 2.1 可再发行程序包 Microsoft Sync Framework 1.0 SP1
    Kwickserver
    .net平台 基于 XMPP协议的即时消息服务端简单实现
    开源jabber(XMPP)架设内部即时通讯服务的解决方案
    www.mentalis.org/
    VM虚拟机ping不通局域网其他主机的解决办法
    VM Workstation的Unity Mode有什么用
    Office WORD EXCEL批量查找和替换技巧实例
    Visual Studio VS如何拷贝一个项目的窗体文件到另一个项目
  • 原文地址:https://www.cnblogs.com/qingyuan/p/1513377.html
Copyright © 2020-2023  润新知