【问题标题】:Call Web Services Using Ajax or Silverlight? Which performs best?使用 Ajax 或 Silverlight 调用 Web 服务?哪个表现最好?
【发布时间】:2010-09-15 04:15:40
【问题描述】:

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

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

我已经对这两种方式进行了一些原型设计,并且我发现两种方式的性能几乎相同。此外,让我将 Silverlight 用于整个客户端数据访问层的原因之一是我需要让计时器定期检查更新的数据并将其下载到缓存中,以便 JavaScript 可以在需要时加载。

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

【问题讨论】:

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


【解决方案1】:

由于 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。

您好, 洛朗

【讨论】:

  • 这正是我的想法。
【解决方案2】:

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

文章:Speeding Up AJAX with JSON

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这难道不是 AJAX 的重点——防止锁定/冻结浏览器吗?
    • AJAX 的重点是丰富的客户端功能。然而,JavaScript 不是多线程的,所以如果一个元素事件被触发,它需要在任何其他 javascript 可以在页面上运行之前完成,从而“冻结”页面。在这种情况下使用 Silverlight 可以解决这个问题,因为它在 diff 线程中运行
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      相关资源
      最近更新 更多