使用Ajax或Silverlight调用Web服务?哪个表现最好?

时间:2008-10-03 19:46:21

标签: javascript ajax silverlight web-services asp.net-ajax

我正在构建一个ASP.NET AJAX应用程序,该应用程序使用JavaScript调用Web服务来获取其数据,还使用Silverlight Isolated Storage来缓存客户端计算机上的数据。最终,一旦下载了数据,它就会传递给使用HTML DOM显示在页面上的JavaScript。

我想弄清楚的是,在Silverlight中进行这些Web服务调用然后在加载后将数据传递给JavaScript是否合理?此外,Silverlight将使用独立存储将数据保存到磁盘,无论我使用JavaScript还是Silverlight调用Web服务。如果我使用JavaScript调用Web服务,数据将传递给Silverlight进行缓存。

我已经完成了两种方式的原型设计,而且我发现性能几乎都是相同的。此外,其中一个指针我指向使用Silverlight作为整个客户端数据访问层,我需要定时检查更新的数据并将其下载到缓存,以便JavaScript可以在需要时加载。

有没有人做过类似的事情?如果是这样,您使用所描述的JavaScript或Silverlight方法与性能相关的经验是什么?

4 个答案:

答案 0 :(得分:3)

由于Silverlight可以处理基于JSON和XML的服务,因此响应的格式完全无关紧要。但是,您必须考虑以下因素:

1)Silverlight比JavaScript快约1000倍 2)如果您的Web服务本机是基于SOAP的,Visual Studio可以为您生成代理,因此您不需要解析SOAP消息。 3)Silverlight具有LINQ to XML和LINQ to JSON,这使得解析POX和JSON变得轻而易举。

在一个完美的世界中,我会选择Silverlight作为“引擎”,如果Silverlight不可用,我会回到JavaScript。

问候, 劳伦

答案 1 :(得分:1)

需要考虑的另一件事 - 以JSON格式获取数据将比XML和Web服务更快。 JSON很快成为JavaScript对象,不必像XML一样进行解析。就个人而言,我会使用JavaScript。

文章:Speeding Up AJAX with JSON

答案 2 :(得分:0)

由于JavaScript不是多线程的,我发现使用Silverlight访问/缓存数据然后将其传递给JavaScript进行显示可以产生更好的性能,同时避免锁定/冻结浏览器以便用户可以继续执行操作当数据加载时。

答案 3 :(得分:0)

传递JSON格式的数据部分更快,因为与XML SOAP消息不同,它不需要SOAP标头或任何其他杂项信息 - 它只是纯数据。因此,使邮件的总大小变小。