客户/服务器的开发工作涉及定义客户/服务器的体系结构, 然后再将该结构与其它一些对于客户/服务器的实现至关重要的系统结构和技术集成起来。Delphi 2.0的Client/Sever版支持用户开发客户/服务器结构的应用程序。本章中我们将阐述客户服务器体系结构原理、如何用Delphi构建客户/服务器的环境和Delphi存取远程SQL服务器的编程和注意事项。
18.1 Delphi客户/服务器应用开发原理
18.1.1 客户/服务器体系结构
18.1.1.1 体系结构概述
客户/服务器系统的体系结构有以下两个特点:
● 是集合智能用户工作站作为有效平台使用
● 平台和软件之间的互操作性
客户/服务器结构包括连接在一个网络中的多台计算机。那些处理应用程序,请求另一计算机的服务的计算机称为客户机(Client)。而处理数据库的计算机称为服务器(Server)。所有用户都拥有他们自己的计算机来处理应用程序。
客户机计算机可以是大型机、小型机或微机。但是由于微机具有成本的优势,因而通常选择它们作为客户机。同样地,服务器通常是一台微机但在需要较大能力时,也可以使用一台大型机或小型机。在数据库环境下,通过若干称作中间件(Middleware)的程序设计接口,客户机可以与服务器通信。这些接口提供应用程序和数据库之间的连通性。
图18.1 客户/服务器体系结构
虽然图18.1只有一个服务器,但客户/服务器结构也可以包括多个服务器。然而在这种情况下,每个服务器必定只处理一个不同的数据库或提供一个唯一的服务。(注意:使用两上或多个服务器来处理同一个数据库的结构不认为是客户/服务器系统,相反它是一个分布式数据库系统〕
表18.1归纳了计算机在客户/服务器系统中的既定作用。
表18.1 客户机和服务器计算机的作用
━━━━━━━━━━━━━━━━━━━━━━━━━━━
客户机功能 服务器功能
───────────────────────────
管理用户接口 从客户机接受数据库请求
从用户接受数据 处理数据库请求
处理应用逻辑 格式化结果并传送给客户机
产生数据库请求 执行完整性检查
向服务器发送数据库请求 提供并行访问控制
从服务器接收结果 执行恢复
格式化结果 优化查询和更新处理
━━━━━━━━━━━━━━━━━━━━━━━━━━━
18.1.1.2 客户机概述
如上所述,客户机运行那些使用户能阐明其服务请求的程序,并将这些请求传送到服务器。由客户机执行的计算称为前端处理(front-end processing)。前端处理具有所有与提供、操作和显示数据相关的功能。
客户机软件由网络接口软件、支持用户需求的应用程序以及实现网络能力的实用程序【例如电子邮件(E-Mail)和群件(Groupware)】组成。网络接口软件提供各种数据传输服务。应用程序软件执行具体的任务,如字处理、电子表格和数据库查询生成。实用程序软件通常执行几乎所有网络用户都要求的标准任务。
18.1.1.3 服务器概述
在服务器上执行的计算称为后端处理(back-end processing)。后端硬件(back- end hardware)是一台管理数据资源并执行数据库引擎功能(如存储、操作和保护数据)的计算机。在大型机环境下,后端网络(back-end network)提供大型计算机至大容量存储设备、控制器以及文件服务器的连接。在识别、评价和选择适当的服务器平台时,必须考虑将由该平台提供的服务。例如,一个数据库服务器可能需要快速处理能力。其他可能需要执行的网络服务有通信、应用程序、文件访问以及只读存储器(CD-ROM)服务。随着新的应用技术的广泛使用,可被提供的潜在服务还将继续增加。
服务器软件既包括遵循于OSI或其它网络结构的网络软件,又包括由该服务器提供给网络上客户机的应用程序或服务软件。
18.1.1.4 中间件概述
中间件是一个软件层,它保护应用程序开发人员避免受到各种通信协议、操作系统以及数据库管理系统的影响。它为建立可与以前沿袭下来的应用程序并存的新应用程序打下了基础。
中间件有好几种类型。它们包括应用程序设计接口(API),远程过程调用(RPC),网络通信、数据库访问以及计算机辅助软件工程(CASE)工具。
由于客户/服务器系统需要集成各种不同结构的机器和技术,因而应用程序设计相当复杂。选择适当的中间件可以消除程序设计人员为每个单独协议和操作系统编写代码的麻烦。
18.1.2 关系数据库体系结构与客户/服务器模式
18.1.2.1 关系数据库概述
关系数据库被定义为一种特殊的数据库,其中各个文件(称作关系)以平面文件(FlatFiles)或表的形式保持数据。表必须只含有一种记录类型。每个记录具有固定数目的字段,所有字段皆显示命名。表内的字段内容是各不相同的,不允许重复组(repeating groups)。不含有复制记录和预定的记录序列。
在构造关系数据库时,必须特别注意关系的内容以及记录的各属性(字段)之间的内在联系。
关系数据库上的基本操作有选择、投影、连接和除法,选择建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特写标准的原始关系行。投影操作指定将被选择的列,因而形成的表只含有原始表列的一个子集。如果在投影操作删除的列中有两个行不同,那么将只有一个记录被转入新的关系。连接操作从两个或多个表中组合信息。两个表中的公用字段用作组合记录的基础字段。在公用字段中具有相等值的记录被连接在结果关系内。
18.1.2.2 关系数据库实现的任务
实现关系数据库所涉及的任务分为三组:
● 为DBMS定义数据库结构的任务
● 将数据库分配给物理存储介质的任务
● 建立数据库数据的任务
执行这些任务的方法取决于所采用的DBMS产品。
各种不同的DBMS产品提供定义数据库结构的实用程序。这些实用程序使用一种专用的数据定义语言(DDL)。某些DBMS产品含有一些规定,一旦数据库已被定义到DBMS,即将该数据库分配到物理介质。根据应用程序处理的特点,数据可以定位在指定表上或定位在同一磁盘上。它有些DBMS产品偏重于数据库数据的建立。
如上所述,数据库定义、存储分配以及数据建立过程都将取决于应用需求和所选择的特定DBMS产品的特征。
18.1.2.3 关系数据操作
为了开发数据库应用,需要使用一种语言来表达处理逻辑。关系数据操作语言共有四类:
● 关系代数,它是一种语言,提供一组远算符处理关系数据库中的关系
● 关系演算,它是一种语言,在该语言中用户指定一组来自关系数据库内数据操作的结果
● 面向变换的语言,它们构成一类非过程语言,这类语言将表示为关系的输入数据变换成表示为单个关系的结果。SQL就是一种面向变换的语言
● 面向图形的系统,它们为用户提供一个关系结构的图形,如Borland的Paradox 和IBM公司的QBE(Query By Example)
用户可以采用多种方法与关系数据库进行联系:
● 某些DBMS产品,包括有生成表格的工具并提供表格和报告的处理
● 通过查询语言提供一个接口,它们执行查询和更新功能;最重要的查询语言是SQL
● 与关系数据库联系的第三种方法是通过应用程序
18.1.2.4 扩展关系系统
众多的销售商都在积极扩展关系模型。这些扩展包括在关系表中存储复杂数据类型、存储过程、触发器以及二进制大对象(BLOB)。目前正在SQL 3标准中考虑的SQL扩展将包括对对象的进一步支持,还有可能包括对用户定义数据类型及嵌套表的支持。向关系模型提供对象扩展的产品包括Sybase、Informix、Oracle和Borland。
18.1.2.5 SQL:集成客户/服务器体系结构的基本链路
SQL为前面讨论的集成客户/服务器体系结构提供一条基本链路。目前美国国家标准局(ANSI)已认可SQL作为操作数据库的正式工业标准。它是许多数据库管理系统(DBMS)产品都采用的数据存取语言。
SQL允许用户在关系表数据上进行查询、建立新表、存取现有的远程表、操作数据、建立应用程序存取SQL数据,运行SQL语句,处理错误以及访问多个服务器。SQL数据库服务器是多用户关系数据库管理系统(DBMS)。
SQL可以作为一个查询语言用于交互式使用或嵌入在应用程序中。在执行查询时,SQL接受一个或多个关系作为输入并产生一个关系作为输出,结果是一个表或平面文件,例如,一批不含有重复组的同一类型记录。在查询多个表时,SQL将这些表连接起来。SQL内还含有一些规定,用来向表中插入新数据、从表中删除数据或修改表中的数据。
18.1.3 各种数据库服务器功能介绍
服务器数据管理包括若干软件,它们使用户可以访问网络中的任何节点以及确保多用户环境下的保密性、可恢复性和完整性。如前面所提到的,客户/服务器计算中的基本存取链路是SQL,它是一种高级非过程数据库语言, 现在已开发出很多支持SQL 的后端服务器及DBMS。下面将描述这些产品。
18.1.3.1 DB2
DB2是一种由IBM公司开发的RDBMS。它使用SQL执行所有的数据库操作。数据定义、数据存取、数据操作以及授权功能。SQL语句由用户在一个客户机节点从键盘输入或嵌套在应用程序中。
DB2的结构包括表、视图、表空间、索引、索引空间、数据库和存储组。 这种RDBMS提供有允许用户动态建立和修改这些结构的工具。DB2还包括一些并行处理软件,以控制和限制干预、后备和恢复功能以及安全性保证等。
并行处理通过锁来完成,当应用程序读数据库数据时,DB2在该数据上获取一个共享锁,允许其他应用程序读这个相同的数据。如果一个应用程序需要修改数据,那么DB2将一个互斥型锁放在该数据上,以阻止其它应用程序访问这个数据。DB2还提供一些关于锁的级别或锁的大小的任选项。
DB2周期性地存储并检查所有数据库变化。所有驻留在系统缓冲区中的变化被写到数据库,并将一个变化的记录载入日志。以最近一次写到日志的变化起所建立的全部映像可用于完成系统故障的恢复。DB2包括一些用来从备份拷贝重新建立数据库的实用程序。这种实用程序含有一个选择项,允许用户只拷贝表空间中那些自最后一个备份后新被修改的页面。
DB2还含有一些用来保护数据库的安全性规定。
18.1.3.2 Borland对象成分体系结构(BOCA)
BOCA建立了一个既考虑开发工具又考虑数据库管理工具的客户/服务器体系结构。它将一级面向对象的工具、中间件和数据库服务器技术集中在一起提供客户/服务器的解决方案。该体系结构的组成部分有:
1. 先进的面向对象工具
Borland建立有广泛基础和紧密集成的面向对象的工具,这些工具充分利用了当前客户/ 服务器变革的优点。使用面向对象的方法学,建立了如下产品:Borland C++、Borland Delphi、Paradox、QuattroPro、Visual dBase以及ObjectVision等。
2. IDAPI
IDAPI(集成数据库应用程序设计接口)是Borland公司的SQL连通性解决方法。 IDAPI使得开发人员能够以更高的效率建立数据库应用,允许用户在多种硬件和操作系统平台以及网络环境下访问,以多种数据库格式存储的数据。
3. InterBase
InterBase是一种分布式SQL数据库服务器。它支持每个数据库系统查询数据并将信息返回到其它任何一个InterBase服务器。InterBase 的可变体系结构代表了关系系统技术的第三次浪潮,可变引擎使得InterBase可以以最少的锁支持高效事务处理和决策支持事务处理。
Borland公司的面向对象技术使得开发人员可以通过构造模块化的应用成分来建立复杂客户/服务器系统。这些模块化应用成分可以很容易地开发、测试、维护和增强,并可方便地装配到复杂的应用程序包中,此外Borland公司的可视化技术极大地提高了软件生产率。
18.1.3.3 Informix SQL服务器系列
Informix公司推出了多种产品来满足特定的客户/服务器需求。 它们包括Informix-On-Line,Informix TP/XA,Informix Star Informix On-Line/Optical和Informix On-Line工作站版。
Informix-On-Line是一个联机事务处理(OLTP)数据库服务器,具有可用性、数据完整性以及多媒体数据管理能力。它建立有效的数据存储方法进行快速数据存取;缓冲数据于内存最低限度地使用磁盘存取;利用多处理器特征,允许不同处理器同时存取;以及自动确定是有效的搜索策略等,从而获得极高的性能。
Informix-TP/XA将On-Line连接到事务处理管理程序;支持那些涉及多个数据库以及多个DBMS(由不同的销售商提供)的事务处理。在众多RDBMS中,Informix 第一个向依从于X/Open XA的事务处理管理程序提供了这种基于标准的接口。
Informix-STAR是一种用于On-Line的分布式客户/服务器数据库产品,它提供最佳的性能,并且具有最小的网络通信量、站点透明性以及在不同站点操作数据库的高度可靠性。
Informix-On-Line/Optical是一种针对On-Line用户的附加产品。这些用户想在他们的数据库系统上使用具有大容量存储能力的光学设备。On_Line/Optical允许用户在“写一次读多次”(WORM)的光学子系统上存储BLOB。用户必须拥有On-Line/Optical On-Line和一个光学子系统。那当然,如果没有这个On-Line/Optical产品用户仍可以使用On- LIne在磁存储设备上操作BLOB。
Informix-On-Line工作站版是On-Line管理员手册的图形化版本。该工作站版具有与硬件版本相同的技术内容,但它是构造在一个窗口化、点一揿式(Point-and-Click)图形接口,采用关键字交叉查阅。这使得用户可以在某一窗口中存取所需信息的同时,在另一窗口中配置监视或调节On-Line。
18.1.3.4 Microsoft SQL服务器系列
作为Microsoft SQL服务器系列的一部分,有以下产品:Microsoft SQL Server for Window NT,Microsoft SQL Administrator for Windows,Microsoft SQL Bridge 和Microsoft SQL Server程序员工具包。
Microsoft SQL Server for Windows NT旨在为有关键任务的应用系统管理大型数据库和满足网络化客户/服务器应用的需要。
Microsoft SQL Bridge在Microsoft SQL Server环境和Sybase SQL Server环境之间提供一个协议网点。
Microsoft SQL程序员工具包提供开发客户/服务器应用程序的灵活性,这些应用程序将关键的组合信息传送给基于Windows、MS-DOS和OS/I的生成系统。
18.1.3.5 Oracle RDBMS
Oracle RDBMS为以任务为中心的企业范围的应用提供所需要的操作、监督和管理软件。使用Oracle RDBMS的分布式数据库和网点能力,用户可以透明地集成该企业的新旧数据、系统和应用程序。Oracle被分组形成几个软件包,使得客户可选地获取他们自己的应用所需要的功能。这些软件包是:
● 标准Oracle软件包
● 过程化选件软件包
● 分式式对象软件包
● 并行服务器选件软件包
● 开放网关软件包
标准Oracle软件包提供解决大量关键任务的联机数据处理(OLDP)和决策支持应用所需要的功能及性能。这个标准软件除具有其它几个软件包的全部特征外,还有以下标准Oracle软件包所专有的特征:
1. Oracle的过程化选件(procedual option)
提供多种能力可使数据库服务器成为应用环境的一个有效组成部分,过程化选件非常适用于具有高级需求和复杂商业实施规则的应用。它可选择地包括在Oracle服务器内使用程序设计语言PL/SQL过程的能力。具有存储过程和函数、过程软件包、数据库触发器、锁管理程序软件包以及数据库报警等特点。它还允许交互式提交或从3GL(第三代语言)程序提交“匿名”PL/SQL过程。
2. 分布式选件(distributed Option)允许把一个物理分布式数据库当作一个逻辑数据库来看待。那些需要在多个站点更新数据的应用可以从分布式选件获益。该选件的特征包括:
● 分布式更新
● 事务处理(TP)
● 监控器(XA)接口
● 透明的二阶段提交
● 远程过程调用(RPC)
● 表复制以及Oracle邮件接口
对于标准Oracle服务器,还包含查询能力和全局数据库名。
3. 并行服务器选件(Parallel | Server Option)
提供对松耦合系统多个节点的支持,从而并行存取OLTP和决策支持的一个数据库。并行服务器在高性能、可扩充性、可用性以及数据库连接等领域具有极大的优势。并行服务器选件包括高速缓存(Cache)管理以及松耦合和大规模并行平台所需要的其它所有特征。
4. Oracle开放网关软件包
提供对非Oracle数据管理程序、文件系统、应用程序和其它各种系统中的数据可编程且透明的存取。Oracle公司采用开放网关技术来向众多流行的数据系统和文件系统提供SQL连接网关,以进行透明的SQL存取。对于那些没有SQL连接产品的目标数据管理程序,Oracle开放网关开发人员工具包可以简化基于开放系统的应用手册的系统、数据及应用的集成工作。
如果有些部门希望使用基于数据灵敏性或分类的存取控制,那么Trusted Oracle 会包含有Oracle T的所有特征,并具有多级安全性。
18.1.3.6 Sybase SQL服务器系列
Sybase SQL客户/服务器体系结构由三个产品系列组成Sybase SQL服务器、Sybase生命周期开发工具和Sybase开放式互操作性产品。
Sybase SQL服务器是一个针对联机应用的RDBMS。它提供亚秒级响应时间,每用户低成本操作和可用性,SQL服务器智能数据词典收集了众多数据定义、商业规则、报告以及配置信息。
Sybase SQL生命周期工具提供一种快速原型设计、建立和维护联机应用的手段,使事务处理模型化,实施商业规则保护数据完整性,并将现有应用与新的数据源结合起来。
它们允许开发人员在SQL卡上用生命周期的各个阶段工作。利用Sybase工具,开发人员可以任意组合使用SQL、3GL、4GL多媒体和面向对象的工具来建立联机系统。
Sybase的互操作性策略提供用于开发客户机和服务器应用的两种扩展工具包,并面向最通用的RDBMS提供拨动网关(turnkey gateways)。该策略使得复杂计算环境下的多机种硬件,操作系统、网络、数据库和应用程序协同作成为可能。
18.1.4 IDAPI结构原理
IDAPI(集成数据库应用程序设计接口)是Borland公司解决客户/服务器连通性的方案。也是Delphi 客户/服务器开发的重要组成部分。为了说清楚什么是IDAPI,让我们先来讨论一下普通数据库的接口问题。
每个数据库管理系统和数据库应用都需一定的方式来访问内容所采用的数据格式,连接二者的部分称为接口,其最简单的情况就是对文件的直接访问,也可复杂到由几个层次组成。
当今,面向用户的数据库通常都直接与其数据打交道,对那些有一定的用户和使用了一定时间的产品尤其如此。制造商总是认为自己的产品就是标准,而不关心对其它数据格式的访问。同样,许多纵向数据库应用用类似C的语言开发,多是直接访问其数据库。对开发者,这样做会变得容易些,但用户的情况往往是多变的。他对底层数据格式的选择并不一定与产品一致。其实在ODBC和IDAPI等尚未推出的前20年里,工业界已经认识到,一个DBMS不只是要访问其自身的数据格式。
广义地讲,数据库接口可分为以下两类:
● 本地型(Local)
● 客户/服务器型(Client/Server)
本文来源:网络收集 作者:佚名