常见风格分类
- 数据流风格:批处理和管道/过滤器。
- 调用/返回风格:主程序/子程序、层次结构和C/S。
- 面向对象风格。
- 独立部件风格:进程通信和事件驱动。
- 虚拟机风格:解释器和基于规则的系统。
- 数据共享风格:数据库系统和黑板系统。
管道/过滤器风格
主要包括过滤器和管道两种元素。在这种结构中,构件被称为过滤器,负责对数据进行加工处理。每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上。数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是管道。
优点:
- 简单性。
- 支持复用。
- 系统具有可扩展性和可进化型。
- 系统并发性(每个过滤器可以独立运行,不同子任务可以并行执行,提高效率)。
- 便于系统分析。
缺点: - 系统处理工程是批处理方式。
- 不适合用来设计交互式应用系统。
- 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据。
- 难以进行错误处理。
面向对象风格
在面向对象体系结构中,软件工程的模块化、信息隐藏、抽象和重用原则得到了充分的体现。在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中。在这种风格中,对象是构件,也成为抽象数据类型的实例。对象与对象之间,通过函数调用和过程调用来进行交互。
优点:
- 一个对象对外隐藏了自己的详细信息
- 对象将数据和操作封装在一起
- 继承和封装方法为对象服用提供了技术支持
缺点: - 如果一个对象要调用另一个对象,则必须知道它的标识和名称
- 会产生连锁反应
事件驱动风格
事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行。
事件驱动体系结构的基本思想是:系统对外部的行为表现可以通过它对事件的处理来实现。在这种体系结构中,构件不再直接调用过程,而是声明事件。系统其他构件的过程可以在这些事件中进行注册。当触发一个事件的时候,系统会自动调用这个事件中注册的所有过程。因此,触发一个事件会引起其他构件的过程调用。
优点:
- 事件声明者不需要知道哪些构件会响应事
- 提高了软件复用能力
- 便于系统升级
缺点: - 构件放弃了对计算的控制权,完全由系统来决定
- 存在数据·传输问题
层次风格
在分层风格中,系统将划分为一个层次结构。
每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏。
分层有助于将复杂系统划分为独立的模块,从而简化程序的设计和实现。
通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面对特定问题,较低层具有一般性。
每层都为上层提供服务,同时又利用了下层的逻辑功能。在分层体系结构中,每一层只对相邻层可见。层次之间的连接件是协议和过程调用。用以实现各层之间的交互。
优点:
- 设计者可以将系统分解为一个增量的步骤序列从而完成复杂的业务逻辑。
- 每一层之多和相邻的上下两层进行交互。
- 只要给相邻层提供相同的接口。
缺点: - 并非所有系统都能够按照层次来进行划分。
- 很难找到一种合适和正确的层次划分方法。
- 在传输数据是,需要经过多个层次。
- 多层结构难以调试。
C2风格
C2结构是一个层次网络,包括构件和连接件两种软件元素。构件和连接键都是包含顶部和底部的软件元素。构件和构件之间只能通过连接件进行连接,而连接件之间则可以直接进行连接。构件的顶部、底部分别与连接件的底部、顶部连接,连接件的顶部、底部也分别与连接件的底部、顶部连接。(类似总线的东西)
在C2体系结构中,构件之间的所有通信必须使用消息传递机制来实现。构件之间所有传递的信息可以分为两种,一种是向上层构件发出服务请求的请求消息,另一种是向下层构件发出指示状态变化的通知消息。连接件负责消息的过滤、路由、广播、通信和相关处理。
优点:
- 可以使用任何编程语言来开发构件,构件重用和替换比较容易实现
- 具有一定的扩展能力,可以有多种不同粒度的构件
- 构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系
- 具有良好的适应性
- 在C2体系结构中,可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构
缺点: - 构件和构件之间不允许直接相连
- 与某一个连接件相关联的构件和连接件的数目没有限制
仓库风格
在这种风格中,有两种不同类型的软件元素:一种是中央数据单元,也成为资源库,用于表示系统的当前状态;另一种是相互依赖的构件组,这些构件可以对中央数据单元实施操作。中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础
根据所使用的控制策略不同,数据共享体系结构可以分为两种类型,一种是传统的数据库,另一种是黑板。
- 如果由输入流中的事件来驱动系统进行信息处理,把执行结构存储到中央数据单元,则这个系统就是数据库应用系统。
- 如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统。
黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源。黑板常用于信号处理,如语音和模式识别,同时在自然语言处理领域中也有广泛的应用,如机器翻译和句法分析。
优点: - 便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的及通过何种途径来提供
- 便于将构件作为知识源添加到系统中来
缺点: - 对共享数据结构,不同知识源要达成一致
- 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度
C/S 风格
优点:
- 客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理。
- 构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置。
- 客户机侧重数据的显示和分析,服务器则注重数据的管理。
- 构件之间是彼此独立和充分隔离的。
- 将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机,降低了系统的整体开销。
缺点: - 开发成本较高。
- 在开发C/S结构系统时,大部分工作都都集中在客户机程序的设计上,增加了设计的复杂度。
- 信息内容和形式单一。
- 如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用。
- 两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet。
- 数据安全性不高。
B/S 风格
B/S结构是三层C/S体系结构的一种实现方式,主要包括浏览器,Web服务器和数据库服务器。B/S结构主要利用不断成熟的WWW技术,结合浏览器的多脚本语言,采用通用浏览器来实现原来需要复杂的专用软件才能实现的强大功能,节约了开发成本。
B/S体系结构的核心是Web服务器,可以将应用程序以网页的形式存放在Web服务器上。
当用户运行某个应用程序时,只需要在可以断的浏览器中输入响应的 URL,向 Web 服务器提出 HTTP 请求。
当Web 服务器接收 HTTP 请求之后,会调用相关的应用程序(Servlets),同时向数据库服务器发送数据操作请求。
数据库服务器对数据操作请求进行响应,将结果返回给Web服务器的应用程序。
Web服务器应用程序执行业务处理逻辑,利用 HTML 来封装操作结果,通过浏览器呈现给用户。在B/S结构中,数据请求、王爷生成、数据库访问和应用程序执行全部由Web 服务器来完成。
优点:
- 客户端只需要安装浏览器,操作简单。
- 运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。
- 开发成本比较低,只需要维护Web服务器程序和中心数据库。
缺点: - 个性化程度比较低,所有客户端程序的功能都是一样的。
- 客户端数据处理能力比较差。
- 在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理。
- B/S体系结构的可扩展性比较差,系统安全性难以保障。
- B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构。
MVC 风格
优点:
- 多个视图与一个模型相对应
- 具有良好的移植性。
- 系统被分割为三个独立的部分,当功能发生变化时,改变其中的一个部分就能够满足要求。
缺点: - 增加了系统设计和运行复杂性。
- 视图与控制器连接过于紧密,妨碍两者的独立复用。
- 视图访问模型的效率比较低。