有關WCF的契約問題

2022-01-23 14:29:50 字數 1108 閱讀 1569

wcf中的契約包括4種

資料契約

datacontract ->datamember

服務契約

servicecontract-> operactioncontract

訊息契約

messagecontract

異常契約

faultcontract

用於定義服務操作的服務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

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

一般我們主要開發用資料契約+服務契約的設計

資料契約中我們只定義屬性,不能向客戶端傳遞方法 靜態,static修飾

服務契約 我們只定義方法,只能傳遞標註的operationcontract ,其他的都被忽略

wcf資料契約

專案中需要使用繼承關係,乙個函式返回特定的子類,在序列化的時候需要告訴序列化器,在父類檔案中使用kowntype注釋即可。namespace healthadminwebservice.logic datamember public string exercisestep datamember pu...

wcf訊息契約

1.最多乙個引數和乙個返回值,返回值和引數的型別都是訊息型別。下面的 為定義乙個訊息契約的例項 messagecontract public class mymessage constructor create a message and populate its members.public my...

wcf契約隨記

1.wcf契約分為 服務契約,操作契約,訊息契約 資料契約 服務契約 配置元資料交換 系統內建的資料元資料交換掉的協議 操作契約 引數重新命名 void setname messageparameter name string name 返回值重新命名 return messageparameter...