D0I:10.13374/j.issn1001-053x.1999.03.026 第21卷第3期 北京科技大学学报 VoL21 No.3 1999年6月 Journal of University of Science and Technology Beijing June 1999 三层链式客户/服务模型及其分析 陈志刚” 刘云)刘鸿涛) 1)中南工业大学信息技术研究所,长沙4100832)北京科技大学信息工程学院,北京100083 摘要为了改进传统的2层客户/服务结构的缺陷,提出了3层链式客户/服务计算模型,研 究了其中间层任务的分布, 关键词数据库技术:3层C/S模型:3层链式C/S模型 分类号TP399 人们发现2层的客户机/服务器结构有下 作站”担任此工作,如图2所示. 面缺点:(1)规模受限:(2)软件投资大:(3)数据 安全存在不足:(4)应用的少许变化牵涉模型变 Client-Tier 1 VB,C++,PB,HTML… 化. Message in Middleware/API 13层客户/服务模型 不依赖于Client Middleware Tier 2 LAN/WAN 1.1设想 和Server 若在传统的2层客户机/服务模型中间加 Middleware/API 可用任何开发 入1层,既将前端对后端操作的公共部分提出, 工具开发 集中处理,其功能有些类似于程序中的过程和 Message out 子函数,从而构成3层客户机/服务器计算模 Server-Tier 3 ORACLE,SYBASE, 型(又称3层客户/服务模型,Three-tier Client/ SQL Server… Server).它的好处是:使前端与后端适度分开, 图1典型3层客户机/服务器 对后台数据库的操作集中处理,可大大减少数 据库系统所需的License个数,同时使前台应用 Logical Tier 1 Client1…Client2 的少许变化不牵涉对后台数据库访问进程的变 Physical Tier I 化,自然也会使系统规模容易扩充 LAN,WAN, Logical Tier 2 Application Server 1.23层客户机/服务器体系结构 Internet OR Intranet (普通工作站任务) 在3层体系结构中,中间层通常是一个公 共函数库的集合,通过它将客户机和服务器连 SYBASE Physical Tier 2 为一体,各层应该程序独立、开发工具独立和数 Logical Tier 3 ORACLE 据库管理系统独立.客户机发出请求信息 图2逻辑模型与物理模型的关系 (Message in),经过中间层处理后提交服务器; 服务器响应请求将结果回送(向中间层发送 23层链式模型 Message out),如图1所示, 1.3逻辑模型与物理模型 对于3层客户/服务模型,当系统规模扩 3层客户机/服务器模型是一种逻辑模型 大后只要增加中间构件一中间应用服务器, (Logical Tiers),并不一定正好在物理上对应3 便可不断地扩大系统规模(图3所示).如果每 层物理模型.比如说,中间层可以不运行在一台 个中间构件所管理的客户机数保持在其最大允 单独的“服务器”设备上,可以由一台普通的“工 许值以内,则系统性能几乎不会下降.这种3层 客户/服务模型实际上是一种层次模型. 1998-12-23收稿陈志刚男,35岁,副教授
第 卷 第 期 年 月 北 京 科 技 大 学 学 报 一 三 层 链式 客 户 服 务模型 及 其 分 析 陈志 刚 ‘, 刘 云 ” 刘 鸿涛 , 中南工 业 大学 信 息技 术研 究所 , 长沙 北 京科技大学信息工程 学 院 , 北 京 摘 要 为 了改进传 统 的 层 客户 服 务结构 的缺 陷 , 提 出 了 层链式客户 服 务计算模型 , 研 究 了其 中间层 任 务 的分布 关键词 数据 库 技术 层 模型 层 链式 模型 分 类号 人们 发 现 层 的客 户 机 服 务器 结构有 下 面缺 点 规模受 限 软件投 资大 数据 安全存在 不 足 应用 的少许变化牵涉模型变 化 作站 ” 担 任此 工 作 , 如 图 所示 — 尸 , 料 , , … 卜二二 二 二 二 二 二 二 二‘ 二二‘ 乙二 , 层 客 户 服 务模型 设 想 若 在 传 统 的 层 客 户 机 服 务 模型 中间 加 入 层 , 既将前端对 后 端 操作 的公 共部 分提 出 , 集 中 处 理 , 其 功 能有 些 类似 于 程序 中 的过 程 和 子 函 数 , 从而 构成 层 客户机 服 务器 计 算模 型 又称 层 客户 服 务模 型 , 一 灯 它 的好 处 是 使前 端 与后 端适 度 分 开 , 对 后 台数 据 库 的操 作 集 中处 理 , 可 大 大减 少数 据 库 系统 所 需 的 个 数 , 同 时 使前 台应 用 的少许变化不 牵涉对 后 台数据 库 访 问进程 的变 化 , 自然 也 会 使 系 统 规 模 容 易 扩 充 层 客 户 机 服 务 器 体 系 结 构 在 层 体 系 结 构 中 , 中间层 通 常 是 一 个 公 共 函 数库 的集 合 , 通过 它 将 客户 机和 服 务器 连 为 一 体 各层 应该程序独立 、 开 发 工 具独立 和 数 据 库 管 理 系 统 独 立 客 户 机 发 出 请 求 信 息 , 经 过 中间层 处 理 后 提 交服 务器 服 务 器 响 应 请 求 将 结 果 回 送 向 中 间层 发 送 , 如 图 所 示 逻 辑模型 与物 理 模型 层 客 户 机 服 务 器 模 型 是 一 种逻 辑 模 型 , 并 不 一 定 正 好在物 理 上对 应 层 物理模 型 比如说 , 中间层 可 以不 运行 在一 台 单独 的 “ 服务器 ” 设 备上 , 可 以 由一 台普通 的 “ 工 一 一 收稿 陈志 刚 男 , 岁 , 副教授 — 、黑 不依, 狡污夕 和 丽赢而奋入司 可片 胜一下了尸 今 】 — 巨口 , , … 图 典型 层客户机 服务器 即 普通工作站任务 忐 一 益 一 “ ’ 图 逻辑模型与物理模型的关系 层 链式模型 对 于 层 客户 服 务 模 型 , 当系统 规模扩 大 后 只 要 增 加 中间 构件— 中 间应 用 服 务器 , 便 可 不 断地扩 大 系统 规模 图 所 示 如 果 每 个 中间构件所管理 的客户机数保持在其最 大允 许值 以 内 , 则系统性 能几乎 不 会 下 降 这种 层 客户 服务 模型实际上 是 一 种层 次模型 DOI :10.13374/j .issn1001—053x.1999.03.026
Vol.21 No.3 陈志刚等:三层链式客户/服务模型及其分析 ·309。 Client 1Client n Client hl Client hn 中1个数据库服务器(第3层)的单一数据操作, 个 每个中间应用服务器负责分析与其物理连接的 ¥ 所有客户机的数据操作请求,并调用相应的中 LAN.WAN LAN,WAN Internet OR Intranet 间应用服务器提供服务,则称这种3层客户机 Internet OR Intranet /服务器计算模型为3层客户/服务链式模型. Applicantion Server Applicantion Server h 3分析与比较 RDBMS 1 RDBMS m “3层层次模型”与“3层链式模型”从外观 和物理连接上来看几乎是一模一样的.它们之 图3规模扩大后的3层客户/服务计算模型 间的本质区别是:3层客户/服务层次模型是 定义1在3层客户机/服务器计算模型 面向客户机划分中间应用服务器的:而3层客 中,如果每个中间应用服务器(第2层)负责处 户/服务链式模型是面向客户机所提出的数据 理且仅处理物理上它所连接的所有客户机(第 操作请求划分中间应用服务器的.也就是说由 1层)对系统中所有数据库服务器(第3层)的操 面向客户机方式变成了面向任务方式. 作,则称这种3层客户机/服务器计算模型为 3.1客户端的任务 3层客户/服务层次模型. 一般而言,对于前面提到的一个有k个用 事实上,用户对数据库的操作是频繁的,交 户、h个中间应用服务器(每个中间应用服务器 义进行的.由于SQL数据库系统在实现时总是 连接n个用户,为了简单,设k=hn)、m个数据库 为每个读写的数据库表(Table)和视图(View) 服务器的系统,如果仅从对数据库的操作来看, 建立读写缓冲区,以加快存取速度,而受存贮容 一个应用(Application)分为客户端(Client)、中 量的限制,处于内存中的表和视图个数及其数 间应用服务器端(Middle)、数据库服务器端 据量大小总是有限的,这必然导致数据库系统 (Server)3部分.即: 中数据库表和视图不断地在内存和外存之间进 Application =Client U Middle U Server. 行交换. 因为客户端不直接操作数据库,所以,Client 如果能相对集中地让每个应用服务器只处 nServer=φ. 理对数据库服务器的单一数据操作,则缓存中 客户端Client等于h个用户子集之和:而 所需建立的数据库表和视图数将大为减少,从 每个用户子集由n个用户组成: 而可大大减少表和视图在内存中的交换而显著 Client i=User-aU…UUser-wrn,其中, 地提高处理速度,因此需要进一步改进3层模 i=1,2,…,h. 型,将单纯的层次结构转换为中间链式结构,构 设用户Useri对数据库系统j的操作有l 成一种新的模型,称之为“3层链式CS模型” 种,即:OP={OP,OP,,OP}, (图4所示). 则全体客户对所有数据库系统的访问为: 定义2在3层客户机/服务器计算模型 OP={OP|i=1,2,…,k;j=1,2,…,m;x= 中,如果每个中间应用服务器(第2层)负责且 1,2,…,1} 仅负责处理系统中所有客户机(第1层)对系统 3.2层次模型中间层任务 整个中间层由h个中间应用服务器组成, Client Client 2 Client k 故:Middle=M,UMU…UM, 其中,M为第i个中间应用服务器对数据库的 操作功能集, 中间服务器1 中间服务器h 如果单从数据操作来分析有: 每个中间服务器 M=Client 负责全体对数库 =Useru-ymUU Userun-Irmn 的某一方面操作 {OPay=(i-1I)*+1,(i-1)*n+2,…,(i-1)*+n; 数据库服务器1 数据库服务器m z=1,2,…,m;x=1,2,…,1},所以, 图43层链式C/S模型 M.=Imn,Middle=Imnh Imk
、 锐 陈志刚等 三层链式客户 服 务模型及其分析 一 巨 “ “ ’ ’ 冲 ,‘ ,“ ’ 中 个 数据 库服 务器 第 层 的单 一 数 据 操 作 , 每个 中间应 用服 务器 负责 分 析与其物理连 接 的 所 有 客 户 机 的数 据 操 作请 求 , 并 调 用 相 应 的 中 间应 用 服 务 器 提 供服 务 , 则 称 这种 层 客户 机 服 务器 计算模型 为 层 客 户 服务链式模型 图 规模扩大后的 层客户 服务计算模型 定义 在 层 客户机 服 务器 计 算模 型 中 , 如果每个 中间应用服 务器 第 层 负责处 理且仅处理物理上它所 连接 的所 有客 户 机 第 层 对 系统 中所有数据库服 务器 第 层 的操 作 , 则称这种 层 客户机 服 务器 计 算模型 为 层客户 服 务层 次模型 事实上 , 用户对数据库的操作是频繁 的 , 交 叉进行 的 由于 数据库系统在 实现 时 总是 为每个读 写 的数据 库表 几 和 视 图 场 建立读写缓冲区 , 以加快存取速度 , 而 受存贮容 量 的 限制 , 处 于 内存 中 的表和 视 图个数 及 其 数 据量大小 总是有限的 , 这必 然 导致数据 库 系统 中数据库表和视 图不 断地在 内存和 外存 之 间进 行交换 如果能相对集中地让每个应用服务器只 处 理对数据 库服务器 的单一数 据操作 , 则缓存 中 所需建立 的数据库表和 视 图数将大为减少 , 从 而可大大减少表和视 图在 内存 中的交换而显 著 地提 高 处 理速度 因此 需要进一 步改进 层 模 型 , 将单纯 的层次 结构转换为 中间链式 结构 , 构 成 一 种 新 的模 型 , 称之 为 ,’ 层 链式 模 型 ” 图 所 示 定 义 在 层 客户 机 服 务器计 算模型 中 , 如 果 每个 中间应用 服 务 器 第 层 负责且 仅 负责处 理 系统 中所有客户 机 第 层 对系统 卿 卿 还画乡 爪 全醉瓤 间月务器 负责全体对数库 的某一方面操作 竺吵吵囚 凶犷矍兰垫」 图 层链式 模型 分 析 与 比较 “ 层 层 次 模型 ” 与 “ 层 链 式 模 型 ” 从 外 观 和 物理 连 接 上 来看 几 乎 是 一 模 一 样 的 它们 之 间 的本质 区 别 是 层 客户 服 务层 次模型 是 面 向客 户 机划 分 中间 应 用 服 务 器 的 而 层 客 户 服 务链 式模 型 是 面 向客户 机所 提 出 的数据 操 作请 求 划 分 中 间应 用 服 务 器 的 也 就 是 说 由 面 向客 户 机 方 式 变 成 了面 向任 务方 式 客 户端的任 务 一 般 而 言 , 对 于 前面 提 到 的一 个 有 个 用 户 、 个 中间应 用 服 务器 每个 中间应 用 服 务器 连接 个 用 户 , 为 了简单 , 设 、 个数据 库 服 务器 的 系统 , 如 果仅 从 对数 据库 的操 作来看 , 一 个 应 用 分 为客 户 端 、 中 间应 用 服 务 器 端 记 、 数 据 库 服 务 器 端 部 分 即 因为客 户端不 直接操作数据库 , 所 以 , 二 沪 客户 端 等于 个用 户 子 集之 和 而 每个 用户 子 集 由 个 用 户 组 成 卜 、 , … 卜 , , 其 中 , , , … , 设 用 户 对 数 据 库 系统 的 操 作 有 种 , 即 。 奄 公 ,, 聆 ,, … , 卿 , 则全体 客 户 对 所 有 数据 库 系统 的访 问为 罗 二 , , … , , , … , , , … , 层 次 模型 中间层 任 务 整个 中间层 由 个 中 间应用 服 务器 组 成 , 故 二 拯 城 … , 其 中 , 斌 为 第 个 中 间应 用 服 务器对 数据 库 的 操作 功 能 集 如 果单 从 数 据 操 作来 分 析 有 似 二 卜 。 、 , 日 … , 一 , , 笼 即 沙 一 , 一 , … , 一 十 , , 二 , , , … , , 所 以 , 从 卜 , 卜
·310 北京科技大学学 报 1999年第3期 即3层层次模型中每个中间应用服务器响 理中间应用服务器个数)时,3层链式模型每个 应客户端的数据访问共有lmn种:整个中间层 中间应用服务器应响应客户端的数据访问数相 响应客户端的数据访问共有lmk(=lmnh)种. 对于3层层次模型少,这是因为3层链式模型 3.3链式模型中间层任务 中只需为每个中间应用服务器开发对每个数据 因为链式模型按对数据库的访问类别分类 库系统的一种服务程序;而3层层次模型中要 组织,整个中间层由1个中间应用服务器组成, 为每个中间应用服务器开发对每个数据库系统 故: 的1种服务程序 Middle=nUM2U…UMn. 另外,由于3层链式模型要处理的用户对 链式模型的每个中间应用服务器对应完成 数据库的某种操作,3层层次模型同样也要处 原来物理连接上的h个中间应用服务器的对数 理,因此,即使1>h,3层链式模型中间层的开 据库的某一种数据访问服务,所以如果单从数 发工作量也不会比3层层次模型的高.所以,就 据操作来分析有: 中间层的开发工作量而言,3层链式模型≤3层 M)={Clientit)i=1,2,,h), 层次模型 其中,Client i表示原来物理连接上的中间应用 (2)运行效率, 服务器i的所有用户对所有数据库的(x)类数据 在数据库应用系统中,一般而言,由于数据 访问服务,即: 库表之间相互关联,对一个数据库表的一种操 ={OP8|i=1,2,…,k;以=1,…,m}= 作实际上会牵涉到一系列数据库表(或视图)到 {OP,OP,…,OP8,…OP,OP,…,OP, 内存中的调入调出,所以,3层层次模型使用过 所以,||=km,|Middle]=lmk. 程中中间应用服务器内存中存在着大量的数据 即3层链式模型中每个中间应用服务器响 库表(或视图)的调入调出 应客户端的数据访问共有km种:整个中间层应 在理想的3层链式模型中,每个中间应用 响应客户端的数据访问共有lmk种, 服务器仅负责处理数据库系统的单一操作,由 3.4中间层数据库操作分析 于数据库表之间关联类型不同,所须操作的数 由前面分析可见,3层层次模型和3层链式 据库表(或视图)也就不同,所以单一操作所须 模型整个中间层应响应客户端的数据访问数是 操作的数据库表(或视图)数必然比所有类型操 相同的,都是1mk种,但每个中间应用服务器应 作所须操作的数据库表(或视图)总数少,从而 响应客户端的数据访问数是不同的,3层层次 减少了数据库表(或视图)在内存中的调入调出 模型为lmn种,而3层链式模型为am种.下面 频率,提高了运行效率, 从开发和运行角度来对3层层次模型和3层链 综上所述,3层客户/服务层次模型是面向 式模型进行比较分析. 客户机的:而3层客户/服务链式模型是面向 (1)开发工作量. 任务方式的.后者较前者开发效率高,运行性能 对每个中间应用服务器而言: 好. 层次模型响应数据访问数lmn_lmnl 参考文献 链式模型响应数据访问数m hnm h 1陈志刚.CMS环境中3层客户/服务计算模型与应 当l<h(即,用户对数据库的操作种类<物 用研究:[学位论文].长沙:中南工业大学,1998 Three-tier Linking C/S Model and Analyses Cheng Zhigang.Lu Yun,Lu Hongtao 1)Institute of Information Technology,Central South University of Technology,Changsha 410083,China 2)Information Engineering School,UST Beijing.Beijing 100083,China ABSTRACT Defaults of the traditional client/server model have been analyzed,and 3-tier client/server computing model has been introduced.A new kind of 3-tier C/S model has been defined.The distribution of tasks in the model is researched. KEY WORDS database technique;three-tier client/server model;three-tier linking C/S model
北 京 科 技 大 学 学 报 年 第 期 即 层 层 次模型 中每个 中间应 用 服 务器 响 应 客户 端 的数 据 访 问共 有 种 整个 中间层 响 应 客 户 端 的 数据 访 问共 有 二 种 链 式 模 型 中 间 层 任 务 因 为链式 模 型按对数 据 库 的访 问类 别 分类 组 织 , 整个 中间层 由 个 中 间应 用 服 务器 组 成 , 故 二 对 ” … 人了 链式模 型 的每个 中间应 用 服 务器对 应 完成 原来物理连接 上 的 个 中间应 用 服 务器 的对 数 据 库 的某 一种 数据 访 问服 务 , 所 以如 果 单 从 数 据 操作 来分 析 有 耐 习 。 , , , … , , 其 中 , 表 示原来物理连接 上 的 中 间应用 服务器 的所有 用 户对所有 数据库 的 类数据 访 问服务 即 砂 ,二 玲 , , , 一 , 二 , … , 二 钾 , 岁 , … , 扩 , … 铭 , 思 , … , 嗯 , 所 以 , 对 习 一 , 二 即 层 链式 模 型 中每个 中 间应用 服务器 响 应客户端 的数据访 问共有 种 整个 中 间层 应 响 应 客 户 端 的数据 访 问共 有 种 中 间层 数据 库 操作 分 析 由前面分 析可 见 , 层 层 次模 型 和 层 链式 模型整个 中间层应 响应客户 端 的数据 访 问数是 相 同 的 , 都 是 种 ,但每个 中间应用 服 务器应 响应 客户端 的数据访 问数 是 不 同 的 , 层 层 次 模 型 为 种 , 而 层链式模型 为 枷 种 下 面 从 开 发 和 运行 角 度来对 层 层 次模 型 和 层 链 式模 型 进行 比较分析 开 发 工 作量 对 每个 中 间应用 服 务 器而 言 层 次模 型 响应 数据 访 问数 。 。 链式模 型 响应 数据 访 问数 当 即 , 用 户对 数据库 的操作 种类 物 理 中 间应用 服 务器 个 数 时 , 层 链式模 型每个 中间应 用服 务器应 响应客户端 的数据访 问数相 对 于 层 层 次模 型 少 这 是 因 为 层 链 式模 型 中只 需 为每个 中 间应 用 服 务器 开发对每个 数据 库 系统 的 一 种 服 务程序 而 层 层 次模型 中要 为每个 中间应 用服 务器 开 发对 每个数据库系统 的 种 服 务程序 另 外 , 由于 层 链 式模 型 要 处 理 的用 户对 数据 库 的某 种操 作 , 层 层 次模 型 同样 也 要 处 理 , 因此 , 即使 , 层链 式模型 中间层 的开 发工 作量也 不 会 比 层 层 次模型 的高 所 以 , 就 中 间层 的开 发工 作量而 言 , 层 链式 模 型 ‘ 层 层 次模 型 运行 效 率 在数据 库应用系统 中 , 一般而 言 , 由于数据 库表之 间相互 关联 , 对一 个数据库表 的一种操 作实际上会牵涉 到一系列数据库表 或视 图 到 内存 中的调入 调 出 , 所 以 , 层 层 次模型使用 过 程 中中间应用服务器 内存 中存在着大量 的数据 库 表 或视 图 的调 入调 出 在 理 想 的 层 链式模型 中 , 每 个 中 间应 用 服 务器 仅 负责 处 理 数 据 库 系统 的单 一 操 作 由 于 数据 库 表之 间 关联类 型 不 同 , 所 须 操 作 的数 据 库表 或 视 图 也 就 不 同 , 所 以单 一 操 作 所 须 操 作 的数据 库表 或视 图 数必 然 比所有类 型操 作所 须操 作 的数据 库表 或 视 图 总 数少 , 从而 减少 了数据 库表 或视 图 在 内存 中的调 入 调 出 频 率 , 提 高 了运 行 效率 综 上所述 , 层 客 户 服 务层 次模型 是面 向 客户 机 的 而 层 客 户 服 务链 式模型 是 面 向 任 务方 式 的 后 者 较前者 开 发效率高 , 运行性 能 好 参 考 文 献 陈志 刚 环境 中 层 客户 服务计算模型与应 用 研 究 学位 论文 长沙 中南工业大学 , 一 雌 ,,, ,, ,, , 介 , , , , , , 阴 一 耐 一 育 , , 一 廿此 一 加