日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
全面解讀WCF服務(wù)狀態(tài)基本概念

WCF服務(wù)狀態(tài)是一個(gè)比較重要的參考指標(biāo)。不過在實(shí)際使用中,如何查看這一狀態(tài),以改進(jìn)自己的服務(wù)水準(zhǔn),是一個(gè)初學(xué)者必須要掌握的基礎(chǔ)。#t#

創(chuàng)新互聯(lián)建站是一家專業(yè)提供南寧企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為南寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

默認(rèn)wcf服務(wù)的類是無狀態(tài)的,就像web service一樣,不能保存狀態(tài)信息。即每次調(diào)用WCF服務(wù)狀態(tài)都是創(chuàng)建一個(gè)新的對(duì)象,所以一般我們都不會(huì)在wcf服務(wù)類中添加屬性。

上面只是默認(rèn)情況,因?yàn)閃CF服務(wù)狀態(tài)為我們提供了配置選項(xiàng),我們只需顯式指定ServiceBehaviorAttribute的InstanceContextMode的值即可實(shí)現(xiàn)有狀態(tài)的服務(wù),還可以實(shí)現(xiàn)全局的。ServiceBehavior是一個(gè)類特性,所以我們不能在接口上應(yīng)用。

InstanceContextMode是一個(gè)枚舉類型,包含PerCall,PerSession,Single三個(gè)值。從字面上我們就可以看出他們的意思。注意服務(wù)的狀態(tài)其實(shí)是與客戶端代理類有相同的生命周期,也就是說我們可以通過調(diào)用客戶端代理類的close方法來顯示清除一個(gè)服務(wù)類的狀態(tài)信息。另外,BasicHttpBinding的binding是沒有狀態(tài)的,所以我們不能用這個(gè)bind來讓服務(wù)類保持WCF服務(wù)狀態(tài)。

PerCall

每次調(diào)用都會(huì)創(chuàng)建新的對(duì)象,雖然我們沒有顯式創(chuàng)新,但代理對(duì)象會(huì)幫我們做這些。如:

服務(wù)端

 
 
 
  1. [ServiceBehavior(InstanceContextMode
    InstanceContextMode = Instance
    ContextMode.PerCall)]  
  2. public class EmployeeService : 
    IEmployeeService  
  3. {  
  4. private int count = 0;   
  5. #region IEmployeeService Members  
  6. public void ShowInvokeNumber()  
  7. {  
  8. count++;  
  9. Console.WriteLine("count = {0}", count);  
  10. }  
  11. #endregion  

 

客戶端

 
 
 
  1. EmployeeServiceProxy proxy = 
    new EmployeeServiceProxy
    ("netEmployeeService");  
  2. proxy.ShowInvokeNumber();  
  3. proxy.ShowInvokeNumber();  
  4. proxy.ShowInvokeNumber(); 

雖然我們只創(chuàng)建了一個(gè)代理對(duì)象,服務(wù)器端的對(duì)象會(huì)在每次調(diào)用完后進(jìn)行釋放,當(dāng)再次調(diào)用時(shí),會(huì)創(chuàng)建一個(gè)新的對(duì)象。

PerSession

簡單的說它每個(gè)客戶端共享一個(gè)對(duì)象,只在***次調(diào)用時(shí)創(chuàng)建。

Single

是所以客戶端共享一個(gè)對(duì)象。

通過我提供的演示demo,可以很清楚看到WCF服務(wù)狀態(tài)中的差別。注意服務(wù)器端的輸出

percall輸出的是

 
 
 
  1. count = 1 
  2. count = 1 
  3. count = 1 

persession輸出的是

 
 
 
  1. count = 1 
  2. count = 2 
  3. count = 3 

如果我們多啟動(dòng)一個(gè)客戶端則會(huì)有增加如下輸出

 
 
 
  1. count = 1 
  2. count = 2 
  3. count = 3 

single輸出的是

 
 
 
  1. count = 1 
  2. count = 2 
  3. count = 3 

增加一個(gè)客戶端,輸入變?yōu)?/p>

 
 
 
  1. count = 4 
  2. count = 5 
  3. count = 6 

還有一個(gè)OperationBehavior應(yīng)用于WCF服務(wù)狀態(tài)操作上的特性我們需要注意,它的ReleaseInstanceMode指定了4個(gè)枚舉值。默認(rèn)是None,還有AfterCall,BeforeAndAfterCall,BeforeCall,如果應(yīng)用了這個(gè)特性,則對(duì)象在調(diào)用這個(gè)方法時(shí)會(huì)檢查OperationBehavior特性的ReleaseInstanceMode的值,它如果它指定為非none,則在調(diào)用根據(jù)設(shè)置的值來在調(diào)用前或后釋放該對(duì)象。


當(dāng)前題目:全面解讀WCF服務(wù)狀態(tài)基本概念
轉(zhuǎn)載注明:http://www.5511xx.com/article/dphpoes.html