深入講解WCF集合類型
WCF經過長時間的發展,很多用戶都很了解WCF了,這里我發表一下個人理解,和大家討論討論。首先先了解一下WCF的發展,自從在微軟提出.NET戰略以來,就針對建立企業級的分布式應用先后推出了一系列產品和技術,包括:ASP.NET Web服務、.NET Remoting、Message Queuing以及Enterprise Service等。這些技術為基于微軟技術的軟件研發人員開發分布式應用提供了很大的便利,同時也各自存在著一些不足。
#T#WCF自定義集合類型,如果作為服務契約的一部分進行發布,必須要保證以下幾點:WCF集合包含的類型必須使用[Serializable]和[DataContract]標記;WCF集合包含的類型屬性必須使用[DataMember]標記,并且,如果是屬性(Property),必須要實現get和set;WCF集合類型必須使用[Serializable]和[CollectionDataContract]標記,以及[KnownType]標記指向集合包含的子類型;集合類型必須實現IEnumerable<T>接口;集合類型使用[DataMember]標記的IList將集合項向客戶端公開.
樣例如下:
- namespaceSharpnessdotnet
- {
- [Serializable]
- [DataContract]
- publicclassSharpnessdotnet
- {
- privatestringname;
- [DataMember]
- publicstringName
- {
- get
- {
- returnname;
- }
- set
- {
- name=value;
- }
- }
- }
- [Serializable]
- [CollectionDataContract]
- [KnownType(typeof(Sharpnessdotnet))]
- publicclassSharpnessdotentCollection:IEnumerable<Sharpnessdotnet>
- {
- [DataMember]
- publicIList<Sharpnessdotnet>List;
- publicSharpnessdotentCollection()
- {
- List=newList<Sharpnessdotnet>();
- }
- publicvoidAdd(Sharpnessdotnetobj)
- {
- List.Add(obj);
- }
- publicIEnumerator<Sharpnessdotnet>GetEnumerator()
- {
- returnList.GetEnumerator();
- }
- IEnumeratorIEnumerable.GetEnumerator()
- {
- returnList.GetEnumerator();
- }
- }
- }