.NET中的一些东西被称为“格式化程序” - BinaryFormatter
,SoapFormatter
。“格式化程序”和“序列化程序” - 术语之间的任何区别?
其他被称为“串行器” - XmlSerializer
,DataContractSerializer
。
为什么区别?
.NET中的一些东西被称为“格式化程序” - BinaryFormatter
,SoapFormatter
。“格式化程序”和“序列化程序” - 术语之间的任何区别?
其他被称为“串行器” - XmlSerializer
,DataContractSerializer
。
为什么区别?
有点脆弱,但有一个微妙的区别。 .NET框架中有17个具体类用于格式化XML。这些格式化程序全部隐藏起来,您可以使用像XmlWriter.Create()这样的方法获得实例。 DataContractSerializer也是如此,实际的格式是由XmlDictionaryWriter实例完成的。
对BinaryFormatter或SoapFormatter没有这样的间接寻址,他们自己处理格式。换句话说,格式化程序格式,序列化程序使用格式化程序。
在格式化的差异是关键 - 的BinaryFormatter因为它表明,该数据在本机二进制的方式,而SoapFormatter是XML文本的方式,扔在不同方式的序列化实际上是依赖于格式化程序的类型,使用BinaryFormatter的二进制数据往往比肥皂格式化程序小得多并且速度更快。
正是出于这个原因,如果你想采取一个“内存转储”这是更好地使用的BinaryFormatter和序列化/反序列化了,在数据互操作不同架构之间的成本 - 这意味着它可能不兼容如果更换不同的平台,但更快的处理速度之间的数据...
而与SoapFormatter它是从这样的二进制不兼容的保护,因为它基于Unicode或ASCII是文本,但相对很慢!
有趣。我在哪里可以阅读关于格式化XML的17个类? – 2010-09-09 15:33:15
他们没有记录。但你可以用Reflector看到它们。 – 2010-09-09 15:45:43