信息平台系统中的总线设计模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 引言
本课题来源于河海大学与水利部黄河水利管理委员会合作的科研项目——“数字黄河” 信息服务平台的研究。“数字黄河” 应用服务平台是“数字黄河”工程的核心,百度文库支撑应用系 统开发与运行的重要基础设施,也是信息及资源共享的平台。
在黄委会已经建成的大量系统中,具有网络环境封闭化、数据库系统孤立化、解决问题 单一化、服务对象局部化等特点。由于这些特点的存在,导致了三个方面主要问题:
2.1.1 模式分类 最经典设计模式依据其目的可分为创建型( Creational )、结构型(Structural)和行为型
(Behavioral)三种[1]。 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那
些对象。创建型模式包括: z 抽象工厂模式(Abstract Factory) z 生成器(Builder) z 工厂方法(Factory Method) z 原型(Prototype) z 单例(Singleton) 结构型模式涉及到如何组合类和对象以获得更大的结构。结构型模式采用继承机制来组
依赖倒转原则(Dependency Inversion Principle,简称 DIP)指的是: 高层的模块不应该依赖于低层次的模块,二者都应该依赖于抽象。 抽象不应该依赖于细节,细节应该依赖于抽象。 在传统的过程性系统中,高层的模块依赖于低层次的模块,抽象层次依赖于具体层次。 这样导致了底层的任何改变都会影响到上层。这样的软件系统没有可维护性而言。抽象层次 应该不依赖于具体的实现细节,这样才能保证系统的可复用性和可维护性,这也就是所谓的 倒转。依赖倒转原则也可以表述为:对接口编程,而不是对实现编程。 z 合成复用原则(CRP) [4] 合成是通过获得对其他对象的引用而在运行时刻动态定义的。优先使用对象合成有助于 保持每个类被封装,并被集中在单个任务上。另一方面,基于对象合成的设计会有更多的对 象(而有较少的类),系统的行为将依赖于对象间的关系而不是被定义在某个类中。
2.2.2 面向对象的分析与设计 面向对象分析的目的是对客观世界的系统进行建模[1]。
面向对象的分析的第一步是:陈述需求。其次是建立对象模型,包括:确定类,准备数据字 典,确定关联,确定属性,完善对象模型。第三步是建立动态模型,包含准备脚本,确定事 件,准备事件跟踪表,构造状态图。最后是功能建模和确定操作。
合接口或实现。结构型模式包括: z 适配器(Adapter) z 桥接(Bridge) z 组合(Composite) z 装饰(Decorator) z 外观(Façade) z 享元(Flyweight) z 代理(Proxy) 行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和 实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定 义的内容作为自己的内容,并加入若干新的内容。 4、多态性
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不 同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
2.2.1 面向对象的基本特征 1、对象唯一性
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命 期中,它的标识都不改变,不同的对象不能有相同的标识。 2、封装性
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用 户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。 3、继承性
1、对扩展是开放的(Open for extension)。即模块的行为是可以扩展的。当应用的需求改 变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。
2、对更改是封闭的(Closed for modification)。即对模块行为进行扩展时,不必改动模块 的源代码或者二进制代码。 z 里氏替换原则(LSP) [2]
它们之间的通信模式。行为模式包括: z 责任链(Chain Of Responsibility) z 命令(Command) z 解释器(Interpreter) z 迭代器(Iterator)
-2-
http://www.paper.edu.cn
z 中介者(Mediator) z 备忘录(Memento) z 观察者(Observer) z 状态(State) z 策略(Strategy) z 模板方法(Template Method) z 访问者(Visitor)
信息资源缺乏完整性; 信息资源具有高度的独立性,信息资源之间交换信息困难; 应用基础薄弱,子信息系统功能单一,且存在重复开发; 针对存在的问题,在本阶段的研究中,引入了 SOA 的架构。SOA(Service Oriented Architecture)称为面向服务的软件架构。它与很多已有的软件技术比如面向对象技术,J2EE 架构,是互补的而非互斥的。它们分别面向不同的应用场景、不同应用层次、不同系统粒度, 用来满足不同的需求。它最主要的应用场合在于解决在 Internet 环境下的不同商业应用之间 的业务集成问题。以下这些相关因素通常会建议企业采用面向服务的体系结构: z 具有大量可利用的遗产系统 z 需要降低集成和管理的复杂性 z 需要更快的响应和应用速度 z 减少成本和增加复用 z 构建可扩展的系统 基于 SOA 的以上特点,结合黄委会的实际情况,在对遗产系统低侵入性的前提下,保 留正常运作的遗产系统,分时增量的包装遗产系统称为 SOA 中的服务,减少副本服务的发 布,统一服务发布中的数据标准,规范服务的过程,可逐渐从原有的信息缺失、集成困难、 应用基础薄弱的状态,向信息完整丰富、易于集成、具有丰富的应用基础的方向逐步转变。 软件设计有三个层次:模式、方法、框架。模式是对于特定背景下的特定问题的解决方 案;方法强调如何正确、有效地解决问题;框架则是模式与方法的集合,是整个软件的骨架, 是应用系统的核心。软件的健壮性、可扩展性、安全性、鲁棒性等一系列特点,主要由应用 系统的框架决定。软件的设计方法提供了对于相同问题在不同条件下的多种解决方案,由于 设计具体软件实现,因此变化丰富,灵活多样,是整个软件行业变化最快的部分。模式是整 个软件设计中变化最小,变化最慢的部分。GoF 提出在 95 年归纳总结的 28 条软件设计模式,
AO 是消除程序非功能性冗余的一种方法。造成程序代码非功能性冗余的原因在于传统 编程技术中,软件系统中实现非业务功能的代码无法模块化,散布在实现业务功能的代码中。
2.4 面向服务的架构
SOA 体系结构形式旨在提供企业业务解决方案,这些业务解决方案可以 按需扩展或改
-4-
http://www.paper.edu.cn
2.1.2 模式的组合原则 设计模式需要遵循的原则主要有四条:开放——封闭原则(OCP)、里氏替换原则(LSP)、
依赖倒转原则(DIP)、合成复用原则(CRP)。 z 开放——封闭原则(OCP) [2]
封闭原则(The Open-Closed Principle,简称 OCP),是指软件实体应该对扩展开放,对修 改则是封闭的。开放——封闭原则包含 2 个方面内容:
面向对象设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现 方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程。一般面向对象 的设计需要遵循以下准则:
模块化 抽象 信息隐藏 低耦合 高内聚
2.3 面向切面的思想
面向切面编程是面向对象编程的延续,是 Aspect Oriented Programming 的缩写,意思是 面向方面编程。面向切面提供了另外一种思考软件结构的角度,弥补了面向对象的不足。现 代软件系统分为多个模块,每个模块都负责处理一项重要的功能,但是每个模块都需要一些 相似的辅助功能。这就是一种交叉业务,而这种“交叉”非常适合用“切面”来解决。
变。SOA 解决方案由可重用的服务组成,带有定义良好且符合标准的已发布接口。SOA 提 供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们的平台或语言。
2.4.1 面向服务的分析与设计 1、服务标识和定义
自顶向下的业务级建模技术可以为 SOA 建模活动提供起点。但是正如我们在前面提到 的,SOA 实现很少是在全新的项目中开始的;创建 SOA 解决方案几乎总需要涉及集成现 有的遗留系统,方法是将它们分解成服务、操作、业务流程和业务规则 2、直接和间接业务分析
2. 设计模式与软件设计思想
2.1 经典设计模式
设计模式的思想最初来源于建筑领域。1995 年,Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides(四人被昵称为 Gang of Four GoF )发表了“设计模式:可复用面向对象 软件的基础”一书,这是在面向对象的编程中使用模式化方法研究的开创性著作,对软件设 计模式的发展产生了巨大的影响。
http://www.paper.edu.cn
信息平台系统中的总线设计模式
于昊
河海大学计算机学院,南京 (210000)
E-mail:tohaoyu@163.com
摘 要:本文从“数字黄河”信息服务平台的项目出发,给出了一种用于基于 SOA 架构设及 信息服务平台的基本思路。文章共四部分,第一部分引言介绍了项目的背景以及设计的基本 要求;第二部分设计模式与软件设计思想介绍了项目的技术背景,已经在面对问题时不同的 设计分析过程,第三部分总线模式提出了一种用语法语义与语境描述一个服务的思路,并且 将语境简化成时序,更加有利于实际操作,第四部分总结了总线模式的优点与不足以及适用 范围。 关键词:设计模式,面向服务,平台
2.2 面向对象的思想
对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、 计划或事件。 具有相同或相似性质的对象的抽象就是类。
面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技
-3-
http://www.paper.edu.cn
术。它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定 性。
本文提出的总线模式定义了抽象的构件、服务和他们之间的关系,并且降低构件之间的 耦合度,使得不同的构件适合分时、分布、多团队开发,模式没有涉及具体实现方法,因此 在主要关系不变的情况下可以不断升级、扩展、提高效率,同时模式停留在逻辑层次上,与 选取何种软件产品无关,因此可以长期指导行业信息服务平台的设计开发。
通过项目相关人员的会谈和自顶向下的业务级建模和直接需求分析是容易理解且非常 合适的标识候选服务的方法。 3、域分解
将业务划分成为若干个相关的领域问题。 4、服务粒度
选择正确的抽象级别是服务建模的一个关键问题。进行粗粒度建模的建议有点过于简单 化了。应该在不损失或损害相关性、一致性和完整性的情况下尽可能地进行粗粒度建模。在 任何 SOA 中,都有细粒度服务抽象的空间(假定有业务要求的话)。
-1-
http://www.paper.edu.cn
在过去的十几年中不断影响着软件的设计,至今为止的许多著名的软件中,都能找到 28 条 设计模式的影子,比如著名的 Microsoft Windows 系列,Sun JAVA,J2EE,.COM,VS.Net 等等。对于一个建设周期长、难度大、复杂度高的水利行业平台系统来说,一个适用于行业 应用背景下的平台软件设计模式对指导平台系统的长期开发是非常必要的。
Liskov 于 1987 年提出了一个关于继承的原则:“继承必须确保超类所拥有的性质在子类 中仍然成立。”它表述如下:如果对每一个类型为 S 的对象 o1,都存在类型为 T 的对象 o2, 使得以 T 定义的所有程序 P 中,在所有对象 o1 都换成 o2 时,程序 P 的行为功能没有变化, 那么类型 S 是 T 的子类型。也就是说,子类(subtype)必须能够替换掉他们的基类(base type)。 该原则称为里氏替换原则(Liskov Substitution Principle,简称 LSP)。 z 依赖倒转原则(DIP) [3]
相关文档
最新文档