一、构件的定义
定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。
定义2:构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。
定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。
模块的特性(结构化开发的产物)=> 对象的特性(1、一个实例单元,具有唯一的标志;2、可能具有状态,此状态外部可见;3、封装了自己的状态和行为。) => 构件的特性(独立部署单元;1、2、作为第三方的组装单元;3、没有(外部的)可见状态。)
构件系统架构特性
- 构件系统体系结构由一组平台决策、一组构件框架和构件框架之间的互操作设计组成。
- 构件框架是一种专用的体系结构(通常围绕一些关键的机制),同时,也是一组固定地 作用于构件层次机制的策略。
- 概念框架的互操作设计包括系统体系结构连接的所有框架间的互操作的规则。构件是一组通常需要同时部署的原子构件。
- 构件和原子构件之间的区别在于,大多数原子构件永远都不会被单独部署,尽管它们可以被单独部署。
- 一个原子构件是一个模块和一组资源。
- 模块是一组类和可能的非面向对象的结构体,比如过程或者函数。
- 资源是一个类型化的项的固定集合。
- 资源这个概念可以包含代码资源,进而包含模块。问题在于除了编译器编译一个模块或包生成的资源外,还可能存在其他的资源。在“纯对象”的方法中,资源是外部化的不可改变的对象–不可改变是因为构件没有持久化的标志,而且复制不能被区分。
二、中间件
中间件是一类构件
中间件是一类系统软件
简化结构、屏蔽差异、利于复用
ESB 企业服务总线也属于一种中间件。
采用中间件技术的优点
(1)面向需求。即设计师集中精力于业务逻辑本身。
(2)业务的分隔和包容性。应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式。
(3)设计与实现隔离。构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不必关心其内部实现,这是设计与实现分离的关键。
(4)隔离复杂的系统资源。架构很重要的一个功能就是将系统资源与应用构件隔离,这是保证构件可复用甚至“即插即用”的基础,与中间件的意图也是一致的。
(5)符合标准的交互模型。中间件则实现了架构的模型,实现了标准的协议。
(6)软件复用。中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案。
(7)提供对应用构件的管理。基于中间件的软件可以方便地进行管理,因为构件总可以通过标识机制进行划分。
例如JDBC。
三、构件的复用
流程:
1、检索与提取构件 (1、基于关键守的检索特点: 树形或有向无回路图结构,2、刻面检索法:特点:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征
例如:分多个刻面:1、应用领域使用环境、功能; 3、超文本检索法 特点:按照人类的联想思维方式任意跳转到包含相关概念或构件的文档)
2、理解与评价构件 (1、要复用构件,准确地理解构件至关重要。特别是对构件修改使用时。2、为达到目的,必须要求构件的开发过程遵循公共标准。3、一般构件库的文档中全面而准确地说明以下内容:构件的功能与行为、相关的领域知识、可适应性约束条件与例外情形、可以预见的修改部分及修改方法。)
3、修改构件 (1、理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求。2、为了减少构件修改的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化和参数化。这样,复用者即可通过对实参的选取来调整构件的功能或行为。如果这种调整仍不足以使构件适用于新系统,复用者就必须借助设计信息和文档来修改构件。3、构件库中若无可修改使用的构件,则按新需求开发构件,并存入构件库。)
4、组装构件 (组装的三种方式
1、基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来。2、基于数据的组装:仍然是传统的子程序调用与参数传递。但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如,Jackson系统开发方法。3、面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用否则,必须以基类为父类,生成相应的子类,以满足新系统的需求。
构件组装失配问题
1、由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配;
2、由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配;
3、由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。)
例子:
软件重用可以分为垂直式重用和水平式重用,()是一种典型的水平式重用。
A 医学词汇表
B标准函数库
C 电子商务标准
D 网银支付接口
参考答案:B
构件组装是指将库中的构件经适当修改后相互连接构成新的目标软件。()不属于构件组装技术。
A 基于功能的构件组装技术
B 基于数据的构件组装技术
C基于实现的构件组装技术
D 面向对象的构件组装技术
参考答案:C
四、构件的分类
从构件的外部形态来看,构件可分为5类:
(1)独立而成熟的构件。已在实际运行环境多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。
(2)有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、霍盖等影响,在使用时需要加以测试。例如,各种面向对象程序设计语言中的基础类库等。
(3)适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。
(4)装配的构件。装配(assemble)的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(gluecode)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。
(5)可修改的构件。对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件的版本替换。这种构件在应用系统开发中使用得比较多。
五、中间件的分类
中间件分类
通信处理(消息)中间件 (特点:可靠、高效、实时跨平台通信,eLink,MQSeries)
事务处理(交易)中间件 (事务分发,负载均衡,Tuxedo)
数据存取管理中间件 (为虚拟缓冲存取、格式转换、解压等带来方便)
Web服务器中间件 (有负载均衡、缓存、安全性等功能)
安全中间件 (如:加密,认证等)
跨平台和架构的中间件 (解决跨平台问题,如:CORBA)
专用平台中间件 (为特定应用领域设计领域参考模式,建立相应架构)
网络中间件 (功能包括网管、接入、网络测试、虚拟社区和虚拟缓冲等)
六、构件标准
三大构件标准
- COBRA Common Object Request Broker Architecture,公共对象请求代理体系结构)是由对象管理组织(OMG)制定的一种分布式对象计算标准,旨在实现不同编程语言、操作系统和硬件平台之间软件组件的无缝通信与协作
(伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求。对象适配器(0bject Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能。对象请求代理(ObjectRequest Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制。) - COM (Component Object Model,组件对象模型)是微软提出的一套二进制软件组件标准,用于实现跨语言、跨进程的软件组件交互。)
- EJB (会话Bean: 实现业务逻辑,负责完成服务端与客户端的交互
实体Bean: 实现O/R映射,简化数据库开发工作
消息驱动Bean: 处理并发与异常访问)
例子:
CORBA服务端构件模型中,()是CORBA对象的真正实现,负责完成客户端请求。
A伺服对象(Servant)
B对象适配器(Object Adapter)
C对象请求代理(Obiect Request Broker)
D适配器激活器(AdapterActivator)
参考答案:A