知識(shí)寶典之介紹WCF數(shù)據(jù)契約
經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)WCF,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。在WCF服務(wù)編程中我們知道,WCF數(shù)據(jù)契約定義了遠(yuǎn)程訪問(wèn)對(duì)象和可供調(diào)用的服務(wù)操作方法,WCF數(shù)據(jù)契約則是定義服務(wù)端和客戶端之間要傳送的自定義數(shù)據(jù)類(lèi)型。在 WCF項(xiàng)目中,聲明一個(gè)類(lèi)型DataContract,那么該類(lèi)型就可以被序列化在服務(wù)端和客戶端之間傳送。
#T#類(lèi)只有聲明為DataContract,該類(lèi)型的對(duì)象才可以被傳送,且只有類(lèi)的屬性會(huì)被傳送,需要在屬性生命前加DataMember聲明,這樣該屬性就可以被序列化傳送。默認(rèn)情況屬性是不可傳遞的。類(lèi)的方法不會(huì)被傳送。WCF數(shù)據(jù)契約的類(lèi)型可以進(jìn)行更加細(xì)節(jié)的控制,可以把一個(gè)成員屬性排除在序列化范圍以外,客戶端程序不會(huì)獲得被排除在外的成員屬性的任何信息,包括定義和數(shù)據(jù)。代碼如下:
- [DataContract]//數(shù)據(jù)契約屬性聲明
- class MyDataContract
- {
- [DataMember(Name = "MyName")]//數(shù)據(jù)成員標(biāo)記,支持別名定義
- public string Name
- {
- get;
- set;
- }
- [DataMember(Name = "MyEmail")]//數(shù)據(jù)成員標(biāo)記,支持別名定義
- public string Email
- {
- get;
- set;
- }
- [DataMember]//數(shù)據(jù)成員標(biāo)記
- public string Mobile
- {
- get;
- set;
- }
- //沒(méi)有[DataMember]聲明,不會(huì)被序列化
- public string Address
- {
- get;
- set;
- }
- }
- }
上面類(lèi)聲明為DataContract,部分屬性聲明為DataMember(數(shù)據(jù)成員)。可以序列化為客戶端傳送。 Address成員屬性沒(méi)有被聲明為DataMember,因此在交換數(shù)據(jù)時(shí),不會(huì)傳輸Address的任何信息。聲明為DataMember的成員也可以自定義客戶端可見(jiàn)的別名 如:
- [DataMember(Name = "MyName")]//數(shù)據(jù)成員標(biāo)記,支持別名定義。