正 文

ASP.NET+AJAX解决网页打开等待问题


www.7dspace.com  更新日期:2005-11-17 7:07:44  七度空间



  三、 线程解决方案

  线程解决方案提供给用户一种更为干净的体验-因为它们可以周期性地得到处理的更新。这里的响应是很容易准备的,尽管在后台的处理可能花一些时间,但是作为响应却可以马上返回。

  为处理此线程系统,我将使用两个类和一个接口。JobHandler singleton负责维持一个对象集合-它实现IJob接口。这个JobHandler管理系统线程。每添加一个工作创建一个新线程,并且该工作上的Start方法在一个新线程内被调用。一个被用于后面查询工作的ID字符串被返回。

  该Job系统相应的UML显示于图3。


图3.这个屏幕快照显示出该Job系统相应的UML。

  WeatherJob是一个Ijob的实现-它负责从机场中的一个指定集合进行天气查询并且填充一个称作Data的包含天气报告的DataSet。

  该JobHandler singleton相应的代码显示于列表2(详见下载源代码)-相当直接。唯一有趣的一点是AddJob方法,它为该工作创建一个新的线程并调用Start方法。

  这些工作的接口显示于列表3(详见下载源代码)。其中的构造器为该工作建立数据集合。而且Start方法,通过每个机场,调用WEB请求并且在该数据集合中存储返回的数据。

  四、 查询解决方案

  监视天气工作的第一种解决方案是使用查询。为此,页面将每隔两秒向它自己回寄数据。请求工作在第一个页面中就开始了。此后,该页面将通过钩住工作的数据输送到页面中的数据格子来监视天气工作的输出。浏览器、WEB服务器以及线程之间的关系显示于图4。


图4.查询:查询HTML解决方案显示了浏览器、WEB服务器以及线程之间的关系。

  针对该查询页面的HTML显示于列表4中(详见下载源代码)。其中,有趣的部分是在标签refreshScript内部的脚本块。当标签是可见的时,将执行该脚本以在页面加载两秒后重新提交表单-这将更新在格子中的数据。

  该查询HTML背后的代码显示于列表5(详见下载源代码)。这里的重要代码是位于page_load方法中。如果存储在隐藏的表格字段中的请求ID是null或blank,则这是第一次加载页面。在第一次加载页面时,创建该工作并且该工作的ID被放置于隐藏的表单域中。

  在两秒以后,该Javascript将被激发而该页面将重加载。请求ID将第二次接近该隐藏的输入字段并且该代码将用指定的ID发现该工作并且使用该数据来填充数据格子。
3页,页码:[1] [2] [3] 

上一篇:Word入门动画教程29:对称页边距
下一篇:网页打不开 Windows的Hosts表是祸首
作者:朱先忠编译  来源:天极网 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