成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF可信賴(lài)會(huì)話正確使用方法介紹

開(kāi)發(fā) 開(kāi)發(fā)工具
WCF可信賴(lài)會(huì)話主要可以幫助我們?cè)诎踩矫嫣峁┮粋€(gè)更加安全的操作。在這篇文章中,我們將會(huì)為大家詳細(xì)介紹一些這方面的應(yīng)用技巧。

WCF開(kāi)發(fā)插件是一個(gè)功能非常強(qiáng)大的工具,可以幫助我們輕松的實(shí)現(xiàn)一些安全性較強(qiáng)的開(kāi)發(fā)解決方案。在這里我們將會(huì)針對(duì)WCF可信賴(lài)會(huì)話的相關(guān)特點(diǎn)為大家詳細(xì)介紹一些WCF安全方面的知識(shí)。#t#

如果需要保證消息的傳輸正確性,以及傳輸?shù)南㈨樞颍赪CF中的實(shí)現(xiàn)非常容易,即使用可信賴(lài)會(huì)話ReliableSession,前提是我們應(yīng)該選擇正確的綁定。支持可信賴(lài)會(huì)話的綁定包括WSHttpBinding,WSDualHttpBinding,WSFederationBinding以及NetTcpBinding和NetNamedPipesBinding(該綁定使用IPC協(xié)議,按照J(rèn)uval Lowy的說(shuō)法,該綁定的類(lèi)名并不合理。綁定的類(lèi)名通常根據(jù)協(xié)議命名,而不是根據(jù)它所采用的技術(shù),例如NetTcpBinding而不是NetSocketBinding。因此IPC綁定應(yīng)命名為NetIPCBinding,而不是NetNamedPipesBinding)。其中,與WS-*相關(guān)的綁定需要手動(dòng)打開(kāi)WCF可信賴(lài)會(huì)話。

由于綁定可以采用配置方式設(shè)定,因此,是否增加可信賴(lài)傳輸與具體的服務(wù)契約代碼無(wú)關(guān)。此外,綁定的選擇同樣可以通過(guò)配置文件修改,這就保證了WCF實(shí)現(xiàn)的靈活性。配置可信賴(lài)會(huì)話的方式如下所示:

  1. < wsHttpBinding> 
  2. < binding name="reliableBinding" receiveTimeout="00:20:00"> 
  3. < reliableSession enabled="true" ordered="true" 
    inactivityTimeout="00:20:00"/> 
  4. < /binding> 
  5. < /wsHttpBinding> 

在配置文件中,讓人疑惑不解的是兩個(gè)超時(shí)值的設(shè)置。兩者代表了不同的含義。receiveTimeout與應(yīng)用程序消息相關(guān),而inactivityTimeout則與應(yīng)用程序以及基礎(chǔ)架構(gòu)消息相關(guān)。舉例來(lái)說(shuō),如果一個(gè)服務(wù)契約包含了三個(gè)服務(wù)操作,且這三個(gè)操作將形成一個(gè)有序的序列(傳輸?shù)南㈨樞蚺c此相關(guān)),那么計(jì)算非活動(dòng)狀態(tài)的值,對(duì)于前者而言是從調(diào)用服務(wù)對(duì)象的某一個(gè)操作之后開(kāi)始計(jì)算,而后者則針對(duì)整個(gè)序列的操作。根據(jù)MSDN的解釋?zhuān)A(chǔ)架構(gòu)消息是指為了通道堆棧中的協(xié)議之一(例如,保持活動(dòng)狀態(tài)或確認(rèn),而并非包含應(yīng)用程序數(shù)據(jù))而生成的消息。

在WCF可信賴(lài)會(huì)話中,任何一個(gè)超時(shí)值計(jì)時(shí)器觸發(fā)都會(huì)斷開(kāi)連接,因此單獨(dú)改變其中某一個(gè)的值是沒(méi)有意義的。如果值不相同,則取兩個(gè)值之間的最小值。他們的默認(rèn)值均為10秒。

ReliableSession的Ordered屬性保證了消息的傳輸順序。它不意味著我們?cè)谡{(diào)用服務(wù)對(duì)象時(shí),必須遵循操作調(diào)用的順序,而是指消息在發(fā)送時(shí),必須按照調(diào)用的順序傳送。例如一個(gè)服務(wù)契約定義了M1,M2,M3三個(gè)服務(wù)操作。如果服務(wù)對(duì)象的調(diào)用順序如下所示:

  1. m_proxy.M1();  
  2. m_proxy.M2();  
  3. m_proxy.M3(); 

則消息的順序?yàn)镸1-> M2 -> M3。如果修改操作的調(diào)用順序如下:

  1. m_proxy.M3();  
  2. m_proxy.M2();  
  3. m_proxy.M1(); 

