自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF狀態(tài)應(yīng)用基本概念簡(jiǎn)單描述

開發(fā) 開發(fā)工具
我們?cè)谶@篇文章中,主要針對(duì)WCF狀態(tài)應(yīng)用的相關(guān)設(shè)定以及應(yīng)用方法做了詳細(xì)介紹。相信對(duì)于又需要的朋友肯定會(huì)從中獲得一些幫助。

WCF開發(fā)工具中,對(duì)于狀態(tài)的應(yīng)用是一個(gè)比較基礎(chǔ)的應(yīng)用技術(shù)。我們需要積累這方面的經(jīng)驗(yàn)來達(dá)到一個(gè)熟練應(yīng)用的地步。在接下來的文章中,我們首先為大家介紹一下WCF狀態(tài)應(yīng)用的一些基本概念。

WCF狀態(tài)應(yīng)用的設(shè)定是由以下兩步完成的,首先要在ServiceContract里面利用參數(shù)SessionMode來使Session有效化,具體代碼為

  1. [ServiceContract(SessionModeSessionMode=SessionMode.Required)]; 

其次是在ServiceBehavior里面利用參數(shù)InstanceContextMode來設(shè)定到底使用那一種Session方式,具體代碼如下

  1. [ServiceBehavior(InstanceContextModeInstanceContextMode=
    InstanceContextMode.PerSession); 

 

WCF支持的SessionMode有如下三種:#t#

◆SessionMode.Allowed:默認(rèn)選項(xiàng),允許但不強(qiáng)制使用Session。

◆SessionMode.NotAllowed:不允許使用Session。

◆SessionMode.Required:強(qiáng)制使用Session。

WCF支持的InstanceContextMode也有三種:

◆InstanceContextMode.PerCall:為User的每一次調(diào)用生成一個(gè)SessionID,Session生命周期:調(diào)用開始->調(diào)用結(jié)束。(注:這種方式和不使用Session功能應(yīng)該是一樣的)

◆InstanceContextMode.PerSession:為每一個(gè)用戶生成一個(gè)SessionID。Session生命周期:客戶端代理生成->客戶端代理關(guān)閉。(這種方式最像原先的Session)

◆InstanceContextMode.Single:生成一個(gè)唯一的SessionID,所有用戶共用,生命周期:Host創(chuàng)建->Host關(guān)閉。(應(yīng)用設(shè)計(jì)模式中的Singleton模式,像原先的Application)

WCF狀態(tài)應(yīng)用的實(shí)例是以PerSession為例,當(dāng)然,這里的Session和原來的Session還是有一些區(qū)別的,具體如下:

(1)并沒有一個(gè)顯示的Session容器供存放數(shù)據(jù)用;

(2)Session的銷毀和原先的Session不相同。

WCF中的Session可以在以下三種情況下銷毀:

(a)利用函數(shù)銷毀,如文中示例,在函數(shù)ReleaseSession()上用[OperationContract(IsTerminating=true)]表明客戶端可以通過調(diào)用該函數(shù)銷毀Session。

(b)客戶端代理關(guān)閉,Session也會(huì)自動(dòng)銷毀。

(c)通過TimeOut時(shí)間銷毀,默認(rèn)是10分鐘,這個(gè)時(shí)間客戶端和服務(wù)器端都可以設(shè)定,以較短的時(shí)間為有效時(shí)間。
因此,個(gè)人認(rèn)為,WCF中的Session的可控性更強(qiáng)一些。

在示例中還有一個(gè)問題要注意,在服務(wù)器端函數(shù)捕捉到異常之后,一定要通過throw new FaultException(ex.Message);的形式將錯(cuò)誤拋到客戶端,否則的話,客戶端調(diào)用用的Channel將會(huì)被堵塞,因此就無法繼續(xù)調(diào)用釋放資源的函數(shù)了。

要向客戶端拋異常必須設(shè)定WebConfig項(xiàng),具體代碼如下:

 

  1. < configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
  2. < system.serviceModel>< services> 
  3. < !-- Before deployment, you should remove the returnFaults 
    behavior configuration to avoid disclosing information in exception messages --
    > 
  4. < service name="MyService" behaviorConfiguration="SessionTrans"> 
  5. < endpoint contract="IMyService" binding="wsHttpBinding"/>< /service>
  6. < /services>< behaviors> 
  7. < serviceBehaviors> 
  8. < behavior name="SessionTrans" returnUnknownExceptionsAsFaults="True"> 
  9. < serviceMetadata httpGetEnabled="true" /> 
  10. < serviceDebug includeExceptionDetailInFaults="true" /> 
  11. < /behavior>< /serviceBehaviors>< /behaviors>< /system.serviceModel> 
  12. < system.web>< compilation debug="true"/>< /system.web>< /configuration>  

以上介紹的WCF狀態(tài)應(yīng)用的相關(guān)知識(shí)供大家學(xué)習(xí)參考。

責(zé)任編輯:曹凱 來源: qqread.com
相關(guān)推薦

2009-12-22 10:16:54

WCF服務(wù)狀態(tài)

2009-12-21 10:27:52

WCF基本概念

2010-02-23 16:32:29

WCF服務(wù)

2010-03-01 16:25:07

WCF體系架構(gòu)

2010-02-24 17:17:04

WCF宿主環(huán)境

2010-03-02 13:14:38

WCF MSMQ隊(duì)列

2009-12-21 15:33:07

WCF集合元素

2010-03-01 14:50:30

WCF行為類型

2010-03-01 18:04:35

WCF配置綁定

2021-11-02 08:41:44

Kubernetes Nginx部開源

2010-02-25 14:46:31

2010-03-02 11:10:43

WCF標(biāo)準(zhǔn)終結(jié)點(diǎn)

2010-03-01 16:41:04

WCF數(shù)據(jù)表

2009-12-21 16:52:02

WCF序列化

2009-12-21 14:37:14

2010-03-01 17:57:11

WCF緩存機(jī)制

2011-03-28 11:05:17

ODBC

2014-04-16 15:11:19

Spark

2012-09-11 14:39:03

Moosefs

2009-03-20 11:46:10

MGCP協(xié)議網(wǎng)關(guān)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)