要为XML序列化数据返回的最佳数据类型

时间:2011-04-17 10:16:05

标签: c# serialization interface return-value

我正在创建一个通用的Android到C#tcp堆栈。在C#方面,我想实现一个名为ITcpSerializable的接口。

然后,这个序列化的结果将作为原始xml通过我的tcp连接发送。

目前的定义是这样的。

public interface ITcpSerializable
{
    StringBuilder Serialize();
}

然而,我想知道的是,当你期望在某些情况下数据集可能相当大时,Serialize()这样的方法的最佳返回类型是什么。

对于这种方法,返回类型似乎有很多替代方案。流,textreader,xmldocument,甚至可能是byte []等......什么是最好的?

PS:我意识到这有些主观,但我真的需要一些建议。

2 个答案:

答案 0 :(得分:2)

如果您正在开发一个供第三方使用的组件,那么您最好坚持使用.NET的序列化模式,google上的文章。

我相信答案将是返回byte [],但如果您阅读文章,也许您会了解有关该模式的更多信息。

如果你正在为自己开发,坚持为你工作。

答案 1 :(得分:1)

由于您正在谈论TCP,我会使用Stream模式,而不是返回类型 - 即。

void Read(Stream source);
void Write(Stream destination);

然后这与格式无关。但是,对于“关注点分离”,我赞成单独的序列化程序而不是知道序列化的对象...要么它的工作是作为对象模型,要么它的工作就是知道如何序列化事情;很少两个。

就个人而言,在套接字上我会使用比XML更密集的东西;我对protobuf有很强烈的倾向(但作为一个实现者(protobuf-net),我有偏见)。