发信人: williamlong()
整理人: williamlong(2000-04-24 11:01:14), 站内信件
|
本章描述了远程数据服务技术的结构和组成,并表示出RDS的客户端和服务器端之 间是如何在以下任务中协同工作的。
l 将数据通过Internet 或intranet传输到你的网页上。
l 允许更改后的信息通过网络传输返回并插入数据库中。
这部分包含了以下信息:
l 三层结构的应用程序
l 远程数据服务应用程序工作方式
l 客户层
l 中间层
l 数据源层
三层结构的应用程序
运用远程数据服务技术的关键在于理解三层结构的客户机/服务器模式。这种模式 将客户机/服务器系统中不同的组成部分划分成三层:
l 客户层 — 指的是本地计算机,其上或者装有能显示并处理远程数据源的数据 的Web浏览器的,或者装有单独编译过的前端应用程序(非基于网络的应用程序) 。
l 中间层 — 指的是包含了封装有商业规则组件的Microsoft Windows NT_ Serv er服务器。中间层的组件可以是运行在IIS( Internet Information Server)上 的ASP的脚本也可以是(对于非基于网络的应用程序来说)经过编译的可执行文件 。
l 数据源层 — 指的是包含有数据库管理系统(DBMS)的计算机,例如Microsof t SQL Server数据库。(在两层结构应用程序中,中间层和数据源层通常合二为 一。)
并没有必要将这些层与网络的物理层次关系直接对应起来。例如,这三层也许只 存在于两台机器之上。其中一台可能是装有Internet Explorer 4.0为浏览器的W indows 95计算机,而另一台则可能是同时运行有 IIS 和 Microsoft SQL Serve r的Windows NT服务器。当处理网络上的进程和数据时,为了获得最大性能和最简 单的维护,采用这种模式的应用程序设计将会给你带来很大的灵活性。
下面的例子说明了如何利用这三层设计RDS应用程序
远程数据服务应用程序如何工作
当你创建了一个远程数据服务应用程序后,你可以将该应用程序划分成两层或三 层的逻辑层。下面的例子说明了一个基于网络的RDS应用程序如何处理用户有关显 示数据库信息的请求。客户端的组件一般都是包含在 Internet Explorer浏览器 中的,通过使用HTTP协议来与服务端的组件通信。Internet Explorer4.0中已经 嵌入了RDS的客户组件,这样就大大简化了使用情况。
一旦用户输入了请求以后,客户端的RDS组件就会向Web服务器发送该查询。而服 务端的RDS组件则处理请求并将它发送给DBMS。DBMS则对请求作出相应的响应,并 返回结果数据。Web服务器的RDS组件将结果数据传送到一个ADO Recordset的对象 中,并把数据变换成传输给客户的格式,然后通过网络传输给客户机。这些数据 可以在一些Data-aware控制中显示,例如一个文本框或是文本网格,这些都是由 RDS.DataControl对象被数据绑定的。RDS.DataControl 能够将数据引导到很多个 Data-aware控制中。
结果数据将被缓存在客户机上,这样做是为了减少与Web的连接次数以及使用户更 易于操纵数据。唯一需要与服务器端进行连接调用的是对商务对象的调用(例如 更改数据服务器或者请求新的数据)。
为了了解如何实现上述的简单应用,请完成地址书教程,同时也可以查询"Devel oping Remote Data Service Applications"来获得一些例程序代码以及面向任务 的信息。
客户层
客户层提供了表示信息和收集数据的可视界面,在一个基于网络的RDS应用程序中 ,客户层通常由以下组件构成:
l 包含有一个RDS.DataControl对象和一个或多个Data-aware的网页;
l 实例化中间层对象的商务对象代理和RDS.DataSpace对象。
l 客户端数据缓存。
下面这个例子描述了RDS客户端组件如何在相互之间以及与基于Web的应用程序的 中间层进行通信。
在Recordset对象中保存的数据,是可受网页绑定控制的,它能够通过HTTP或者D COM并由OLEDB提供者作为更新信息传送到中间层。
远程数据服务网页
网页代表了一个远程数据服务应用程序的前端。你可以从远程服务器给数据绑定 一个
Data-aware控制,并且可以从网页上浏览、编辑以及修改数据。
RDS.DataControl对象
RDS.DataControl对象是用于Internet Explorer中在网页上显示查询结果的一种 数据绑定机制。每一个RDS.DataControl对象都将一个表示了单个查询结果的 Re cordset对象与一个或多个可视控制捆绑起来(例如文本框、combo box、网格控 制等)。在每个页面中也许包含了不止一个RDS.DataControl对象,而每一个RDS .DataControl对象能与不同的数据源相连并可以包含独立查询的结果。
商务对象代理和 RDS.DataSpace对象
远程数据服务中使用了商务对象代理,这样客户端组件能够与处于中间层(IIS Web服务器)的商务对象通信。代理使得应用程序数据的打包,解包以及在跨进程 和机器边界的传送或排列等操作更为简单。
如果使用RDS.DataControl对象来获得无连接的Resultset,RDS会调用RDSServer .DataFactory对象;你则不必明确地调用RDSServer.DataFactory或RDS.DataSpa ce对象。每当商务对象代理的中间层的商务对象的副本被创建时,该代理也就被 动态的创建了。
有关创建商务对象代理调用常规商务对象的详细信息请参看“CreateObject Met hod”和“Getting a Recordset to the client”。
RDSServer.DataFactory 和常规商务对象
有两种途径可以实现利用远程数据服务从服务器端向客户端返回一个Resultset对 象,它们分别是:
l 使用 RDSServer.DataFactory对象
-------或者-------
l 创建一个可表示数据访问方法的常规商务对象。
RDS包含了一个被称为RDSServer.DataFactory服务器端的商务对象(ActiveX DL L),它向DBMS发送SQL语句,并通过Internet 或intranet来返回结果。RDSServe r.DataFactory是缺省的ActiveX DLL,可以利用它来在网页上提供实时数据,而 不需很多编程。
如果不愿意使用RDSServer.DataFactory对象来向客户端返回Resultset对象。你 可以自己创建能运行在服务器上的ActiveX DLL文件。这些自定义的DLL文件可以 包含一些简单的RDSServer.DataFactory的ActiveX DLL所没有提供的方法,这些 方法也不必与数据访问相关,他们只要遵守商务规则即可。
客户端的数据缓存
远程数据服务的最重要的特征之一就是它在客户层和中间层都有内存中的数据缓 存。数据缓存的作用表现为:
l 减少了客户端应用程序组件与数据库服务器之间的数据请求的次数,这对于通 过Internet 来访问数据的性能改善是很可观的。
l 使得客户端应用程序不必等待数据通过整个网络传输过来,而能快速及时地得 到数据。
使用无连接的Recordset对象也可以消除由于多个网络客户同时访问数据资源时发 生的OLE DB的连接的**矛盾。
客户端的数据缓存由以下几部分组成:
l ActiveX数据对象(ActiveX Data Objects)
l 客户游标引擎(Client Cursor Engine )
ActiveX Data Objects
你可以使用ActiveX Data Objects (ADO)来编写能够通过提供者(数据库接口) 来访问和处理数据库服务器上所存放的数据的客户端应用程序。如果使用RDS.Da taControl对象来向数据库发送查询请求,那么远程数据服务(RDS)的服务器端组 件将向客户端返回一个ADO Recordset对象。你不必为此编写专门的ADO 代码,因 为当使用RDS.DataControl对象时RDS会为你处理这些的。RDS将ADO作为代码与OL E DB提供者所提供的数据之间的一个编程接口。因RDS 已经使用了ADO,因此利用 ADO来扩展RDS功能是十分简便的。
ADO 和. Remote Data Service
ActiveX Data Objects (ADO)是一个能够对OLE DB提供者中的数据的获得、更改 以及创建等操作的自动操作方法的集合,其中包括了ODBC数据库。远程数据服务 提供了客户端的Recordset对象的缓存以减少网络传输的数量,同时它也提供了数 据绑定机制以在网页中的数据绑定控制中显示Recordset对象。
对于客户端需要浏览记录或是与实时数据相连的程序来说,RDS是很适合的。因为 数据是在客户机上缓存的,用户可以很快地浏览这些数据,同时RDS可以节省用户 有关数据源详细信息的需要。
ADO对于需要数据库有很强的编程能力的应用程序来说是很实用的。通过ADO,可 以指明需要创建哪一种类型的Recordset对象,这比使用RDS要灵活一些。同时, ADO可以在Web服务器上的ASP页面中执行,在基于网络的程序中它不需要任何客户 端的组件。同时ADO可以保持数据库的连接,而RDS则总是与无连接的数据打交道 。
当创建一个应用程序时,首先要决定哪一种技术比较合适。你也可以在同一个应 用程序中使用RDS, ADO, 或者是二者的结合。例如,你的程序中可以将数据源与 使用ADO来管理数据操纵的自定义的商务对象结合起来,而RDS则将远程数据传送 给与客户进行交互的中间层。
ADOR 和 ADODB Recordset Objects
ActiveX Data Objects (ADO)既可以在客户层又可以在中间层中存在。ADOR 和 ADODB 则是"ProgID's"或者前缀用来指明Recordset对象存在和被处理的位置。 如果Recordset在中间层,那么代码中使用ADODB ProgID,而如果Recordset在客 户端存在并被处理,那么应使用ADOR ProgID。无论在哪一层Recordset的行为是 一致的。只有某些Recordset的方法和属性间存在着细微的差别,这些差别在相应 的ADO方法和属性参考文献中都有介绍。
OLE DB
对于任何能与OLE DB通信并通过OLE DB标准让外部访问其数据的数据源(包括关 系数据库和非关系数据库,Microsoft Excel 的电子表格,邮件,以及普通文本 文件等)来说,远程数据服务器能通过OLE DB接口来与它进行通信,这种数据源 我们称它为提供者。
目前已有很多这种提供者,包括: Microsoft ODBC Provider,它通过 OLE DB来 使得任何ODBC的数据库可被外界访问; Microsoft Jet Database Engine Provi der,它通过OLE DB使得用户可访问Microsoft Access及其它桌面数据库。
通常可以使用Microsoft Visual Basic 或 VBScript来访问ADO Recordset对象, 因此OLE DB层是不可见的。ADO 和RDS是在“幕后”使用OLE DB的。
有关使用OLE DB的详细信息,请访问OLE DB的网点 (http://www.microsoft. com/oledb/)。
客户游标引擎
客户游标引擎是一个数据结构的集合,这种结构对从DBMS所取得的查询结果以及 客户对这些数据的更新进行缓存(或是将大的数据暂时存放在硬盘上)。客户游 标引擎对用户来说是一种透明的底层技术,远程数据服务将自动调用客户游标引 擎来执行不同的任务。
客户游标引擎为元数据例如基本表、行、列、关键字及时间戳等提供同真正的表 数据一样的缓冲区。为了管理缓存,客户游标引擎可以:
l 创建和删除临时表
l 聚居表
l 管理对数据值的修改
l 提供概要信息(例如基本表、主列、可修改的列、特殊列以及被计算的列等)
l 在向服务器返回修改记录的时候,提供一种只传送修改记录以减少网络传输的 机制
中间层
中间层是在客户机和数据库服务器之间的一座“桥梁”。中间层的组件对用户( 或其他商务服务)的请求作出响应以执行商务任务。
在RDS应用程序中,中间层的商务对象处理客户端通过某种传输协议例如HTTP传送 的数据请求。这些数据会进一步通过 一个OLE DB提供者来向数据源传送以完成请 求的传输。中间层通常由以下组件组成:
l Internet Information Server和 ADISAPI
l 商务对象
l 服务器端的数据缓存
下面这个例子表示了中间层的不同组件。
Internet Information Server
Microsoft Internet Information Server (IIS)增强了Windows NT Server4 .0的功能。IIS包含了一系列用于创建基于服务器的Web应用程序和丰富动态的内 容的工具集。底层的远程数据服务代码使用其中之一,也就是Internet Informa tion Server API (ISAPI),来帮助建立服务器端的根节点来与客户端的商务对象 代理通信 (通过RDS Advanced Data ISAPI,或者称为ADISAPI)。
ADISAPI提供了分析、自动控制、Recordset对象的排列、表数据的分组、流式传 输和解包等操作。这个扩展类库对于实例化商务对象、通过自动界面请求服务、 以及在向请求的客户通过数据的流式传输来返回结果时对参数的处理等方面能提 供必要的工作。
注意 商务对象代理和ADISAPI组件负责对跨进程和机器边界的数据进行排列。通 过使用针对列数据的排列并基于提供元数据信息的OLE DB标准,经过排列的数据 是按值拷贝的,而不是通过地址。在跨进程或机器边界件对列数据排列时,代理 会使用这种格式。
Active Server Pages
Internet Information Server (IIS)中包含了一种称为Active Server Pages ( ASP)的特征,这样就允许了服务器端的脚本文件的运行。HTML页面中的VBScript 和 ActiveX控制都是在客户的浏览器上解释并表现出来,而Active Server Pag es的脚本文件在HTML页面传往浏览器之前就已由Web服务器上的引擎处理。
同样也可以使用Active Server Pages来编写一些可以象URL一样在任何浏览器中 引用的服务页面(.asp 文件)。这些页面由文本、HTML标记和脚本命令组成,而脚 本命令则由类似与Visual Basic的嵌在 <% and %>标记中的命令组成。
我们可以将ASP页面作为远程数据服务应用程序的组件来使用。正如地址书中 Ge tting Started的例子一样,该例子的HTML和VBScript的代码写在.asp文件中,而 Active Server Pages的脚本则用来查询服务器的名称。
有关IIS和ASP的更多信息,可以参看IIS的Web站点:http://www.microsoft.com /iis/, or IIS 4.0 documentation。
商务对象
中间层的主要应用程序组件是商务对象,这些商务对象中包含了诸如程序逻辑、 商务规则、以及从底层数据库访问数据的代码等信息。客户端的组件通过商务对 象代理来访问服务器端的商务对象。商务对象可以是用Visual Basic_, Visual C++_创建的任何普通自动控制对象。
远程数据服务提供了一个缺省的商务对象,即RDSServer.DataFactory对象,该对 象提供了对数据源的读写操作,但不包含商务规则和程序逻辑。你可以在自定义 的商务对象中使用缺省对象的方法并包含其他的商务规则。
真正与商务对象进行通信的是ADISAPI组件,同时它也负责创建对象实例、调用方 法以及释放对象方法。一个商务对象可以使用ADO来对底层数据库进行查询或修改 。在RDS中,商务对象的生命周期与客户调用方法的整个执行过程是一致的。每一 个方法调用会创建一个商务对象的实例,而不会有中间状态。
有关商务对象的详细信息,请参看"Getting a Recordset to the Client" 和 " RDSServer.DataFactory 和 Custom Business Objects."
DCOM vs. Microsoft Transaction Server
你可以在intranet中不使用HTTP来实现远程数据服务应用程序。如果客户层和中 间层的组件分布在局域网(LAN)中的计算机上,就可以使用DCOM来通过网络设置接 口和方法参数。
对于一个使用RDS的intranet/LAN程序来说,商务对象代理和ADISAPI组件分别被C OM代理和插件代替。除了rowsets以外,排列过的参数不必用多种MIME格式来分组 ,而是通过COM中设置的排列代码实现的并以本地DCE/NDR格式来传输。
当中间层的商务对象是作为Microsoft Transaction Server 的组件而实现时,它 们可以使用Transaction Server的上下文对象来在多客户调用间保持状态。这种 情形对于DCOM来说是可能的,典型的就是在可信任的客户机与服务器间实现(也就 意味着在intranet上实现)。
有关使用Transaction Server的更多信息,请参看 "MTS Resource Dispensers" 和"Running Business Objects in Microsoft Transaction Server.",同时你也 可以访问Transaction Server 的Web站点:http://www.microsoft.com/transac tion/,或者参考Microsoft Windows NT 4.0的Option Pack中有关Microsoft Tr ansaction Server的文档。
RDSServer.DataFactory 对象
RDSServer.DataFactory 对象用于和RDS.DataControl对象一起对后台支持OLE D B的数据源进行获取或发送数据操作,它是一个SQL查询或修改控制。当使用RDS. DataControl对象的某些方法或属性时,远程数据服务将在后台调用RDSServer.D ataFactory 对象,你可以把它作为一个资源对象使用,或者作为一个模板来创建 与RDS应用程序兼容的商务对象。
RDSServer.DataFactory 对象属于Web服务器方并由ADISAPI组件实例化。RDSSer ver.DataFactory 对象提供了对特定数据源的读写操作,但是不包含任何商务的 规则逻辑和确认。
服务器端的缓存
服务器端的数据缓存同客户层的数据缓存是类似的,有关数据缓存机制的详细信 息,请参看“Client-Sidt DataCache”部分。
数据源层
数据源层定义、维护、访问并修改数据,同时管理和满足中间层的数据请求。将 数据源服务从其他应用程序组件中分离开来使得数据结构和访问机制得以维持、 修改,甚至在必要的时候可以重新构造而不对客户层和中间层的应用程序组件产 生影响。
数据源服务器可以在特定的数据库管理系统(DBMS)中实现,或者由属于多种平台 以及主机的联合的数据库的不同部分的集合构成。例如,你的DBMS可以是Micros oft SQL Server的数据库,而使用Microsoft ODBC和OLE DB技术来处理客户端不 同来源的数据。这样就不必对于每个数据源都使用对应的客户驱动程序,同时也 意味着可以很容易地修改远程数据服务程序以适用与任何网络和数据库配置。
---------------------------------------------------------------------- ----------
_ 1997年 Microsoft 公司. 所有权利受到保护.
-- ☆ 蓝色月光 ☆ http://williamlong.163.net
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.128.129.3]
|
|