ASP 3.0高级编程(四十四)

2016-01-29 19:16 0 1 收藏

ASP 3.0高级编程(四十四),ASP 3.0高级编程(四十四)

【 tulaoshi.com - ASP 】

  第10章 ASP与客户端数据

在一本ASP专著中讨论客户端数据,这与服务器端的ASP编程是否矛盾?情况并非如此,因为我们至今尚未碰到只从事服务器端编程的ASP程序员。虽然ASP是一项服务器端技术,但可以想象,编程人员不可能仅仅使用ASP进行编程。从事ASP编程的Web开发人员,仍然需要与客户端数据进行交互。
因此,围绕着ASP构建一个应用程序时必须考虑整个应用程序的情况,这也意味着必须考虑客户端。为了获得一个运行良好、快速响应的应用程序,需要很好地使用客户端数据。
本章将讨论如何在客户端使用数据。特别将着重研究:
· 远程数据服务(Remote Data Services,RDS),如何向客户端传送数据以及客户端接收数据。
· 如何将ADO记录集绑定到HTML控件。
· 如何利用用户自定义组件提供数据。
· 如何更新客户端数据,并将其反馈到服务器。
· 如何从数据库中获取图像并将其显示在Web页面中。
· 如何创建基于表格的Web页面。
以上覆盖的范围相当广泛,同时有很多不同的方法可以取得相同的结果,但实际上实现起来并不是特别困难。

10.1 断开连接的记录集
首先需要掌握的是“断开连接的数据”的概念。迄今为止,在研究ADO的过程中,已经学习了获取记录集的方法,以及如何修改这些记录集中的数据。回顾一下,我们打开一个记录集,对数据做一些修改,然后再关闭这个记录集,在操作记录集的过程中,始终与服务器保持着连接。这是相当明显的,但别忘了Web在本质上是无状态的。如果想使用客户端数据,如何始终保持与服务器的连接?很简单,这是不可能实现的,这也是定义断开连接的记录集概念的缘由。
一个断开连接的记录集只是一个普通的记录集,但解除了与服务器的连接,成为孤立的对象,可以像普通的记录集那样对其执行更新、增加和删除操作。但这些变化只发生在记录集内部,并不反馈到服务器,因为记录集与服务器已不再保持着连接。这并不是缺点,因为可以与服务器重新建立连接,同时服务器可以对任何修改进行更新。即使服务器端的数据已经改变了,ADO仍然有方法让用户及时发现这些变化,这样用户就能决定哪些数据是正确的。这称为冲突处理(conflict resolution)。
断开连接的记录集使我们能在组件之间,包括服务器与客户之间,传送具有全部功能的记录集。本章后面将探讨如何在组件内创建断开连接的记录集。但这里不准备对此做过于详细的研究,因为本书第13章至第18章已经覆盖这部分内容,这里仅做简单的介绍,以便于了解组件是如何与远程数据服务交互的。

10.2 远程数据服务
远程数据服务(Remote Data Services,RDS)是允许我们处理客户端数据的一系列服务的统称。现在不用担心这方面的问题,因为RDS本身就是ADO的一部分,只有在需要传送和使用客户端数据时,才会使用。实际上RDS是由几个组件构成的。图10-1说明了这些组件以及它们之间是如何协同工作的。
图10-1  RDS的组件构成
组件似乎很多,但并不是所有的组件在每种情形下都被使用,实际上有一些不是RDS的一部分。然而这里还是把所有可能出现的组件都放在了图上,以备需要时查看。图10-1分成了两部分,因为使用客户端数据需要一些向客户端传送数据的方法,同时数据一旦到达客户端,也需要一些管理数据的方法。我们先从服务器端开始。

10.2.1 RDS服务器组件
虽然RDS用于传送和访问客户端数据,但其确实有一些基于服务器的组件。这是必需的,因为肯定需要某种方式将数据传送到客户端。因此有了一系列能访问数据并允许发送数据到客户端的服务器组件。我们把实际的数据传送称为调度(marshal)。
服务器端组件图的最上端是数据存储,由OLE DB提供者访问。它并不是RDS的一部分,但这表示只要有相应的OLE DB提供者,就可以通过RDS在客户端使用任何数据。至于如何处理服务器上的数据,可以有两种选择:
· 数据工厂(DataFactory)是缺省的用于访问数据存储的服务器端组件。它作为服务器端RDS组件的一部分安装在计算机上,除了能从数据存储中获取数据外,还为服务器处理发送到客户端以及从客户端发送来的数据。
· 自定义组件只是一个普通的提供了数据传送方法的COM组件。当数据工厂不能提供所需的功能时,可以使用自定义组件。本章将介绍一个简单的组件例子,在本书的后面还有一个更复杂的例子。
Web服务器使用这两种组件作为客户和服务器数据的接口。

10.2.2 RDS客户组件
在客户端先从底端的DataSpace对象开始,该对象作为客户端的一部分与数据工厂或自定义对象协同工作。DataSpace对象是一个代理对象,负责与服务器进行通信,同时也是数据传输的通道(或者通常所说的调度)。DataSpace对象是用客户端脚本语言或用HTML语言中的<OBJECT标记创建的COM对象。在本章后面会看到关于这方面的例子。
DataSpace对象上面是数据源对象(Data Source Object,DSO),负责存储客户端数据。一个数据源对象包含一个ADO数据记录集,与客户数据缓存共同管理数据。客户数据缓存只是一种管理客户端数据的客户光标服务。同时数据源对象又是

来源:https://www.tulaoshi.com/n/20160129/1508924.html

延伸阅读
标签: ASP
  1.    操作HTTP报头 我们已经在几处见到ASP如何创建或修改在响应页面请示时被发送到客户的HTTP报头。在Response对象中有几个属性和方法可帮助我们做到一点。下面是一些报头方法: · 控制缓存和有效期。 · 创建状态和定制的HTTP报头。 · 指定MIME类型或内容类型。 · 添加PICS标签。 接下来将简要地研究每一个方...
标签: ASP
  第3章 ASP应用程序与会话 在前面的章节中介绍了ASP提供的访问一个客户请求和产生响应的方法,本章将讨论ASP的另两个对象。就是Application和 Session对象。这两个对象不是直接地与请求和响应的管理有关,而是更多地与ASP网页运行环境的管理相关。 与建立Web站点或Web应用程序有关的共同问题之一,是使用HTTP协议时没有状态。...
标签: ASP
  2.  创建Variant数组 在Session和Application对象中创建和使用一个Variant数组来存储值的方法目前尚未讨论,在这里作为一个非常有用的技术进行讨论。正如已经看到的那样,一个Variant数据类型可以包含一个数组,而不仅仅是一个值。 一个数组只是在内存的一个连续区域中以指定的次序存储二进制值的一个长行。要安排Variant,...
标签: ASP
  5.4.1 FileSystemObject对象成员概要        FileSystemObject对象提供一个属性和一系列方法,可用它们来操纵FileSystemObject对象实现的一些从属对象。这里提供了全部的内容概要,然后介绍每一个从属对象。 1.  FileSystemObject的属性 FileSystemObject对象只有一个属性,它用于得到当...
标签: ASP
  (1)  遍历Contents集合的代码 为了遍历Contents集合,可使用一个For Each ... Next结构。集合中的每一项可以是一个简单的Variant类型变量、一个Variant数组或者一个对象的引用。因为需要对每种类型的值进行不同的处理,所以就不得不对每一个进行检查来判别其类型。 在VBScript中可使用VarType函数完成这个工作。这里使用IsObj...

经验教程

867

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部