哪种方法在SQL Server中更快?返回通过DataTable消耗的XML数据或原始数据?

1 c# performance sql-server-2008

服务器可扩展性是我们关注的主要问题.我试图尽可能多地在客户端上进行处理,因为SQL Server 2008没有JSON的原生支持,但是它支持XML ...

我想如果我返回我的数据(使用FOR XML EXPLICIT),然后在C#(BRL Layer)中,我可以使用一个SqlDataReader调用来读取整个XML,然后将其传递给客户端(JQuery).

与使用DataTable在C#中使用原始数据并通过将其序列化为JSON的Web服务返回客户端相比,这种方法不会更快,更可扩展(在服务器上)吗?这里的关键点是服务器可扩展性.

谢谢.

Jon*_*eet 5

如果服务器可伸缩性对您来说是一个问题,为什么您希望服务器必须向下发送大量文本而不是驱动程序将理解的本机形式的"原始"数据?如果您希望最终以JSON形式提供数据,我不会看到在数据库和Web服务方面添加额外的XML转换会有所帮助.如果你能在XML将其发送给客户端,你确定要通过客户端读取格式,并应紧密联系在一起的数据库?这对我来说听起来不是很好.一旦您需要对格式进行任何更改,您就会突然回到解析XML,修改它然后重新序列化它.

当然,关于绩效的规范建议适用于:当有疑问时,衡量.虽然我强烈怀疑使用XML会使事情变得稍慢而不是更快,但我当然建议测量它而不是猜测.

你甚至确定这方面的性能是一个问题吗?我将从设计角度采用非XML路由- 如果直接将XML传递给客户端,耦合级别太高,如果不这样做,则XML不会提供任何显着的好处.

至于可伸缩性:我看不到序列化会影响代码的缩放方式.它可以扩展(更强大的服务器)和扩展(更多相同功率的服务器),而不会出现其他问题.这并不是说它会引入额外的"单一主人",这会导致瓶颈.如果有的话,我希望通过在数据库服务器上施加非常小的负载(这可能证明是难以扩展的瓶颈),非XML路由更具可扩展性.这是基于一种猜测,即将结果序列化为XML比使用本机线协议数据表示需要更多的努力 - 我怀疑SQL服务器中的XML序列化已经相当优化.再次,我建议你在做出一条或另一条道路之前衡量差异(并记住其他因素).