Skip to content

10.构件与中间件

构件

软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意的组装 构件是某个系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能 构件是一个独立发布的功能部分,可以通过其接口访问它的服务

构件是可独立部署的软件单元 构件没有(外部的)可见状态,但是可以通过容器管理滋生对外的可见状态

复用

检索与提取构件

  • 基于关键字检索:在 Visio 中,每个图例是一个构件
  • 刻面检索法:用多种方式划分(应用领域、使用环境、功能...)
  • 超文本检索法:了解即可

理解与评价构件

  • 要复用构件,准确的理解构件至关重要。特别是对构件修改使用时
  • 为达到目的,必须要求构件的开发过程遵循公共标准
  • 构件库文档中要全面、准确的说明:构件的功能和行为、相关的领域知识、可适应性约束条件与例外情况、可以预见的修改部分及修改方法

修改构件

  • 理想状态是直接复用构件库中现成的构件,但大多数情况下都要修改构件适应新需求
  • 为了减少构件修改的工作量,开发人员要尽量使构件的功能、行为和接口设计更加抽象化、通用化和参数化。复用者可以通过对实参的选取来调整构件的功能或行为。如果还是不满足,复用者要借助设计信息和文档来修改构件。
  • 如果构件库中没有可修改使用的构件,则按新需求开发构件,并存入构件库。

组装构件

三种方式
  • 基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来
  • 基于数据的组装:仍然是传统的子程序调用与参数传递。但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法
  • 面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用。否则,必须以基类为父类,生成相应的子类,以满足新系统的需求
构件组装失配的问题
  • 由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配 说人话:构件自身的设计和实现出问题了,数据格式不兼容、接口不兼容、假设不一致、资源管理冲突等
  • 由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配 说人话:构件间的通信、协调、转换出了问题,连接协议不匹配、数据转换错误、寻址和绑定问题等
  • 由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出失配的问题

构件的分类

外部形态来看(外观,构件展示的部分)

  • 独立而成熟的构件:已在实际运行环境多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。 例如:数据库管理系统和操作系统等
  • 有限制的构件:有限制构件提供了接口,指出了使用的前提和条件,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要记忆测试。例如:各种面向对象程序设计语言中的基础类库。
  • 适应性构件:进行了包装或使用了接口技术。把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改的使用在各种环境中。例如 ACTIVEX
  • 装配的构件:在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码就可以连接使用。目前一些软件商提供的大多数软件产品都属于这一类。
  • 可修改的构件:对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件版本的替换。这种构件在应用系统开发中使用的比较多

构件的标准

有标准才好复用

  • 会话 Bean:实现业务逻辑,负责完成客户端与服务端的交互
  • 实体 Bean:实现 O/R 映射,简化数据库开发工作
  • 消息驱动 Bean:处理并发与异常访问

CORBA

解决了远程通信、调用的问题(客户端调用远程服务器对象)

  • 伺服对象(在服务器上):CORBA 真正的实现,负责完成客户端的请求
  • 对象适配器(在服务端):用于屏蔽 ORB 内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用 ORB 内部的某些功能
  • 对象请求代理:解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制。

J2EE【EJB】

DNA2000

中间件

是构件的一种

中间件是一类系统软件(为别的软件服务,应用软件为人服务)

JDBC是一种中间件

优点

  • 面向需求:设计师集中精力于业务逻辑本身
  • 业务的分隔和包容性:应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式
  • 设计与实现的隔离:构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不必关心其内部的实现,这是设计与实现分离的关键
  • 隔离复杂的系统资源:架构很重要的一个功能就是将系统资源和应用构件隔离,这是保证构件可复用甚至“即插即用”的基础,与中间件的意图也是一致的。
  • 符合标准的交互模型:中间件则实现了架构的模型,实现了标准的协议。
  • 软件复用:中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案
  • 提供对应用构件的管理:基于中间件的软件可以方便的进行管理,因为构件总可以通过标识机制进行划分。

分类

  • 通信处理(消息)中间件 - 多个平台通信:可靠、高效、实时跨平台通信,elink,MQSeries
  • 事务处理(交易)中间件 - 集群(多个服务器):事务分发,负载均衡,Tuxedo
  • 数据存区管理中间件:为虚拟缓冲存取、格式转换、解压等带来方便
  • WEB 服务器中间件 - 接收 WEB 请求、传送:有负载均衡、缓存、安全性等功能
  • 安全中间件:加密、认证等
  • 跨平台和架构的中间件:解决跨平台问题,如 CORBA
  • 专用平台中间件:为特定应用领域设计领域参考模式,建立相应架构
  • 网络中间件:功能包括网管、接入、网络测试、虚拟社区和虚拟缓冲等

KESHAOYE-知识星球 V20250523200726