“Formatter”和“Serializer” - 条款之间的任何差异?

时间:2010-09-09 14:40:39

标签: .net serialization terminology

.NET中的一些东西称为“格式化程序” - BinaryFormatterSoapFormatter

其他人称为“序列化程序” - XmlSerializerDataContractSerializer

为什么会有差异?

3 个答案:

答案 0 :(得分:7)

有点脆弱,但有一个微妙的区别。 .NET框架中有17个用于格式化XML的具体类。这些格式化程序都是隐藏的,您可以使用XmlWriter.Create()等方法为它们获取实例。对于DataContractSerializer来说,实际的格式化是由XmlDictionaryWriter实例完成的。

对于BinaryFormatter或SoapFormatter没有这样的间接,它们会自己处理格式化。换句话说,格式化程序格式,串行器使用格式化程序。

答案 1 :(得分:4)

不,他们是同义词。它们执行相同的操作:将CLR对象转换为可传输的字节序列。

答案 2 :(得分:1)

格式化程序的差异是至关重要 - BinaryFormatter ,因为它表明,数据采用原生二进制方式,而 SoapFormatter 采用Xml文本方式,抛出不同的序列化方式实际上取决于格式化程序的类型,使用BinaryFormatter的二进制数据往往比soap格式化器小很多,速度也快。

正是出于这个原因,如果你想进行“内存转储”,最好使用BinaryFormatter并序列化/反序列化,代价是不同架构之间的数据互操作性 - 这意味着它如果在不同平台之间交换数据可能不兼容但是处理速度更快......

使用 SoapFormatter ,它受到保护,不受这种二进制不兼容的影响,因为它是基于Unicode或ASCII的文本,但速度要慢得多!