深入讲解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将集合项向客户端公开.

样例如下:

 
 
  1. namespaceSharpnessdotnet  
  2. {  
  3. [Serializable]  
  4. [DataContract]  
  5. publicclassSharpnessdotnet  
  6. {  
  7. privatestringname;  
  8. [DataMember]  
  9. publicstringName  
  10. {  
  11. get  
  12. {  
  13. returnname;  
  14. }  
  15. set  
  16. {  
  17. name=value;  
  18. }  
  19. }  
  20. }  
  21. [Serializable]  
  22. [CollectionDataContract]  
  23. [KnownType(typeof(Sharpnessdotnet))]  
  24. publicclassSharpnessdotentCollection:IEnumerable<Sharpnessdotnet> 
  25. {  
  26. [DataMember]  
  27. publicIList<Sharpnessdotnet>List;  
  28. publicSharpnessdotentCollection()  
  29. {  
  30. List=newList<Sharpnessdotnet>();  
  31. }  
  32. publicvoidAdd(Sharpnessdotnetobj)  
  33. {  
  34. List.Add(obj);  
  35. }  
  36. publicIEnumerator<Sharpnessdotnet>GetEnumerator()  
  37. {  
  38. returnList.GetEnumerator();  
  39. }  
  40.  
  41. IEnumeratorIEnumerable.GetEnumerator()  
  42. {  
  43. returnList.GetEnumerator();  
  44. }  
  45. }  
THE END