wcf契約隨記

2022-03-13 04:10:56 字數 1501 閱讀 9030

1.wcf契約分為:服務契約,操作契約,訊息契約、資料契約

-------------------服務契約:

配置元資料交換

//系統內建的資料元資料交換掉的協議;

-------------------操作契約:

引數重新命名:

void setname([messageparameter(name="")]string name);

返回值重新命名

[return:messageparameter(name="")]

標記單工通訊

[operationcontract(isoneway = true)]//預設為false;

-------------------資料契約:

-新增引用:using system.runtime.serialization;

資料成員:

--資料契約序列化器案例:

person p = new person();

p.name = "郭澤峰";

datacontractserializer ds = new datacontractserializer(typeof(person));

filestream fs = new filestream("cc.xml", filemode.create);

ds.writeobject(fs, p);

fs.close();

[datamember(name="name_name",isrequired=false,order=0)]//isrequired:約束是否必須,order:序列化時的順序;

為標記的不進行序列化;

1.wcf為了實現soa思想丟失了物件導向的許多特性,比如多型,為了繼續使用多型,新增了knowtype(已知型別),在服務中暴露基本型別。標記為派生類並參與序列化;標記後就可以進行黎克特制替換了;否則轉換會剖出異常;

2.在介面上標記已知型別:[serviceknowtype(typeof())],這樣介面裡的所有方法宣告都可以進行黎克特制替換;

3.只針對介面中某些特定方法定義的話,加到特定方法宣告上就可以了;

-------------------訊息契約:為了可以自定義soap格式;header和body;

[messageheader(protectionlevel=protectionlevel.encryptandsign)]

[messagebodymember]

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服務契約 ServiceContract

服務契約servicecontract特性能夠把介面或者類公開為面向服務的契約,允許開發者使用c 語言進行程式設計把類似於介面這樣的語法結構公開為wcf契約和服務。指示介面或類在應用程式中定義服務協定。摘要 指示介面或類在 應用程式中定義服務協定。attributeusage attributeta...