客户/服务器的开发工作涉及定义客户/服务器的体系结构, 然后再将该结构与其它一些对于客户/服务器的实现至关重要的系统结构和技术集成起来。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
● 与关系数据库联系的第三种方法是通过应用程序 [1] [2] 下一页
|