創(chuàng)建WCF框架具體步驟
WCF框架作為一個(gè)高效的.NET程序框架。其混合了函數(shù)語言和物件導(dǎo)向程序編制語言,并且***的適用于編程、算法、技術(shù)和探索性開發(fā),因此可以在使用的過程當(dāng)中感受到趣味性和吸引力。
WCF框架自定義集合類型,如果作為服務(wù)契約的一部分進(jìn)行發(fā)布,必須要保證以下幾點(diǎn):WCF框架包含的類型必須使用[Serializable]和[DataContract]標(biāo)記;WCF集合包含的類型屬性必須使用[DataMember]標(biāo)記,并且,如果是屬性(Property),必須要實(shí)現(xiàn)get和set;WCF集合類型必須使用[Serializable]和[CollectionDataContract]標(biāo)記,以及[KnownType]標(biāo)記指向集合包含的子類型;集合類型必須實(shí)現(xiàn)IEnumerable<T>接口;集合類型使用[DataMember]標(biāo)記的IList將集合項(xiàng)向客戶端公開。
缺省情況下,WCF框架對(duì)集合類型是內(nèi)建支持的,也就說你不需要應(yīng)用任何屬性,就可以將集合應(yīng)用在數(shù)據(jù)契約(協(xié)定)中,但前提是集合中的元素必須是應(yīng)用了DataContractAttribute屬性或者是可序列化的類型。這時(shí),數(shù)據(jù)契約(協(xié)定)名稱和命名空間就依賴集合中包含的元素的類型的名稱和命名空間了,它們不受集合類型本身的名稱和命名空間的影響。#t#
如果集合是應(yīng)用于某個(gè)數(shù)據(jù)契約類型中時(shí),那么它的名稱將是字段名稱,如下面Customer的定義以及序列化后的表示:
- [DataContract]
- public class Customer
- {
- [DataMember]
- public List<string> addresses = new List<string> {"Beijing","ShangHai" };
- [DataMember]
- public Dictionary<int, object> telephones = new Dictionary<int, object> {
- { 1, "010-82371234" },
- { 2, "021-56781234" } };
- }
- <Customer xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://schemas.datacontract.org/2004/07/WCFTestSerializer">
- <addresses xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
- <d2p1:string>Beijing</d2p1:string>
- <d2p1:string>ShangHai</d2p1:string>
- </addresses>
- <telephones
- xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
- <d2p1:KeyValueOfintanyType>
- <d2p1:Key>1</d2p1:Key>
- <d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">010-82371234</d2p1:Value>
- </d2p1:KeyValueOfintanyType>
- <d2p1:KeyValueOfintanyType>
- <d2p1:Key>2</d2p1:Key>
- <d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">021-56781234</d2p1:Value>
- </d2p1:KeyValueOfintanyType>
- </telephones>
- </Customer>