zoukankan      html  css  js  c++  java
  • 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 一样

  • 相关阅读:
    人月神话 画蛇添足
    人月神话 贵族专制和民主政治
    人月神话 外科手术队伍
    人月神话 焦油坑
    体温填报(五)
    体温填报(四)
    qwb与学姐
    qwb VS 去污棒
    1045 快速排序(25 分)
    LibreOJ #107. 维护全序集
  • 原文地址:https://www.cnblogs.com/qingyuan/p/1513377.html
Copyright © 2011-2022 走看看