【问题标题】:best way to consume a webservice in an asp.net code behind在后面的 asp.net 代码中使用 web 服务的最佳方法
【发布时间】:2008-10-31 13:39:58
【问题描述】:

我正在尝试将数据源绑定到转发器,例如,在页面加载时绑定到 Web 服务(来自不同网站的 .asmx)。 Web 服务从 sql 调用返回一个 DataSet。这样做的最佳方法是什么?

【问题讨论】:

    标签: asp.net sql-server vb.net web-services asmx


    【解决方案1】:

    因为您正在调用另一个网站,所以您必须解决两个问题(特别是如果此 Web 服务位于其他人的网站上或通过公共互联网)。首先,从其他网站检索数据可能会有延迟。其次,其他网站可能会超时。

    您至少应该考虑asychronous page 请求。正如这篇 MSDN 文章所述:

    如果同步请求变成 I/O bound——例如,如果它调用 远程 Web 服务或查询 远程数据库并等待调用 回来——然后分配的线程 请求被卡在无所事事 直到电话返回。这阻碍了 可伸缩性,因为线程池 有有限数量的线程 可用的。如果所有请求处理 线程被阻塞等待 I/O 要完成的操作,额外的 请求排队等待 线程是免费的。最好, 吞吐量下降,因为请求 等待更长的时间来处理。在最坏的情况下, 队列已满,ASP.NET 失败 带有 503 "Server 的后续请求 不可用”错误。

    但最好的解决方案可能是使用 AJAX。加载页面然后发出 ajax 请求来填充中继器。这样,您就可以在等待 Web 服务时获得漂亮的“旋转”图形或发生其他事情。

    【讨论】:

      【解决方案2】:

      调用网络服务,获取结果,并将其绑定到您的转发器。

      如果可以,您也可以尝试将信息缓存一段时间,以帮助提高整体性能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        相关资源
        最近更新 更多