WCF契約定義及主要用途

2022-02-22 18:00:35 字數 1379 閱讀 4971

我們在使用wcf時,對其制定各種各樣的規則,就叫做wcf契約。任何乙個分布式的應用程式在傳遞訊息的時候都需要實現制定乙個規則。

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

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

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

用於定義服務操作的服務wcf契約:service contract

這種級別的契約又包括兩種:servicecontract和operationcontract

servicecontract用於類或者結構上,用於指示wcf此類或者結構能夠被遠端呼叫,而operationcontract用於類中的方法(method)上,用於指示wcf該方法可被遠端呼叫。

用於自定義資料結構的資料wcf契約:data contract

資料契約也分為兩種:datacontract和datamember.datacontract用於類或者結構上,指示 wcf此類或者結構能夠被序列化並傳輸,而datamember只能用在類或者結構的屬性(property)或者字段(field)上,指示wcf該屬性或者字段能夠被序列化傳輸。

用於自定錯誤異常的異常wcf契約:fault contract

faultcontract用於自定義錯誤異常的處理方式,預設情況下,當服務端丟擲異常的時候,客戶端能接收到異常資訊的描述,但這些描述往往格式統一,有時比較難以從中獲取有用的資訊,此時,我們可以自定義異常訊息的格式,將我們關心的訊息放到錯誤訊息中傳遞給客戶端,此時需要在方法上新增自定義乙個錯誤訊息的類,然後在要處理異常的函式上加上faultcontract,並將異常資訊指示返回為自定義格式。

用於控制訊息格式的訊息wcf契約:message contract

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

如何定義wcf契約?

其實上面落裡羅嗦說了一大堆,似乎契約使用起來應該很難的樣子了,可事實上,契約的使用是很簡單的,它無非就是在普通的程式結構上新增一些宣告性的屬性就可以了,比如我們可以直接在類上宣告servercontractattribute,此時這個類就能被遠端客戶端訪問到,而在類中的方法中(method)新增operationcontractattribute就能將方法暴露給遠端客戶端,其他的契約也一樣的用法,比較難得還是訊息契約和錯誤契約,當也很簡單。

原文:

MSSQL escape的主要用途

title 生成測試資料 author wufeng4552 date 2009 09 22 09 27 36 declare t table test nvarchar 5 insert t select n 11 22 union all select n 11 33 union all sel...

python主要用途 python的主要用途是什麼

python主要的五大應用介紹 一 web開發 python的誕生歷史比web還要早,由於python是一種解釋型的指令碼語言,開發效率高,所以非常適合用來做web開發。python有上百種web開發框架,有很多成熟的模板技術,選擇python開發web應用,不但開發效率高,而且執行速度快。二 網路...

Java泛型的主要用途

1.泛型的主要用途就是代替各種型別,作為乙個籠統的整體型別代替,也就是代替引數,不論是傳入引數還是返回引數。都可以用泛型來代替。如dao操作類的增刪改查操作,因為傳入引數的型別不同,但基本都是相同介面,所以就可以只寫乙個dao操作類的增刪該查方法,其傳入引數用泛型代替。如 public intupd...