Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML序列化数据要返回的最佳数据类型_C#_Serialization_Interface_Return Value - Fatal编程技术网

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

C# XML序列化数据要返回的最佳数据类型,c#,serialization,interface,return-value,C#,Serialization,Interface,Return Value,我正在创建一个通用的Android到C#tcp堆栈。在C方面,我想实现一个名为ITcpSerializable的接口 然后,此序列化的结果将作为原始xml通过tcp连接发送 目前的定义是这样的 public interface ITcpSerializable { StringBuilder Serialize(); } 然而,我想知道的是,对于像Serialize()这样的方法,当您期望在某些情况下数据集可能相当大时,最好的返回类型是什么 对于这种方法,似乎有很多返回类型的选择。流、

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

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

目前的定义是这样的

public interface ITcpSerializable
{
    StringBuilder Serialize();
}
然而,我想知道的是,对于像
Serialize()
这样的方法,当您期望在某些情况下数据集可能相当大时,最好的返回类型是什么

对于这种方法,似乎有很多返回类型的选择。流、文本阅读器、xmldocument,甚至字节[]等等。。。最好的是什么


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

如果你正在开发一个供第三方使用的组件,那么你最好坚持.NET、google的序列化模式来撰写这方面的文章

我相信答案是返回byte[],但如果您阅读一篇文章,可能会了解更多关于该模式的信息


如果您是为自己开发的,请坚持使用适合您的内容。

因为您是在谈论TCP,我将使用流模式,而不是返回类型,即

void Read(Stream source);
void Write(Stream destination);
这是独立于格式的。然而,对于“关注点分离”,我倾向于使用一个独立的序列化程序,而不是也知道序列化的对象。。。要么它的工作是成为一个对象模型,要么它的工作是知道如何序列化事物;很少两者都有


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

我通常更喜欢JSON而不是XML,因为它很小,我已经考虑过这一点,并且可能会在某个时候转向JSON。不管怎样,我认为这个问题与您使用的任何内部实现都相关。