我正在尝试将数据源绑定到转发器,例如,在页面加载时绑定到 Web 服务(来自不同网站的 .asmx)。Web 服务从 sql 调用返回一个 DataSet。这样做的最佳方法是什么?
问问题
2196 次
2 回答
1
因为您正在呼叫另一个网站,所以您必须解决两个问题(特别是如果此 Web 服务位于其他人的网站上或通过公共互联网)。首先,从其他网站检索数据可能会有延迟。其次,其他网站可能会超时。
至少您应该考虑异步页面请求。正如这篇 MSDN 文章所述:
如果同步请求成为 I/O 绑定的——例如,如果它调用远程 Web 服务或查询远程数据库并等待调用返回——那么分配给请求的线程会卡住,直到调用返回。这阻碍了可伸缩性,因为线程池具有有限数量的可用线程。如果所有请求处理线程都被阻塞以等待 I/O 操作完成,则其他请求将排队等待线程空闲。充其量,吞吐量会降低,因为请求等待处理的时间更长。在最坏的情况下,队列已满,并且 ASP.NET 使后续请求失败,并出现 503“服务器不可用”错误。
但最好的解决方案可能是使用 AJAX。加载页面然后发出 ajax 请求来填充中继器。这样,您可以在等待 Web 服务时获得漂亮的“旋转”图形或发生其他事情。
于 2008-10-31T15:27:22.677 回答
0
调用 web 服务,获取结果,并将其绑定到您的转发器。
如果可以,您也可以尝试将信息缓存一段时间,以帮助提高整体性能。
于 2008-10-31T14:13:33.950 回答