<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WCF從理論到實踐(3):八號當鋪之黑色契約

       

      本文的出發點:

      通過閱讀本文,能解決以下的問題

      1. 什么是契約?
      2. 契約有幾種?,他們都有什么用途
      3. 如何定義契約?
      4. 契約是獨立于平臺的么?
      5. 契約和以往哪種技術比較相像,又有什么不同?

         

      本文適合的讀者

      WCF的初學者,可以沒有任何SOA或者其他分布式技術經驗

       

      什么是契約?

          任何一個分布式應用程序,它之所以能夠互相傳遞消息,都是事先制定好數據交換規則的,這個規則正是交換數據的雙方(比如服務器端和客戶端)能彼此理解對方的依據,WCF作為分布式開發技術的一種,同樣具有這樣一種特性。而在WCF中制定的的規則就被稱之為契約(Contract),它是WCF的消息標準,是任何一個wcf程序不可或缺的一部分。

       

      契約有幾種?,他們都有什么用途

      在WCF中,契約分為四種,它們分別為:

      1. 用于定義服務操作的服務契約:Service Contract

        這種級別的契約又包括兩種:ServiceContract和OperationContract

        ServiceContract用于類或者結構上,用于指示WCF此類或者結構能夠被遠程調用,而OperationContract用于類中的方法(Method)上,用于指示WCF該方法可被遠程調用。

      2. 用于自定義數據結構的數據契約:Data Contract

        數據契約也分為兩種:DataContract和DataMember.DataContract用于類或者結構上,指示 WCF此類或者結構能夠被序列化并傳輸,而DataMember只能用在類或者結構的屬性(Property)或者字段(Field)上,指示WCF該屬性或者字段能夠被序列化傳輸。

      3. 用于自定錯誤異常的異常契約:Fault Contract

        FaultContract用于自定義錯誤異常的處理方式,默認情況下,當服務端拋出異常的時候,客戶端能接收到異常信息的描述,但這些描述往往格式統一,有時比較難以從中獲取有用的信息,此時,我們可以自定義異常消息的格式,將我們關心的消息放到錯誤消息中傳遞給客戶端,此時需要在方法上添加自定義一個錯誤消息的類,然后在要處理異常的函數上加上FaultContract,并將異常信息指示返回為自定義格式。

      4. 用于控制消息格式的消息契約:Message Contract

        簡單的說,它能自定義消息格式,包括消息頭,消息體,還能指示是否對消息內容進行加密和簽名。

         

      如何定義契約?

           其實上面落里羅嗦說了一大堆,似乎契約使用起來應該很難的樣子了,可事實上,契約的使用是很簡單的,它無非就是在普通的程序結構上添加一些聲明性的屬性就可以了,比如我們可以直接在類上聲明ServerContractAttribute,此時這個類就能被遠程客戶端訪問到,而在類中的方法中(Method)添加OperationContractAttribute就能將方法暴露給遠程客戶端,其他的契約也一樣的用法,比較難得還是消息契約和錯誤契約,當也很簡單。我這里沒有WCF開發環境,所以具體怎么用,我就不做示例了,您仍不明白的話,可以參考下面幾篇文章:

      http://www.rzrgm.cn/artech/archive/2007/02/28/659331.html

      http://www.rainsts.net/article.asp?id=427

      http://www.rainsts.net/article.asp?id=429

      http://www.rainsts.net/article.asp?id=430

      他們的blog中都有較詳細的闡述和使用方法說明

       

      契約是獨立于平臺的么?

          WCF作為一種能夠跨平臺的體系框架,其應用肯定會有異構,異網的情況發生,那么作為通訊依據的契約能否自動適用于上述情況呢?答案是肯定的,契約是獨立于平臺之外的,它只約束通訊的雙方應該遵守什么樣的規則,而絲毫不管雙方各自采用的是什么樣的技術和什么樣的操作系統,也只有這樣,WCF才能有真正的生命力。

       

      契約和以往哪種技術比較相像,又有什么不同?

          如果非要拿契約和以往的技術相比較的話,契約和asp.net xml web service的聲明性編程模型甚是相似,比如在web service中在類上標記WebServiceAttribute便可以將此類用于遠程調用,而將方法添加WebMethondAttribute也可以將其暴露給遠程客戶端,這和WCF中的ServiceContract和OperationContract簡直如出一轍,但不同的是,WCF中的契約要比Xml Web Service中的要詳盡的多,比如ServiceContract和OperationContract可以直接使用在接口上面,而實現該接口的類就繼承了這種契約聲明,自動擁有契約所規范的動作和行為,這就使得程序員更方便的使用面向接口的編程方式,可以使同一服務擁有不同的實現,在新舊版本升級的同時,能夠使新老版本共同運行。



      本文的參考資料

      http://www.rzrgm.cn/artech/archive/2007/02/28/659331.html

      http://www.rainsts.net/article.asp?id=427

      http://www.rainsts.net/article.asp?id=429

      http://www.rainsts.net/article.asp?id=430

      http://www.rzrgm.cn/wayfarer/archive/2006/04/10/370957.html
      posted @ 2008-01-28 11:25  Robin Zhang  閱讀(19036)  評論(18)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区日本久久九| av激情亚洲男人的天堂| 金沙县| 亚洲午夜精品毛片成人播放| 无遮无挡爽爽免费视频| 国产成人午夜福利在线播放| 国产麻豆精品手机在线观看| 亚洲视频免费一区二区三区| 国产极品尤物粉嫩在线观看| 国产精品久久久久鬼色| 乱人伦人妻中文字幕无码久久网 | 亚洲暴爽av天天爽日日碰| 黄大仙区| 丝袜高潮流白浆潮喷在线播放| 免费无码中文字幕A级毛片| 欧美成人aaa片一区国产精品| 国产精品午夜福利在线观看| 欧美一区二区三区成人久久片| 毛片网站在线观看| 德令哈市| 日韩av无码一区二区三区| 东方四虎av在线观看| 洪雅县| 亚洲第一无码AV无码专区| 无码国产成人午夜电影在线观看| 人妻久久久一区二区三区| 国产玖玖视频| 午夜爽爽爽男女免费观看影院 | 久久久无码精品亚洲日韩蜜臀浪潮| caoporn免费视频公开| 视频一区二区三区自拍偷拍 | 免费日韩av网在线观看| 偷拍精品一区二区三区| 欧美亚洲日本国产综合在线美利坚| 人人爽天天碰天天躁夜夜躁| 无码中文字幕人妻在线一区| 久久波多野结衣av| 四平市| 欧美性群另类交| 亚洲综合色区另类av| 91中文字幕一区在线|