我很困惑 - 我应该何时使用XML序列化,何时应该在.NET框架中使用二进制序列化?
答案 0 :(得分:34)
现有的两个答案都集中在“跨平台”上,但这是一个无关的问题。他们在那里提出的观点是“如果你在做跨平台的话,不要使用BinaryFormatter
” - 我完全支持。但是,有一系列二进制序列化格式非常跨平台 - protobuf / ASN.1是主要的例子。
所以,让我们看一下每个人提供的东西;
请注意,只要您选择合适的二进制格式,互操作性既不是强弱也不是弱点!
Here's an answer,用于比较大多数.NET序列化程序的序列化时间,反序列化和空间度量,供您参考。
答案 1 :(得分:13)
特定于.NET,如果您有两个使用相同类型系统的应用程序,则可以使用二进制序列化。另一方面,如果您有不同平台的应用程序,则建议使用XML序列化。因此,如果我正在编写聊天应用程序(客户端和服务器),我可能会使用二进制序列化,但如果我后来决定使用Python编写客户端,那么我可能不会。
答案 2 :(得分:2)
如果您想要用户友好或跨平台输出,请使用XML。 此外,XML序列化使用公共字段和属性进行序列化,您可以在类级别使用属性和自定义序列化来更改/重新格式化输出。 Bin.Ser。使用私有字段来序列化。