一、构件的定义

定义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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/97996.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/97996.shtml
英文地址,请注明出处:http://en.pswp.cn/web/97996.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js 文件上传中文文件名乱码问题,为什么只有Node会有乱码问题,其他后端框架少见?

问题现象当用户上传包含中文字符的文件时,在服务器端获取到的文件名可能变成类似 ‹•–‡.txt 这样的乱码,而不是预期的中文文件名。为什么只有Node会乱码?很多后端框架(如 Java Spring Boot、Python Django、PHP Laravel&#x…

学习英语音标 (从汉语角度看英语音标发音差异)

仅供参考, 跟着教学视频看不懂时再来看以下引导 以下只写容易出错的音标 发音视频: https://www.jiwake.com/yinbiaofayin/ 音标规则单词ɜː类似汉语e, 饿~urgeə类似汉语e, 饿goɔː类似汉语o, 哦~walkɒ类似汉语o, 哦washɪ/iː/的短语, 不止发声短,舌头不用隆起itʃ类似汉…

论文笔记(九十一)GWM: Towards Scalable Gaussian World Models for Robotic Manipulation

GWM: Towards Scalable Gaussian World Models for Robotic Manipulation文章概括摘要1. 引言2. 相关工作3. 高斯世界模型(Gaussian World Model)3.1. 世界状态编码(World State Encoding)3.2. 基于扩散的动态建模(Dif…

apache phoenix sql 命令大全详解

这是一份非常详细的 Apache Phoenix SQL 命令大全和详解。Phoenix 作为 HBase 上的 SQL 层,其语法大部分与标准 SQL 兼容,但也有许多针对 HBase 的特性扩展。核心概念 在开始之前,请记住 Phoenix 的两个核心概念: 主键&#xff08…

【代码讲解】SO-ARM100 双场景演示:手柄驱动 Mujoco 仿真 + 实机控制

视频讲解: 【代码讲解】SO-ARM100 双场景演示:手柄驱动 Mujoco 仿真 实机控制今天介绍下使用使用北通手柄通过控制 Mujoco 中的 SO-ARM100 机械臂,然后将关节数据通过 zmq 通信转发控制实际机械臂。 本期中会涉及如下点,需要注意…

「数据获取」《中国教育经费统计年鉴》(1997-2024)

01、数据简介《中国教育经费统计年鉴》作为我国教育经费领域的核心统计典籍,全面系统地呈现了全国各级各类教育经费的来源构成、分配流向与使用成效。其统计范围覆盖学前教育、基础教育、中等职业教育、高等教育及特殊教育等全学段,数据维度涵盖财政性教…

使用 Logspout 收集所有容器的

1.将所有容器的输出路由到远程 rsyslog 服务器1.修改 rsyslog 配置文件/etc/rsyslog.conf, 从中找到 “# Provides UDP sysilog recepion"语句。并将该处的以下两行配置代码行首的“#”字符删除(取消注释)[roothost1 ~]# vi /etc/rsyslog.conf [roo…

【智能化解决方案】基于多目标优化检索增强生成的智能行程规划方案

📝 基于多目标优化的智能行程规划方案 1 用户需求分析与矩阵构建 1.1 核心用户信息提取 根据用户提供的年龄、出发地、目的地、出行时间等基本信息,我们首先构建一个用户特征向量: U {Age, Origin, Destination, TravelDate, Duration, Budg…

软件研发的演变

软件研发从一门手工作坊式的艺术,逐步演进为一门系统化、工程化、智能化的现代学科。其发展历程不仅体现了技术的飞跃,更反映了方法论、协作模式和思维方式的深刻变革。一、发展演变历程软件研发的演变可以大致划分为以下几个阶段:1. 软件作坊…

「日拱一码」091 机器学习——集成学习

目录 集成学习介绍 1. 核心思想 2. 为什么有效? 3. 主要流派与方法 A. 并行方法:Bagging (Bootstrap Aggregating) B. 串行方法:Boosting C. 堆叠法:Stacking 代码示例 Bagging 的代表 —— 随机森林 (Random Forest) 集成…

vscode实现第三方包的使用,cmake结合vcpkg(跨平台)

要使用cmake和vcpkg组织一个完整的现代cpp项目,一般来说需要三个文件vcpkg.json描述第三方依赖项//vcpkg.json {"dependencies": ["fmt"] }//安装,在vcpkg.json目录执行 vcpkg installCMakePresets.json定义项目的本质属性(What&…

DevExpress中Word Processing Document API学习记录

文章目录1 文档结构划分2 文档操作基础2.1 Positions and Ranges2.2 Secitions2.3 Paragraphs2.4 Tables2.5 Lists2.6 Hyperlinks and Bookmarks2.7 Comments2.8 Headers and Footers2.9 Shapes and Pictures2.10 Watermarks2.11 Charts2.12 OLE Objects2.13 ActiveX Controls2…

Roo Code 的差异_快速编辑功能

什么是差异编辑? 简单来说,差异编辑就像是一位细心的装修师傅:他不会把整个房子拆掉重盖,而是精准地只修补需要改动的部分。Roo Code 的这项功能默认开启,它通过比对代码差异(diff)来实施修改&a…

【Axure高保真原型】标签树分类查询案例

今天和大家分享标签树分类查询案例的原型模版,效果包括: 树形分类——点击左侧树形里的箭头,可以展开或收起子级选项; 查询表格——点击标签树里的选项,如果是末级选项,可以筛选右侧表格用户标签&#xf…

容器化部署项目05

一、工作原理 镜像:容器的模板,包括容器运行时所需的数据 容器:运行中的进程,依赖镜像运行,镜像的具现化 镜像你可以把它看成Python中的类,而容器可以看做是类的实例化对象。 一个类可以有多个对象&#xf…

微信小程序 工作日历 周计划日报 修改等提报和状态展示功能,支持h5,Android ,ios,基于uniapp,适配vue2和vue3

Work-calendar 介绍 (底部附链接) 基于uni-calendar做的定制化开发,主要功能为工作日历展示和提报组件 ​ 1.支持周计划日报状态展示且可配置 ​ 2.支持农历展示配置,回到当日,月份切换 ​ 3.日历,周报…

openharmony 鸿蒙 下 利用蓝牙API(a2dp模块-高级音频,ble模块-低功耗蓝牙等)完成对蓝牙音响的控制(蓝牙广播)

1.首先是登录页面(利用webapi 和本地数据存储完成登陆操作) 2.添加设备(利用ble.startBLEScan 和 ble.on("BLEDeviceFind", onReceiveEvent);完成蓝牙扫描与显示) 3.蓝牙ble连接(利用ble.createGattClientDe…

17、逻辑回归与分类评估 - 从连续到离散的智能判断

学习目标:理解分类问题的本质和评估方法,掌握逻辑回归的数学原理和概率解释,学会二分类和多分类问题的处理方法,熟练使用分类评估指标,理解过拟合和正则化的基本概念。 > 从第16章到第17章:从预测数值到判断类别 在第16章中,我们学习了线性回归,解决的是预测连续数…

自动化脚本的核心引擎

自动化脚本作为现代软件开发与运维的重要工具,其核心引擎承担着解析指令、调度任务和执行逻辑的关键职能。这种引擎本质上是一个轻量级的运行时环境,通过预定义的规则集将人类可读的脚本语言转化为机器可执行的原子操作。在持续集成/持续交付&#xff08…

【Vue2 ✨】Vue2 入门之旅 · 进阶篇(九):Vue2 性能优化

在前几篇文章中,我们学习了 Vuex 的内部机制以及 Vue Router 的工作原理。本篇将深入探讨 Vue2 性能优化,帮助你掌握在开发中提升 Vue 应用性能的方法和技巧。 目录 性能优化的意义响应式系统优化虚拟 DOM 与渲染优化组件懒加载与按需渲染事件与计算属性…