2008-10-03 61 views
2

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

我想弄明白的是,在Silverlight中进行这些Web服务调用,然后将数据传递给JavaScript后,是否有意义?此外,无论我使用JavaScript还是Silverlight调用Web服务,Silverlight都将使用独立存储将数据保存到磁盘。如果我用JavaScript调用Web服务,数据将被传递给Silverlight缓存。

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

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

+0

顺便说一句,高性能是不发一语。 http://boulter.com/blog/2004/08/19/performant-is-not-a-word/ – 2008-10-03 19:59:52

+0

我想这不是,谢谢。 – 2008-10-03 20:17:32

回答

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

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

文章:Speeding Up AJAX with JSON

0

由于JavaScript是不是多线程的,我发现,使用Silverlight访问/缓存中的数据,然后将它传递给JavaScript来显示产生更好的性能,同时不采取锁定/冻结浏览器,这样用户可以在数据加载时保持干劲。

+0

这不就是AJAX的意义 - 防止浏览器锁定/冻结吗? – Kon 2008-10-03 21:12:21

0

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