【问题标题】:Polling Vs AsyncCallback callbacks - best approach for a slow web service?轮询与 AsyncCallback 回调 - 慢速 Web 服务的最佳方法?
【发布时间】:2011-03-17 16:07:42
【问题描述】:

我有一个使用 AJAX 来获取页面搜索结果的网页。在服务器端,我正在查询一个非常慢的 Web 服务 - 20 秒到 2 分钟。

据我了解,我的选择是轮询或长时间运行的请求。

AsyncCallback 似乎是理想的,因为一旦 Web 服务响应就会返回结果,并且线程不会在服务器端阻塞。

有没有更好的方法来做到这一点?你知道在 jQuery 中长时间运行 HTTP 请求有什么问题吗?

更新:是的,我将尽可能缓存来自 Web 服务的响应。我无法控制我正在查询的外部 Web 服务。

【问题讨论】:

  • 这对我来说似乎是个好方法。它将有助于服务器的可扩展性,并且不会影响 AJAX 请求的性能。
  • 如果它是公共网络服务,您可以直接在客户端(异步)或从您的网络服务器获取数据。不确定 jQuery,但异步请求在 javascript (XMLHttpRequest) 中可用。
  • 2 分钟是很长的时间。您是否正在实施寻呼客户端?相反,从数据库中获取分页数据将是一个好方法。
  • Rashmi - 是的,我会将结果缓存在数据库中,因此更多页面的结果将来自数据库。

标签: asp.net jquery web-services asynchronous


【解决方案1】:

我们正在使用 AsyncCallbacks 进行服务器轮询,通常会在 4:30 - 5 分钟内响应,并且系统运行良好。

值得一提的是,您不会获得任何好处(性能、响应时间等),除非您收到太多请求时 IIS 的工作线程池不会耗尽:即。如果我们每分钟收到 2 个请求,我们通常会有 10 - 12 个待处理的请求。在这种情况下,AsyncCallback 将没有任何区别。如果我们每分钟收到 100 个请求,这意味着 500 - 600 个待处理的连接,所以 Async 是必须的。它只是关于管理线程池。

【讨论】:

    【解决方案2】:

    这种用户浏览到另一个页面的方法只有一个问题,您可以将结果缓存在某处,这样您就不会一直查询网络服务。

    【讨论】:

    • 是的,好点。我将尽可能缓存来自 Web 服务的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多