則消息的順序?yàn)镸3-> M2 -> M1。因此,我們應(yīng)注意它與所謂的“分步操作(Demarcating Operation)”的區(qū)別。分步操作通過(guò)在[OperationContract]中指定IsInitiating和IsTerminating的值,標(biāo)示操作的調(diào)用順序。在DevX的一篇文章中有如下的服務(wù)契約定義:

 

  1. [ServiceContract]  
  2. public interface IChopstickBuilder  
  3. {  
  4. [OperationContract]  
  5. int GetChopsticksUnderConstruction();  
  6. [OperationContract]  
  7. void WarmupChopstickMachine();  
  8. [OperationContract]  
  9. void ConstructAChopstick();  

其中要求WarmupChopstickMachine()必須在ConstructAChopstick()操作之前調(diào)用。為保證客戶(hù)端調(diào)用不出現(xiàn)順序的錯(cuò)誤,單單啟動(dòng)WCF可信賴(lài)會(huì)話的有序傳遞仍嫌不足。此時(shí),我們可以為WarmupChopstickMachine()操作定義分步操作:

  1. [OperationContract(IsInitiating = true)]  
  2. void WarmupChopstickMachine(); 

不過(guò),這樣的操作定義實(shí)際上是無(wú)效的,因?yàn)镮sInitiating的默認(rèn)值本身就是true,這樣的設(shè)置與不設(shè)置的效果完全一致。因此,我們可以考慮對(duì)ConstructAChopstick()和GetChopsticksUnderConstruction()進(jìn)行設(shè)置:

 

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Required)]  
  2. public interface IChopstickBuilder  
  3. {  
  4. [OperationContract(IsInitiating = falseIsTerminating = true)]  
  5. int GetChopsticksUnderConstruction();  
  6. [OperationContract]  
  7. void WarmupChopstickMachine();  
  8. [OperationContract(IsInitiating = false)]  
  9. void ConstructAChopstick();  

使用分步操作需要會(huì)話的支持,因此需要在服務(wù)契約上將SessionMode設(shè)置為Required,否則會(huì)拋出InvalidOperationException異常。

對(duì)于某些嚴(yán)格要求WCF可信賴(lài)會(huì)話的服務(wù),為避免配置文件中錯(cuò)誤設(shè)置可信賴(lài)會(huì)話的可能,可以強(qiáng)制要求WCF檢查包含該服務(wù)契約的終結(jié)點(diǎn),確認(rèn)它是否選擇了支持可信賴(lài)會(huì)話的綁定,并支持有序傳遞:

 

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Required)]  
  2. [DeliveryRequirements(RequireOrderedDelivery = true)]  
  3. public interface MyReliableService... 

以上就是我們?yōu)榇蠹以敿?xì)介紹的WCF可信賴(lài)會(huì)話的具體內(nèi)容。

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

2011-07-12 23:37:01

ITSS

2010-03-02 16:58:11

AJAX WCF服務(wù)項(xiàng)

2010-03-02 14:12:30

WCF枚舉類(lèi)型

2015-04-27 18:53:21

H3Cloud/華三

2014-12-08 14:25:30

2010-03-01 17:39:07

WCF Address

2009-12-21 17:40:25

WCF會(huì)話

2018-08-03 17:03:00

商用軟件

2010-02-23 17:05:38

2010-02-25 16:07:28

WCF REST

2010-01-20 17:47:54

VB.NET注釋

2015-04-29 18:34:19

阿里移動(dòng)事業(yè)群UC高德地圖

2009-03-19 16:23:48

2010-02-25 16:52:12

引用WCF服務(wù)

2009-11-05 13:44:45

WCF優(yōu)勢(shì)

2010-02-25 14:26:48

WCF特點(diǎn)

2009-12-22 16:55:26

WCF性能優(yōu)勢(shì)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 激情五月综合 | 大久 | 亚洲国产精品99久久久久久久久 | 韩日一区| 久久不卡| 国产高清视频一区 | 日本三级全黄三级三级三级口周 | 超碰在线97国产 | 欧美综合在线观看 | 久久中文免费视频 | 免费观看一级视频 | 中文字幕av网站 | 成人精品在线观看 | 精品免费国产 | 最新日韩av| 成人国产a | 久久精品一区 | 久久久久久国产 | 一区二区三区四区不卡 | 日韩精品视频在线 | 精品一区欧美 | 九色在线 | 97免费视频在线观看 | 日日操夜夜干 | 国产日韩在线观看一区 | 在线观看视频一区 | 国产成人精品久久久 | 久久夜视频 | 网站黄色在线 | 黑人巨大精品欧美一区二区一视频 | 婷婷一级片 | 日韩视频精品在线 | 中文字幕成人在线 | 美女天堂 | 国产一区二区三区免费 | 国产999精品久久久 午夜天堂精品久久久久 | 日本精品视频 | 午夜二区| 免费看欧美一级片 | 狠狠ri | 视频一区 亚洲 |