C# 在.NET framework中,何时应该使用XML序列化与二进制序列化?
我很困惑-什么时候应该在.NET framework中使用XML序列化,什么时候应该使用二进制序列化?特定于.NET,如果有两个应用程序使用相同的类型系统,那么可以使用二进制序列化。另一方面,如果应用程序位于不同的平台,则建议使用XML序列化。因此,如果我正在编写一个聊天应用程序(客户端和服务器),我可能会使用二进制序列化,但如果我后来决定使用Python来编写客户端,那么我可能不会 如果希望用户友好或跨平台输出,请使用XML。 此外,XML序列化使用公共字段和属性进行序列化,如果需要,可以在类级别使用属性和自定义序列化来更改/重新格式化输出。C# 在.NET framework中,何时应该使用XML序列化与二进制序列化?,c#,.net,serialization,xml-serialization,binary-serialization,C#,.net,Serialization,Xml Serialization,Binary Serialization,我很困惑-什么时候应该在.NET framework中使用XML序列化,什么时候应该使用二进制序列化?特定于.NET,如果有两个应用程序使用相同的类型系统,那么可以使用二进制序列化。另一方面,如果应用程序位于不同的平台,则建议使用XML序列化。因此,如果我正在编写一个聊天应用程序(客户端和服务器),我可能会使用二进制序列化,但如果我后来决定使用Python来编写客户端,那么我可能不会 如果希望用户友好或跨平台输出,请使用XML。 此外,XML序列化使用公共字段和属性进行序列化,如果需要,可以在类
宾塞。使用私有字段进行序列化。两个现有答案都侧重于“跨平台”,但这是一个无关的问题。他们提出的要点是“如果您正在进行跨平台操作,请不要使用
BinaryFormatter
”——我完全支持这一点。然而,有一系列的二进制序列化格式非常跨平台,protobuf/ASN.1就是主要的例子
那么,让我们看看每一个都能提供什么
- 二进制文件通常更小,处理速度更快(在两端),并且不容易让人阅读/编辑
- 文本格式(xml/json)往往比二进制格式更详细(虽然通常压缩得很好),但手工操作非常容易;但是,所有的文本处理映射往往会使它们变慢
- xml在web服务中非常常见,得益于谷歌的支持,如xsd、xslt和健壮的xml编辑器
- json是基于浏览器的通信中的主要角色(尽管它也用于web服务),虽然形式不太正式,但仍然非常有效
这将比较大多数.NET序列化程序的序列化时间、反序列化和空间度量,以供参考。需要二进制时使用二进制序列化?困惑在哪里?只是想要?或者在任何情况下都应该这样做?如果您在说“xml序列化”时包含数据契约序列化程序,那么我同意您的看法。@Mahantesh@Adeel-“binary”不是这里的问题;二进制不是不可互操作的,只是:
BinaryFormatter
(二进制序列化程序的一个特定示例)是一个糟糕的选择。还有其他几种。@Adeel,你更喜欢“than”吗?唉;哦,古老的神话。。。反驳这两点;虽然BinaryFormatter
确实是一个字段序列化程序,但它不是唯一的二进制序列化程序-大多数其他序列化程序的性能要好得多-同样地,DataContractSerializer
编写xml,并且除非正确注释类型,否则它将充当字段序列化程序。DataContractSerializer,WCF?在这个问题上,没有一个词是关于这个的。我的参考文献是“xml序列化”,它与XmlSerializer
不同。“xml序列化”只是一种分类XmlSerializer
是“xml序列化”API的一个具体示例DataContractSerializer
还执行“xml序列化”。有点奇怪,您是如何找到旧答案的?就在今天,我试图找到我最近对一些相关问题的一个答案,但我很难找到它。@H.B.通常通过谷歌,