WCF狀態(tài)保存不同方法介紹
WCF已經(jīng)推出就深受廣大開(kāi)發(fā)人員的喜愛(ài)。它的強(qiáng)大的功能可以幫助我們輕松的打造一個(gè)跨平臺(tái)的安全性高的解決方案。在這里我們可以先從WCF狀態(tài)保存的方法來(lái)對(duì)此進(jìn)行一個(gè)分析,加深其的印象。
WCF狀態(tài)保存分為兩步:
(1) 使用SessionMode 來(lái)使Session有效化
- [ServiceContract(SessionModeSessionMode=SessionMode.Required)]
 - public interface ICalculator
 - {
 - [OperationContract(IsOneWay=true)]
 - void Adds(double x);
 - [OperationContract]
 - double GetResult();
 - }
 
(2)ServiceBehavior 里面利用參數(shù)InstanceContextMode設(shè)定到底使用哪一種Session方式
 
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
 
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 有三種值:#t#
(1)Allowed 默認(rèn)選值,允許但不強(qiáng)制使用Session
(2)Required 強(qiáng)制使用Session
(3)NotAllowed 不允許使用Session
InstanceContextMode 有三種值:
(1) Percall 為user的每一次調(diào)用生成一個(gè)SessionID
WCF狀態(tài)保存生命周期:調(diào)用開(kāi)始 ---->調(diào)用結(jié)束,這種情況和不使用Session是一樣的
(2) PerSession 為每個(gè)用戶生成一個(gè)SessionID
生命周期:客戶端代理生成--->客戶端代理關(guān)閉 和最原先的Session是一樣的
(3) Seigle 生成***的SessionID,所有的用戶共享 從host創(chuàng)建---->host 關(guān)閉,和Application 一樣
WCF狀態(tài)保存的相關(guān)內(nèi)容就為大家介紹到這里。















 
 
 
 
 
 
 