基于模式的多层分布式软件系统架构的设计


第 32 卷 f.3 2 第 14 期 № l4 计 算 机 工 程 C o m p u ter E n g in e e rin g 2006 年 7 月 Ju ly 2 006 · 软件技术与数据库 · 文章编号:1o0o- 3428(2o06)14__咖s7— o3 文献标识码:A 中圈分类号:TP311.5 基于模 式的多层分布 式软件 系统架构 的设计 阮 军 ,杨春金 (武汉理工 大学信 息工 程学院 ,武汉 4300 63) 奠 要:软件架构的复用是大型软件生产的必然要求。该文讨论了一种基于模式的软件架构,它是在 Borland 的 D ata Snap 技术的基础上 建立起 来的多层分布式架构 。在此 方案 中使 用扩展的门面模式封装业务逻辑层 ,使 用双对 象池对远程数据模块进行优化 。 关翻 :模式;架构;多层分布式;面向对象编程 D esig n of M u lti-tie red D istrib u ted S o ftw a re A rch itectu re B a sed o n P a ttern s R U A N Jun,Y A N G C hunjin (Schoo l of Inform ation E ngineeri ng,W uhan U niversity of T echnology,W uhan 430063 ) IA bStractl S oftw are reuse fo r softw ar e ar chitecture is a certain dem and on m ass production of soft w ar e for com puters.This p aper d iscusses a so ftw ar e ar ch itec tu re b a sed o n p a tte rn s,w h ic h is a m u lti—tiered d istri b u te d sy s tem ’S stru ctu re b y tec h n iq u e o f B o rla n d D ata S n a p .In th is sch e m e 、 business logic layer is encapsulated by an expanded “F acade”.and rem ote data m odule is optim ized by u sing tw o—object poo ling . [K ey w ords l Pattern s;A rchitectu re;M ulti—tiered distri buted stru ctu re,O O P 在现代软件工程中 ,软件复用 已经成为一个主要 目标。 低层次的代码复用通过面向对象的编程语言 已成为现实 ,但 是它 已经不适合于特定领域大型软件 生产 的需 求。为了提 高 软件生产过程 的复用力度 ,不仅要重用 旧的代码 ,而且要复 用相似的分析 设计结果和体系结构 ,以减少构造新软件系统 的代 价并提高软件 的可靠性 。而 架构(A rchitecture)通 常是指 可预 制和可重 构的软件框 架结构 ,就属于这种复用技术 。它 是对 协作 完成一系 列相 关责任 的类或接 I:1集合 的抽象设计 。 1 架构与模式 模式(Pattern)是软件工程专家在软件开发过程 中积累的 , 能够指导开发实践、提高设计质量和效率 的规 范化 方法 。当 专家求解一个特殊 问题时 ,他们一般不是立 即发明一种与 已 有解决方案完全不 同的方案 ,通常是直接利用 或改进现成 的 设计方法来解决新 的问题 ,即复用 已有 的模式 。正如有人所 说的 ,“模式好比是充满真知灼见的命名 了的金块 ,它是被验 证 的解决 方案的精 华所在 ,该 方案解 决与某个计算有关的场 景中重复 发生的问题 ”。 本设计方案采 用和借鉴 了大量 的模 式 ,从广义上可以将 模式分为 3 大类 : (1)架 构 模 式(A rchitectural Patterns)为模 式 中 的最 高层 次 ,它描述 了软件系统里 的基本 的结构组织 或纲要 ,通 常提 供一组事先定义好的子系统 ,指定它们 的责任 ,并给 出把它 们组织在一起的法则和指南 ,见 图 1。 (2)设计模式(D esign Pattern)提供 了一个用于细化软件系 统的子系统或组 件 ,或它们之间的关系的纲要 。它 的规模 比 架构模 式小 ,并且一个架构模式常常可以分解成很 多个设计 模 式以便联 合使 用。例如 ,本方案中涉及到的有 : 1)F actory M eth od 工厂方法模 式:将 创建对象 的责任委 托给派 生类。 业务逻辑层 k — — — — ■— 二= z 了rJ TSystem M odule l(: = 一 T D ataP ipe F actory 卜一一一一一叫 T D ata P ipe 臣 圄 圄 圄 图 1 架糟崎层次模基 2 )F acade 门面模式 :为子系统 中的一组接 口提供一 个统一 的门 面供外部对 象访 问。 3 )F lyw eigh t享元模式 :使用共享 的方式有效 支持大量细粒 度的 作者筒 介:阮 军(1976一),男 ,讲师 、博士生 ,主研 方向 :信息传 输与处理 ,人 工智 能 ;杨 春金 ,副教授 收穑 日期 :2005—07—3 1 E —m all:justin.ruan@ 163.com 一 57一 篓~ 维普资讯 http://www.cqvip.com 对 象 。 4 )M ed iator 中介者模式 :定义一 个对象封装一组对象及彼此 问 互 动的方式 。 (3)实现 模式(Im plem enlafjon Pattern)描述 了使 用给定语 言 的特征来实现组件 的特定方 面或它们之 间关系的方法 。它 关注设计和实现方面 ,包括命名规则、异常处理 的规则等 。 模式是一个从经验 中提取 的 “准则”,并在一次次 的实践 中得到验证 ,在不同的层次有不同的模式 ,提供不 同层面 的 指导。本方案采用 L ayers(层)的架构 模式作为具体软件体系 结构的模 板 ;使用和借 鉴创建型、结构型和行为型设计模式 完成各层 中相 关的类和接 口的设计。而实现系统中具体的实 现模 式不是本文讨 论的重点 。 2 架构方案概要 客户端/服务器 (C lient/Server,c/s)软件体系结构在 20 世 纪 90 年代 以后逐渐成熟起来 ,而多层 C /S 结构是对传统 的 C /S 结构 的一种改进 ,目前也在大量 的实用系统 中广泛地使 用起来 ,并常与 B /S(浏览器/服务器)模式结合使用 ,实现产 品线的继承性、实用性、先进 性与可扩展性。 因此 ,对于多 层可 复用的 C /S 架构 的研究 目前仍然是不可 或缺 的。不仅如 此 ,“层”模式作为一种设计思想 ,“上层使用下层提供 的服 务,且仅通过 调用层次问的特 定接 口获取 下层 服务 ;下层暴 露特 定接 口为 上层提供特 定服务 ,且 不依 赖于 上层 ,也 不知 道 上层 的存在”,使得模块重用性、程序可维护性、物理 分布 的灵活性 以及开发 的并行性得到保证和提高 ,这也是它在业 内根深蒂 固,成为最广泛使 用的软件体系结构 的原 因。 本架构方案也选用多层分布式模式 ,采 用 D elphi的 D ata Snap 技术(也就是 以前 D elphi 中的 M ID A S 技术 )。本架构共 分为 4 层 ,其总体结构如图 1 所示 。 (1)界 面表示层 :处理 系统与 用户的交互。 (2)业务逻辑层 :处理 系统 内部模块之 问的交互 ,以及处理实际 的业务规则 ,包括进行逻辑 判断、执行流程处理 、计算 或提供 预定 义的服务。 (3)数据存取层 :专门处理业务逻辑层 与数据存储层之 问的数据 交互操作 ,提 供上层访问所需数据 的手段 ,包括数据添 加、修 改、 删 除等操作 。 (4 )数据存储 层:提供业 务逻辑 层所需的所有信息和数据。 本架构方案在本研究室开 发的“高速公路综合 管理 系统 ” 系列产品 中广泛应用。本文主要就业务逻辑层和数据存取层 的设计 加以讨论 。 3 业务逻辑层的设计 业务逻 辑层主要处理系统内部模块之间的交互 ,并提供 对 上层提供 系统运行状态与 业务数据等 的支持,以及 处理 实 际的业 务规则 。业务逻辑层主要包含 6 个主要组 件集,其构 成如下 : (1)M anager 组件 集 :完成对整个业务逻辑层 的封装 ,是 其它 5 种组件集实例 的拥有者 ,对其它 5 种组件集进行协调 与 管理 。 它 由类 TM anager 及 其 子 类 、接 口 IM anager、 ILinkW ork 组成 ;采用门面模式 。 M anager 组件所采用 的门面模式实 际上是双层的 门面模 式 。第 l 层 是 TM anager 与它支持的接 口 Im anager 所组成 的 门面 ,它将客户端应 用程序 中包含最通 用功能 的多个 内部模 块封装到 内部,通 过接 口 IM anager 提供 内部模块互 调的支 持 ,并 隔离 内部模块对 T M anager 的依赖 。第 2 层是 TM anager 的子类 TM anagerA 与接 口 IL inkw ork 所组成 的门面 ,其 中 一 58一 TM anagerA 将不 同应用程序所需要的业务相关的数据与功能 封装 到门面之 内,通过接 口 Ilinkw ork 向系统中的窗体提供系 统级 的功能支持 ,实现 Tm anagerA 对外的过滤 ,并隔离 M D I 子窗体与主窗体对 T M anager 的依赖 ,如 图 2 所示 。 图 2 T M an ager 结构 (2)C ontroller组件集 :主要实现 对运行期 问客 户端 窗体 的 生成与释放进行的监视和管理 。它 由抽象类 TC ontroller及其 具体子类组成 ,采用从抽象类继承 的两层结构 。 (3)Producer组件集 :主要管理客户端各子窗 口的类信息 , 并聚合 类 TForm Factory 实现客户端各子窗 口的生成 。它 由抽 象类 TProducer及其子类 ,以及类 T Form Factory 所组成 。其 中类 TForm Factory 采用参数化 的工厂 方法模 式。 (4)Linkm an 组件集 :主要负责实现 子窗 口之 间的互动与 简 单数据 传输 。它 由抽 象类 TL inkm an 及其 子类 ,以及 类 TC om m and 所组成。其中 TL inkm an 采用 中介者模式 。 (5)G uard 组件集 :主 要实现客 户端 系统功能权 限认证 , 管理用户权 限数据 。它 由抽象类与具体类组成两层 的实现继 承 的结构。 (6)W arehousem an 组件集 :主要实现对远程数据模块(数 据存取 层)的远程调用。它主要使 用 D ata Snap 技术 ,由抽象 类 T W arehousem an 及 其 两 级 子 类 , 以 及 聚 合 TD C O M C onnection、T W ebC onnection、T SO C K C onnection 等 D elphi 组件组成 ,如 图 3。从抽象类 T W arehousem an 继承而来的第 2 级子类实现 对 D C O M 、H T T P、SO C K 3 种连接方式 的封装。 i 口 TW afehouseman 毫四 TCustom"~./arehouseman 目 TW afehousem anD 目 TW afehousem anS 目 TW afehousem an"~./ 、 图 3 W arehou sem a n 类 圈 总之 ,通过双层 门面 T m anager 的封装 ,不仅完成业务逻 辑层 与界 面表 示层 的分 离,而且 使业务逻辑层 中稳 定的部分 (应 用程序运行所需 的、通 用的、 固有 的部分 )与时常变化 的 部分(应 用程序所涉及的、具体的业务相关的部分)实现分离。 4 数据存储层的组成 数据存储 层是在 B orland 的 D ata Snap 技术基础上建立 的 ,位于 系统的服务器 端 ,提供对客户端 的全动态支持 。利 用 M ID A S 中间件创建应 用服务器 的远程数据模块 (Rem ote D ata M odule),客户端应 用系 统中 TclientD ataSet的实例通过 接 口 IappServer 访 问远程数据模块 R D M 中动态生成的数据 集 T SQ LD ataSet 的实例 ,实现远程的数据查询、增加与修改。 因此 ,数据存储层是基于 D ata Snap 技术和使 用 dbE xpress组 维普资讯 http://www.cqvip.com 件的构件 。由于 R D M 的结构本 身就是采 用了门面模式 ,因 此在 本方案 中从 Trem oteD ataM odule 派生 出来 的的远程数据 模 块 Tsystem M odule 也 采 用 了 门 面 模 块 , 客 户 端 通 过 Isystem M odule 访 问数据模块 内部。 对于 远程 数据 模块 R D M ,由于 D ata Snap 的 R D M 支持 对象池(O bject Pooling)技术 ,使 用该技术 能够 实现 R D M 实例 的共享和重用 ,避免 因每个客户首次连接 R D M 时都新建一 个实例而造成重复 的内存分配和 数据库 的连接 ,有 效地提 高 了应用服务器 的性能 。 对于 R D M 的内部,客户端 的 TclientD ataSet 的实例 访问 数据 库 时 需 要 RD M 中 的 一对 T SQ L D ataSet 与 TdataSet Provider 的实例提供数据存取 的支 持。在本方案中选用 当客 户端 的 TclientD ataSet 的实例访问数据库时 ,R D M 动态生成 T SQ LD ataSet与 T dataSetProvider 的实例对为客户端服务。这 样不仅方便服务器端 的调试 ,也使远程数据模块具有 很强 的 适应性和灵活性 。除此 以外 ,本 方案为 R D M 内部 的 T SQ L D ataSet 与 TdataSetProvider 的实例对 的生成与释放也 引入 了 对 象池技术 ,有效地提 高了应 用服 务器 的性能。 本 方案 中 R D M 内 部对 象 池 的 实 现 采 用 了享 元 模 式 (Flyw eight),如 图4。一 方面 ,将一对 TSQ L—D ataSet与 T dataSet Provider 的实例用类 T dataPipe 进行封装(聚合),而 T dataPipe 是 从 T tim er(定 时器 )派 生 而 来 的 。 当 TdataPipe 的 实 例 D ataPipe 被客户端使用时 ,定时器禁止 ;当 D ataPipe 被客户 端释放后并不是马上从内存中释放资源 ,而是首先启动定时 器 ,如果在定时时间到达 以前该 D ataP ipe 一直没有被再次激 活 ,则 在 定 时 时 间到 时 释放 该 D ataPipe。另 一 方面 ,将 T dataPipe 对 象 集 合 的状 态 数 据 封 装 在 R D M 中 , 由 类 T dataPipeF actory 根据当前 T dataPipe 对 象集合 的状态 数据选 择 是 激 活 一 个 已存 在 的 TdataPipe 对 象 还 是 新 建 一 个 TdataPipe 对象 。结合 D ataSnap 所提供 的已有 的对象池 ,本 架构方案给出了一个双对象池的实现。 (上接第 24 页) 3 实验结果及讨论 实验使用 了 l28M B 内存 的 PIII 800M H Z PC ,立体图像 对使用了 Tsukuba 图像对(图 l所示)验证算法的有效性和可行 性,图 4 分别给出了采 用像 素灰度值 和 W alsh 系数特征作为 匹配基元的 SSD 算法得到 的视 差图,都采 用 了 3 ×3 的匹配 窗 M ,最 大视 差为 l5。其中图 4(a)为真实视差 图,图 4(b)为 采用像素灰度值为匹配基元 的SSD 算法得到 的视差 图,图4(c) 为采用 W alsh 系数特征 为匹配基元的 SSD 算法得到的视差 图 ,由实验结果可 以看 出,采用 W alsh 系数作为匹配基元得 到的视差图相对更平滑、精确 。 (a )真实视差 圈 墨 (b)视差图 1 (c)视差 图 2 图 4 实验结果 T R em o teD ataM od ule IA p pS erver / ⋯ ace>。 TSystemMoudJe TFimer f 、 、 、 、 、 、 T D ataP ipeF ac to ry T D ataP ipe a .. . . t . . . t .. r . . . i. . . b. . . .. u . .. . t — e — s .a . . . t . . t . . r . . i . . b.. . . u . . . t— e — s +S u spe ndC o un t:Inte ger + D ata Set:T S Q L D ataS et O peration s + P ip eN o :ln tege r + P rov id er:11D ataS etP rov id er + c reateN ew ( ) + S uspe nded :B oo lem l + D estro y O p erations +G etD ataP ipe( ):In teg er +C reateN ew ( ) 、 \ +De stroy \ +c reateD ataS etP rov id er(⋯ ): Integer 、j + R esnm e + S uspend + _rem ainate 图4 远程j|【据楱块的类图 5 结束语 模式提供 了一个功能行为的基本骨架 ,有助于建立一个 复杂 的架构 。每个模 式提供组件 、作 用以及相互 关系的模板 。 使用这些模板 可以提高 设计的速 度与质量 。理 解并应用现成 的模式使 自己的方案得到一个较高 的起点 ,节省 了大量 的时 间。在实践 中,本研究室开 发的 “高速公路 综合管理系统” 系列产 品大量使用此架构来提高程序建造 的效率与质量 。 参 考文献 I 刘 炜,房鼎 益.陈 晓江.面向模式 的分布 式软件构 架可视 化建 模⋯ .计算机工程,2005 ,3 I(3 ):102一104 . 2 刘 艺.D elphi 模式编程[M ].北京 :机械工业出版社,2004 . 3 祝建 中.基于 M ID A S 的多层分布式系统负载平衡和容错研 究⋯ . 计算机工程,2003 ,29 (2):240—242. 4 陈文丽,周 景.用 M ID A S 开发多层 分布 式应用系统⋯ .科技情 报开发与经济,2005,1 5(I):263—265. 由图 3 可 以看到 ,l~7 阶系数 中的任意一阶 W alsh 系数 都 可以作为 匹配基元 ,另外 ,W alsh 系数的正负变化产生可 以产 生零交叉点 ,这也是一个很重 要的特征 ,可以作 为特征 匹配 的一个 匹配基元 ,也可 以作为约束条件应用到 匹配中, 这也是 以后要研 究的问题之一 。 参考 文献 I 章毓晋.图像工程[M ].北京 :清华大学 出版社,1999 . 2 A h m e d N , R a o K R , O ~ h o g o n al T ra nsfo rm s for D ig ita l S ig n al P rocessing[M ].N ew Y ork :Springer—verlag ,19 75. 3 G onzalez R C .W intz P .D ig ital Im age Processing (2 Ed itio n)[M ]. M a ssa ch u se tts:A d d iso n W e sley ,19 8 7 . 4 B eaucham p K C .A pplication of W alsh and R elated F unctions[M ]. O rla n d o :A c ad e m ic P re ss,19 8 7 . 5 M artin R R ,A nguh M M .Q uadtrees,T ran sform s and Im age C oding [J].C om puter G raphics F oru m ,N oa h—holland,I99 1,1O (2): 9 1—9 6 维普资讯 http://www.cqvip.com
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf