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

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),雙牌企業(yè)網(wǎng)站建設(shè),雙牌品牌網(wǎng)站建設(shè),網(wǎng)站定制,雙牌網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,雙牌網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
WCF狀態(tài)應(yīng)用的設(shè)定是由以下兩步完成的,首先要在ServiceContract里面利用參數(shù)SessionMode來使Session有效化,具體代碼為
- [ServiceContract(SessionModeSessionMode=SessionMode.Required)];
其次是在ServiceBehavior里面利用參數(shù)InstanceContextMode來設(shè)定到底使用那一種Session方式,具體代碼如下
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
InstanceContextMode.PerSession);
WCF支持的SessionMode有如下三種:#t#
◆SessionMode.Allowed:默認選項,允許但不強制使用Session。
◆SessionMode.NotAllowed:不允許使用Session。
◆SessionMode.Required:強制使用Session。
WCF支持的InstanceContextMode也有三種:
◆InstanceContextMode.PerCall:為User的每一次調(diào)用生成一個SessionID,Session生命周期:調(diào)用開始->調(diào)用結(jié)束。(注:這種方式和不使用Session功能應(yīng)該是一樣的)
◆InstanceContextMode.PerSession:為每一個用戶生成一個SessionID。Session生命周期:客戶端代理生成->客戶端代理關(guān)閉。(這種方式最像原先的Session)
◆InstanceContextMode.Single:生成一個唯一的SessionID,所有用戶共用,生命周期:Host創(chuàng)建->Host關(guān)閉。(應(yīng)用設(shè)計模式中的Singleton模式,像原先的Application)
WCF狀態(tài)應(yīng)用的實例是以PerSession為例,當(dāng)然,這里的Session和原來的Session還是有一些區(qū)別的,具體如下:
(1)并沒有一個顯示的Session容器供存放數(shù)據(jù)用;
(2)Session的銷毀和原先的Session不相同。
WCF中的Session可以在以下三種情況下銷毀:
(a)利用函數(shù)銷毀,如文中示例,在函數(shù)ReleaseSession()上用[OperationContract(IsTerminating=true)]表明客戶端可以通過調(diào)用該函數(shù)銷毀Session。
(b)客戶端代理關(guān)閉,Session也會自動銷毀。
(c)通過TimeOut時間銷毀,默認是10分鐘,這個時間客戶端和服務(wù)器端都可以設(shè)定,以較短的時間為有效時間。
因此,個人認為,WCF中的Session的可控性更強一些。
在示例中還有一個問題要注意,在服務(wù)器端函數(shù)捕捉到異常之后,一定要通過throw new FaultException(ex.Message);的形式將錯誤拋到客戶端,否則的話,客戶端調(diào)用用的Channel將會被堵塞,因此就無法繼續(xù)調(diào)用釋放資源的函數(shù)了。
要向客戶端拋異常必須設(shè)定WebConfig項,具體代碼如下:
- < configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
- < system.serviceModel>< services>
- < !-- Before deployment, you should remove the returnFaults
behavior configuration to avoid disclosing information in exception messages -->- < service name="MyService" behaviorConfiguration="SessionTrans">
- < endpoint contract="IMyService" binding="wsHttpBinding"/>< /service>
- < /services>< behaviors>
- < serviceBehaviors>
- < behavior name="SessionTrans" returnUnknownExceptionsAsFaults="True">
- < serviceMetadata httpGetEnabled="true" />
- < serviceDebug includeExceptionDetailInFaults="true" />
- < /behavior>< /serviceBehaviors>< /behaviors>< /system.serviceModel>
- < system.web>< compilation debug="true"/>< /system.web>< /configuration>
以上介紹的WCF狀態(tài)應(yīng)用的相關(guān)知識供大家學(xué)習(xí)參考。
網(wǎng)頁標(biāo)題:WCF狀態(tài)應(yīng)用基本概念簡單描述
URL地址:http://www.dlmjj.cn/article/djdiosh.html


咨詢
建站咨詢
