代码之家  ›  专栏  ›  技术社区  ›  Chris Pietschmann

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

  •  2
  • Chris Pietschmann  · 技术社区  · 16 年前

    我正在构建一个ASP.NET Ajax应用程序,它使用JavaScript调用Web服务来获取数据,还使用Silverlight独立存储来缓存客户机上的数据。最终,一旦数据被下载,它将被传递给使用HTML DOM在页面上显示的javascript。

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

    我用两种方法都做了一些原型设计,我发现两种方法的性能几乎相同。另外,其中一个关键点是,我需要让计时器定期检查更新的数据,并将其下载到缓存中,以便javascript可以在需要时加载。

    有人做过类似的事情吗?如果是这样,您对描述的javascript或Silverlight方法的性能有什么体验?

    4 回复  |  直到 16 年前
        1
  •  3
  •   LBugnion    16 年前

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

    1)Silverlight比JavaScript快大约1000倍 2)如果您的Web服务本机是基于SOAP的,那么Visual Studio可以为您生成一个代理,这样您就不需要解析SOAP消息了。 3)Silverlight有linq to xml和linq to json,这使得解析pox和json变得轻而易举。

    在一个完美的世界里,我会选择Silverlight作为“引擎”,并返回到Javascript,以防Silverlight不可用。

    问候语, 劳伦特

        2
  •  1
  •   Diodeus - James MacFarlane    16 年前

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

    文章: Speeding Up AJAX with JSON

        3
  •  0
  •   Chris Pietschmann    16 年前

    因为javascript不是多线程的,所以我发现使用Silverlight访问/缓存数据,然后将其传递给javascript进行显示,会产生更好的性能,同时避免锁定/冻结浏览器,这样用户可以在加载数据时继续做事情。

        4
  •  0
  •   Kon    16 年前

    传递JSON格式的数据在一定程度上更快,因为与XML SOAP消息不同,它不需要SOAP头或任何其他杂项信息——它只是纯数据。因此,使消息的总大小变小。