我正在升级一项宁静的服务,现在正在使用 DataContractSerializer 来输出响应。以前的版本只是使用带有 XmlSerializer 的自定义序列化。因为那个版本使用了很多属性,而 DCS 从来没有,我看到新的响应大小是使用 gzip 压缩时的先前版本大小的 1.5 倍。(或未压缩时大小的近 3 倍)。
那么我的问题是,DCS 是否真的会成为比 XmlSerializer 更快、更具可扩展性的解决方案。
我正在升级一项宁静的服务,现在正在使用 DataContractSerializer 来输出响应。以前的版本只是使用带有 XmlSerializer 的自定义序列化。因为那个版本使用了很多属性,而 DCS 从来没有,我看到新的响应大小是使用 gzip 压缩时的先前版本大小的 1.5 倍。(或未压缩时大小的近 3 倍)。
那么我的问题是,DCS 是否真的会成为比 XmlSerializer 更快、更具可扩展性的解决方案。
谁说它会更快、更具可扩展性?我不记得这是 DCS 的主要优势之一。有人曾经说过,DCS 可以序列化更快,但是传输时间往往会使序列化时间相形见绌。序列化速度提高 10% 并生成更大的有效负载,实际上可能会导致整体延迟增加 20%。
如果您不喜欢该大小,可以尝试通过在DataMember 属性中使用较短的名称来缩小原始 XML 。不过,这种方法也适用于 XmlSerializer,使用 XmlElement 属性。使用 DCS,由于元素与属性的尺寸经济性,在尽可能小的尺寸方面,您将始终处于 XmlSerializer 的劣势。
好的,所以听起来答案似乎是 DataContractSerializer 比 XMLSerializer 慢,如果您正在考虑缩小 XML 有效负载的大小。(对我来说,这是衡量现实世界表现的关键组成部分)。DCS 有一些不错的地方,但如果速度很重要,请跳过它。
我真的很想看看是否有人不同意这一点。