我想通过WCF方法传递一组相当通用的数据。数据基本上只是一个关键/值对的分层集合,但它嵌套到任意级别。我最初考虑将它作为单个字符串传递,并在任何一端进行XML或JSON或类似的编码/解码,但由于WCF传输是XML,所以看起来有点傻,所以我希望有一种方法可以传递它“自然”。通过WCF传递递归集合
的方法是相当简单:
[OperationContract]
void ProcessData(DataTree tree);
有:
public class DataTree : Dictionary<string, DataTree>
{
}
这一切编译罚款,但是当我尝试运行它与DataContract.GetStableName下StackOverflowException崩溃的服务。
我试着在DataTree
类中放上一个[CollectionDataContract]
属性,并明确指定了所有的名字,但这似乎没有任何区别。
我也试过把[DataContract]
放在它上面,但是之后它失败的更早,因为Dictionary
是ISerializable
。
任何想法?有一个更好的方法吗?
谢谢,但这仍然是我试图避免的方法。如果我找不到任何其他方式让WCF发挥作用,我可能不得不采用它,但我更愿意“本地”处理它。 – Miral 2010-09-02 20:08:55
@Miral:我明白,但根据我的经验,大型对象树序列化速度也很慢(但速度可能并不重要)。但你应该尝试protobuf网。这是一个为您的端点添加属性的问题,指定将其用作序列化程序。 – 2010-09-03 06:18:52