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