使用Ajax或者Silverlight调用Web服务?哪个表现最好?
我正在构建一个ASP.NET AJAX应用程序,该应用程序使用JavaScript调用Web服务以获取其数据,并且还使用Silverlights隔离存储在客户端计算机上缓存数据。最终,一旦下载了数据,就将其传递给JavaScript,该JavaScript将使用HTML DOM显示在页面上。
我要弄清楚的是,在Silverlight中进行这些Web Service调用,然后在数据加载后将其传递给JavaScript,对我来说有意义吗?另外,无论我使用JavaScript还是Silverlight调用Web服务,Silverlight都将使用隔离存储将数据保存到磁盘。如果我使用JavaScript调用Web服务,则数据将传递到Silverlight进行缓存。
我已经完成了两种方法的原型制作,并且发现两种方法的性能几乎相同。另外,使我倾向于在整个客户端数据访问层上使用Silverlight的因素之一是,我需要让计时器定期检查更新的数据并将其下载到缓存中,以便JavaScript可以在需要时加载。
有人做过类似的事情吗?如果是这样,我们对描述的JavaScript或者Silverlight方法的性能有何经验?
解决方案
考虑以JSON格式获取数据的另一件事将比XML和Web服务更快。 JSON很快就变成了JavaScript对象,而不必像XML一样进行解析。就个人而言,我会使用JavaScript。
文章:使用JSON加速AJAX
由于JavaScript不是多线程的,因此我发现使用Silverlight访问/缓存数据,然后将其传递给JavaScript进行显示可产生更好的性能,同时避免锁定/冻结浏览器,以便用户可以在数据运行时继续做事负载。
传递JSON格式的数据在某种程度上更快,因为与XML SOAP消息不同,它不需要SOAP标头或者任何其他杂项信息,而只是纯数据。因此,使消息的总大小更小。
由于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。
你好,
劳伦特