我一直在阅读有关XML
序列化的内容,根据我的理解,这是一种获取对象并将状态保存在文件中的方法。至于实现,它看起来很直接,并且似乎有大量资源用于应用它。应该何时使用XML
序列化?有什么好处?使用此功能最有帮助的情况是什么?
答案 0 :(得分:3)
.NET XmlSerializer
类不是将对象持久化为XML的唯一方法。较新的DataContractSerializer
更快,并且还允许将对象持久化为XML的二进制形式,这更加紧凑。
XmlSerializer
目前只能获得有限的错误修复,部分原因是因为代码很多依赖于其工作原理的确切细节,部分原因是它与ASMX Web服务相关联,微软认为这是“遗留技术”。
DataContractSerializer
不是这种情况,它仍然是WCF充满活力和重要的一部分。
答案 1 :(得分:2)
你在帖子中回答了一些问题。这对于持久化对象的状态非常有用。我在用于保存用户设置的应用程序中使用它。这也是向其他系统发送数据的好方法,因为它是标准化的。要记住的一件重要事情是它易于人类阅读。根据您的情况,这可能是好事也可能是坏事。如果您不希望其他人能够理解它,您可能需要考虑对其进行加密,或使用加密的二进制序列化。
编辑:
值得一提的另一个问题是.NET实现XMLSerializer
仅序列化对象中的公共成员。如果您需要保留私有或受保护的成员,您将需要使用自定义序列化程序或使用其他形式的序列化。
答案 2 :(得分:1)
它有利于不同系统之间的通信。例如。获取Java应用程序和C#应用程序,并允许它们通过带有可序列化XML对象的Web服务进行通信。这两个应用程序都理解XML,并且不受其他语言细节的影响。是的,虽然你可以来回发送字符串,XML为我们提供了强大的输入和模式验证。
答案 3 :(得分:0)
这仅仅来自个人经验 - XML序列化对Web服务很有用。 此外,如果您想要修改(或允许修改)您要存储的对象/文件而不使用您正在编写的应用程序(即第三方应用程序),XML可能是一个不错的选择。
答案 4 :(得分:0)
我使用HttpWebRequest发送了一个类型为I类的对象数组,因此我无法将其作为对象发送,因为我混合了HttpWebRequest + Soap(我正在编写),而在Soap中你不能发送非预定义的对象作为对象String,int,...。
所以我使用XML序列化将我的对象转换为XML字符串并通过我的HttpWebRequest发送它。