我正在创建一个通用的Android到C#tcp堆栈。在C#方面,我想实现一个名为ITcpSerializable的接口。
然后,这个序列化的结果将作为原始xml通过我的tcp连接发送。
目前的定义是这样的。
public interface ITcpSerializable
{
StringBuilder Serialize();
}
然而,我想知道的是,当你期望在某些情况下数据集可能相当大时,Serialize()
这样的方法的最佳返回类型是什么。
对于这种方法,返回类型似乎有很多替代方案。流,textreader,xmldocument,甚至可能是byte []等......什么是最好的?
PS:我意识到这有些主观,但我真的需要一些建议。答案 0 :(得分:2)
如果您正在开发一个供第三方使用的组件,那么您最好坚持使用.NET的序列化模式,google上的文章。
我相信答案将是返回byte [],但如果您阅读文章,也许您会了解有关该模式的更多信息。
如果你正在为自己开发,坚持为你工作。
答案 1 :(得分:1)
由于您正在谈论TCP,我会使用Stream模式,而不是返回类型 - 即。
void Read(Stream source);
void Write(Stream destination);
然后这与格式无关。但是,对于“关注点分离”,我赞成单独的序列化程序而不是也知道序列化的对象...要么它的工作是作为对象模型,要么它的工作就是知道如何序列化事情;很少两个。
就个人而言,在套接字上我会使用比XML更密集的东西;我对protobuf有很强烈的倾向(但作为一个实现者(protobuf-net),我有偏见)。