本文属spanzhang原创,其blog地址为:http://blog.111com.net/spanzhang。引用或转贴请注明出处,谢谢!!
以展现数据为主要任务的网页,如股票类的网页,多希望能实时展现数据库里的数据。流行的解决方法是将数据做成xml格式,浏览器隔一段时间取一次该xml数据,然后更新到网页上。一种是使用Microsoft.XMLHTTP来从服务器上GET数据,另一种是用MSXML2.DOMDocument来load服务器上的数据。这两种方法都差不多,都是走的XML路线。【孟子E章】对这种模式写过很多文章,这里就不讨论了。我这里重点在于阐述数据的增量更新过程。
假设我们的数据是一个二维的关系数据,并且每一行都有一个主键唯一标示。WEB服务器在Application_Start里开始一个服务器时钟(System.Timers.Timer),每隔一段时间更新一次数据。服务器提供给客户端的xml数据包含两个文件,一个是当前版本的所有数据(all.aspx),另一个是当前版本和上一版本的增量数据(delta.aspx)。源代码如下:
all.aspx文件:
<%@ Page language="c#" %>
<%
Response.Expires = 0;
Response.ContentType = "text/xml";
Response.Charset = "UTF-8";
%>
<%
System.Data.DataTable dt = sm_web.Logic.dt_all;
%>
<%
if(dt != null)
{
for(int i=0;i {
%>" b="<%=dt.Rows[i]["b"]%>" c="<%=dt.Rows[i]["c"]%>" d="<%=dt.Rows[i]["d"]%>"/><%
}
}
%>
其中,sm_web.Logic.dt_all和sm_web.Logic.dataVersion均为静态变量。所生成的xml数据示例如下:
delta.aspx文件:
<%@ Page language="c#" %>
<%
Response.Expires = 0;
Response.ContentType = "text/xml";
Response.Charset = "UTF-8";
%>
<%=sm_web.Logic.changedXml%>