5

我正在升级一项宁静的服务,现在正在使用 DataContractSerializer 来输出响应。以前的版本只是使用带有 XmlSerializer 的自定义序列化。因为那个版本使用了很多属性,而 DCS 从来没有,我看到新的响应大小是使用 gzip 压缩时的先前版本大小的 1.5 倍。(或未压缩时大小的近 3 倍)。

那么我的问题是,DCS 是否真的会成为比 XmlSerializer 更快、更具可扩展性的解决方案。

4

2 回答 2

4

谁说它会更快、更具可扩展性?我不记得这是 DCS 的主要优势之一。有人曾经说过,DCS 可以序列化更快,但是传输时间往往会使序列化时间相形见绌。序列化速度提高 10% 并生成更大的有效负载,实际上可能会导致整体延迟增加 20%。

如果您不喜欢该大小,可以尝试通过在DataMember 属性中使用较短的名称来缩小原始 XML 。不过,这种方法也适用于 XmlSerializer,使用 XmlElement 属性。使用 DCS,由于元素与属性的尺寸经济性,在尽可能小的尺寸方面,您将始终处于 XmlSerializer 的劣势。

于 2009-08-20T18:15:14.090 回答
1

好的,所以听起来答案似乎是 DataContractSerializer 比 XMLSerializer 慢,如果您正在考虑缩小 XML 有效负载的大小。(对我来说,这是衡量现实世界表现的关键组成部分)。DCS 有一些不错的地方,但如果速度很重要,请跳过它。

我真的很想看看是否有人不同意这一点。

于 2009-08-20T21:10:44.173 回答