个人总结,仅供参考,欢迎加好友一起讨论
软件架构 = 软件体系结构
架构设计就是需求分配,即将满足需求的职责分配到组件上。
架构的本质
架构的作用
例题1:
例题1解析与答案:
答案:D
解析:软件架构与用户对系统的功能性需求没有直接的对应关系
Kruchten在1995年提出了一个“4+1”的视图模型。“4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件架构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件架构的全部内容。
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。对于不同的软件系统来说,侧重的角度也有所不同。例如,对于管理信息系统来说,比较侧重于从逻辑视图和开发视图来描述系统,而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统。
例题2:
例题2解析与答案:
答案:A D C
解析:略
五大架构风格 | 子风格 |
---|---|
数据流风格 | 批处理、管道-过滤器 |
调用/返回风格 | 主程序/子程序、面向对象、层次结构 |
独立构件风格 | 进程通信、事件驱动系统(隐式调用) |
虚拟机风格 | 解释器、规则系统 |
仓库风格 | 数据库系统、黑板系统、超文本系统 |
批处理序列 |
---|
批处理风格的每一步处理都是独立的,并且每一步是顺序执行的。数据必须是完整的,以整体的方式传递。 |
管道/过滤器 |
在管道/过滤器风格的软件架构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。 |
主程序/子程序 |
---|
主程序/子程序风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。 |
面向对象风格 |
这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。 |
层次结构风格 |
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见 |
进程通信 |
---|
构件是独立的过程,连接件是消息传递,构件通常是命名过程,消息传递的方式可以是点对点,异步或者同步的方式,以及远程过程方法调用等。 |
事件驱动的系统 |
构件不直接调用一个过程,而是触发或广播一个或多个事件。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用(implicit invocation)来实现的。基于事件的隐式调用风格的主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便,其缺点是构件放弃了对系统计算的控制。 |
解释器 |
---|
解释器通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低。 |
基于规则的系统 |
基于规则的系统包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和DSS中。 |
数据库系统 |
---|
数据库系统是仓库风格最常见的形式。在数据库系统中,构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。 |
黑板系统 |
黑板系统包括知识源、黑板和控制三个部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中,例如,信号处理、问题规划和编译器优化等。 |
超文本系统 |
超文本系统中出现的构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。超文本系统通常应用在互联网领域。 |
客户机/服务器(Client/Server,C/S)架构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S架构定义了工作站(客户应用程序)如何与服务器相连,以实现数据和应用分布到多台计算机上。服务器负责有效地管理系统的资源,其主要任务集中于对DBMS的管理和控制,以及数据的备份与恢复;客户应用程序的主要任务是提供用户与数据库交互的界面,向服务器提交用户请求并接收来自服务器的信息,对存在于客户端的数据执行应用逻辑要求。这是一种“胖客户机(fat client)、瘦服务器(thin server)”的架构,其处理流程如下图:
其主要特点:
与二层C/S架构相比,在三层C/S架构中,增加了一个应用服务器。可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这种客户机称为瘦客户机(thin client)。三层C/S架构将应用系统分成表示层、功能层和数据层三个部分,如下图:
表示层
表示层是系统的用户接口部分,担负着用户与系统之间的对话功能。它用于检查用户从键盘等输入的数据,显示输出的数据。
功能层
功能层也称为业务逻辑层,是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额、按照预定的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。
数据层
数据层相当于二层C/S架构中的服务器,负责对DBMS的管理和控制。
在B/S架构中,除了数据库服务器外,应用程序以网页形式存放于Web服务器上,用户运行某个应用程序时,只须在客户端的浏览器中键入相应的网址,调用Web服务器上的应用程序,并对数据库进行操作,完成相应的数据处理工作,最后将结果通过浏览器显示给用户。基于B/S架构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
另外,B/S架构也有一些缺点存在:
为了弥补B/S架构存在的一些不足,提高用户体验,富互联网应用(Rich Internet Application,RIA)技术应运而生。
富互联网架构的特点:
MVC架构,既是架构模式也是设计模式。
MVC分为主动和被动两种MVC模型。主动MVC有对模型的观察机制,会把数据主动返回到View。主动MVC能推送数据给视图,但被动模型是没有的。主动MVC就是引入了观察者模式来实现了向视图的推送信息。如下:
MVP的所有的操作都要经过Presenter。MVC中的C主要做事件的分发,并不做事件业务的处理。而P层可以处理业务逻辑。MVP比MVC更加容易进行工程化测试。
MVC和MVP的一个最大的区别就是View和Model是否有交互。所以MVP在耦合程度上是更加有优势的。
MVP是MVC的变种。
MVP实现了V与M之间的解耦,(V不直接使用M,修改V不会影响M)。
MVP更好的支持单元测试(业务逻辑在P中,可以脱离V来测试这些逻辑,可以将一个P用于多个V,而不需要改变P的逻辑)。
MVP中V要处理界面事件,业务逻辑在P中,MVC中界面事件由C处理。
题目,给大类选大类,给小类选小类
问:Java程序可以做到“一次编写,到处运行”,从架构风格上看符合( )风格的特点。
答:虚拟机风格
问:在网络通信中,进行包的解析,一般先进行包头的分离,然后进行报文解析及后续处理,根据这一特点选用( )风格最合适。
答:解析数据,分层逐次操作,数据流风格
问:某公司欲开发一个基于图形用户界面的集成调试器。该调试器的编辑器和变量监视器可以设置调试断点。当调试器在断点处暂停运行时,编辑程序可以自动卷屏到断点,变量监视器刷新变量数值。针对这样的功能描述,采用( )的架构风格最为合适。
答:集成调试器,调试器中有多个部件,强调可设置断点,断点处都触发操作,独立构件风格中的事件驱动。
问:某游戏公司欲开发一个大型多人即时战略游戏,游戏设计的目标之一是能够支持玩家自行创建战役地图,定义游戏对象的行为和之间的关系。针对该目标,公司应该采用( )架构风格最为合适。(四选一:管道-过滤器、隐式调用、主程序-子程序、解释器)
答:支持自行创建,自定义规则,虚拟机风格的解释器
问:某公司承接了一个开发家用空调自动调温器的任务,调温器测量外部空气温度,根据设定的期望温度控制空调的开关。根据该需求,公司应采用( )架构风格最为合适。(四选一:解释器、过程控制、分层、管道-过滤器)
答:过程控制/闭环控制架构风格
问:某公司欲开发一个语音识别系统,语音识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等。每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用( )架构风格最为合适。(四选一:解释器、面向对象、黑板、隐式调用)
答:语音识别,仓库风格中的黑板系统
问:某公司欲开发一个漫步者机器人,用来完成火星探测任务。机器人的控制者首先定义探测任务和任务之间的时序依赖性,机器人接受任务后,需要根据自身状态和外界环境进行动态调整,最终自动完成任务。针对这些需求,该机器人应该采用( )架构风格最为合适。(四选一:解释器、主程序-子程序、隐式调用、管道-过滤器)
答:有自定义的情况,虚拟机风格的解释器,隐式调用其实就是事件驱动,对应的显示调用(调用/返回风格)
问:Windows操作系统在图形用户界面处理方面采用的核心架构风格是( )风格。
答:图形用户界面,独立构件风格中的事件驱动
典型例题:
解析:
第一空,字眼“程序源代码作为整体,依次在不同模块中进行传递”,符合“顺序批处理”的特点。
第二空,字眼“支持代码的增量修改与处理”,又有“IDE”集成开发环境,符合仓库风格,仓库风格是以数据为中心的,所以这里选择“数据共享”。
第三空,字眼“触发”,符合独立构件风格中的事件驱动,也就是“隐式调用”。
第四空,设计模式的考察,设计模式和架构设计是相辅相成的,字眼“适应性改造”,选择“适配”。
第五空,字眼“模拟新操作系统”,符合“虚拟机”特点。
在SOA模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。
服务接口:共同的封装,共同的语言格式,共同的安全和容错处理,其标准高度的统一。统一标准下产生的构件是可以通用的。服务相关的协议都是基于XML发展而来的。遗留系统的集成,信息孤岛的联通这些问题都可以使用SOA来应用。比如可以把遗留系统作为一个个的服务挂接到总线,这样就可以重复利用起来了。松散耦合,粗粒度和标准化的接口都是服务的特点。
在Web Service(Web服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了SOA的一种实现架构,如下图:
服务提供者
服务提供者是服务的所有者,该角色负责定义并实现服务,使用WSDL对服务进行详细、准确、规范的描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。
服务请求者
服务请求者是服务的使用者,虽然服务面向的是程序,但程序的最终使用者仍然是用户。从架构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求者角色可以由浏览器来担当,由人或程序(例如,另外一个服务)来控制。
服务注册中心
服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的服务。不过,在某些情况下,服务注册中心是整个模型中的可选角色。例如,如果使用静态绑定的服务,服务提供者则可以把描述直接发送给服务请求者。
服务注册表(service registry)虽然也具有运行时的功能,但主要在SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在SOA中注册,从而可以被发现和使用。服务注册表可以包括有关服务和相关构件的配置、依从性和约束文件。从理论上来说,任何帮助服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。
企业服务总线是一个具有标准接口、实现了互连、通信、服务路由,支持实现SOA(Service Oriented Architecture,面向服务架构)的企业级信息系统基础平台。它提供消息驱动、事件驱动和文本导向的处理模式,支持基于内容的服务路由。SOA架构将各应用服务器(包括异构的服务器)上的各种服务连接到服务总线上,支持分布式的存储及分布式的处理、异步处理。为信息系统的真正松耦合提供了架构保障。简化了企业整个信息系统的复杂性,提高了信息系统架构的灵活性,降低企业内部信息共享的成本。
功能 | 技术协议 |
---|---|
发现服务 | UDDI、DISCO |
描述服务 | WSDL、XML Schema |
消息格式层 | SOAP、REST |
编码格式层 | XML(DOM、SAX) |
传输协议层 | HTTP、TCP/IP、SMTP等 |
UDDI(Universal Description Discovery and Integration,统一描述、发现和集成)提供了一种服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。UDDI规范描述了服务的概念,同时也定义了一种编程接口。通过UDDI提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。
WSDL(Web Service Description Language,Web服务描述语言)是对服务进行描述的语言,它有一套基于XML的语法定义。WSDL描述的重点是服务,它包含服务实现定义和服务接口定义。
SOAP(Simple Object Access Protocol,简单对象访问协议)定义了服务请求者和服务提供者之间的消息传输规范。SOAP用XML来格式化消息,用HTTP来承载消息。通过SOAP,应用程序可以在网络中进行数据交换和远程过程调用(Remote Procedure Call,RPC)。
REST(Representational State Transfer,表述性状态转移)是一种只使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。它的简单性和缺少严格配置文件的特性,使它与SOAP很好地隔离开来。
首先,微服务也是属于面向服务的架构。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
微服务的特点及优点:
微服务的缺点与挑战:
微服务 | SOA |
---|---|
团队级,自底向上开展实施 | 企业级,自顶向下开展实施 |
一个系统被拆分成多个服务,粒度细 | 服务由多个子系统组成,粒度大 |
无集中式总线,松散的服务架构 | 企业服务总线,集中式的服务架构 |
集成方式简单(HTTP/REST/JSON) | 集成方式复杂(ESB/WS/SOAP) |
服务能独立部署 | 单块架构系统,相互依赖,部署复杂 |
MDA是Model Driven Architecture 的缩写,也叫模型驱动架构。起源于分离系统规约和平台实现的思想,MDA的主要目标是:Portability(可移植性),Interoperability(互通性),Reusability(可重用性)。
其中,M为Model,客观事物的抽象表示;Model-Driven,使用模型完成软件的分析、设计、构建、部署、维护等各开发活动;A是Architecture ,构成系统的部件、连接件及其约束的规约。
MDA的3种核心模型:
MDA是模型驱动架构,由OMG定义的一个软件开发框架,基于UML及其他工业标准。MDA把建模语言用作一种编程语言而不仅仅是设计语言,模型在软件开发中扮演了非常重要的角色。
ADL(Architecture Description Language)是一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体化语法和概念框架。
ADL三个基本元素:
ADL是建模用的,是一些伪代码
例题3:
例题3解析与答案:
答案:C
解析:略
DSSA(Domain Specific Software Architecture)特定领域软件架构,可以看做开发产品线的一个方法或理论,目标就是支持一个特定领域中多应用的生成。
例题4:
例题4解析与答案:
答案:C C
解析:略
基于架构的软件设计(ABSD,Architecture-Based Software Design)是一种架构驱动方法,架构驱动也就是说架构先行,需求获取和分析还没有完成就开始架构设计,需求获取和分析与架构设计并行,例如产品线系统和长期运行的系统,我们不可能开始就能决定所有的需求。
ABSD强调由业务、质量和功能需求的组合驱动架构设计,强调采用视角和视图来描述软件架构,采用用例(功能需求)和质量场景(质量需求)来描述需求。
ABSD方法有三个基础:
例题5:
例题5解析与答案:
答案:B C C
解析:略
传统的软件开发过程是问题定义,需求分析,软件设计,实现,测试。ABSD把整个软件过程分成六个部分,架构需求,设计,文档化,复审,实现,演化六个步骤。
例题6:
例题6解析与答案:
答案:A A C
解析:略
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
例如:
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
例如:
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
例如:
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
例如:
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。
例如:
软件可测试性是指通过测试揭示软件缺陷的容易程度。
例如:
例题7:
例题7解析与答案:
答案:A D A
解析:略
例题8:
例题8解析与答案:
答案:B C A C C D
解析:略
架构评估的基准是架构质量属性,
敏感点是一个或多个构件(和/或构件之间的关系)的特性。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
风险点是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
非风险点是指不会带来隐患,一般以“XXX要求是可以实现(或接受)的”方式表达。
例如:
例题9:
例题9解析与答案:
答案:D B
解析:略
软件架构评估有三种方式:基于调查问卷(检查表),基于度量,基于场景。
基于调查问卷(检查表):是指组织相关人员进行评估,这种方式最简单易行,但是主观性强。
基于度量:强调量化指标,最客观,但是这种方式实施难度大,因为需要评估者对系统非常熟悉,不然很难量化清楚各项指标。
基于场景:筛选出系统的关键场景,根据系统在不同场景中的表现进行评估,这种方式客观程度介于2者之间,这也是目前较为流行的结构评估方法。
基于场景的方式主要有三种(前2种方式用得比较多):
SAAM,最初用于分析架构可修改性,后扩展到其它质量属性
软件架构分析法分为6个步骤:
架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method)是在SAAM上发展而来。核心是结合质量属性效用树对系统进行评价,确定风险点、敏感点、权衡点,并对系统架构做出决策和折中。整个评估过程强调以质量属性作为评估核心,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
ATAM分成4个阶段,如下图:
例题10:
例题10解析与答案:
答案:D
解析:略
例题11:
例题11解析与答案:
答案:C C
解析:略
质量属性效用树:识别质量属性并排序,主要包含性能、可用性、可修改性、安全性四个方面。
性能:性能延时(将用户数据库存储延迟到了最小值300ms,提供了实时的视频图像),交易吞吐量(使认证服务器的平均吞吐量最大化)。
可修改性:新增产品目录,商业产品修改(已小于20人月的工作量添加CORBA中间件,以小于4人周的工作量更改web界面)。
可用性:硬件故障(若站点A断电,要求在3秒内将任务重定向到站点B,若磁盘出现故障,要求在5分钟内重新启动,要在1-5分钟之内检测并恢复网络故障),商业软件故障。
安全性:数据机密性(信用卡交易在99.999%的时间内是安全的,客户数据库z认证在99.999%的时间内能正常工作),数据完整性。
质量属性效用树示例图如下:
软件产品线主要由两部分组成,分别是核心资源和产品集合。核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。
软件产品线开发有4个基本技术特点,即过程驱动、特定领域、技术支持和架构为中心。与其它软件开发方法相比,组织选择软件产品线的宏观上的原因有:对产品线及其实现所需的专家知识领域的清楚界定;对产品线的长期远景进行了战略性规划。
组织选择软件产品线的原因:
双生命周期模型分成两个重叠的生命周期:领域工程和应用工程。
领域工程使用DSSA,主要任务有领域分析,领域设计,领域实现。
领域工程主要任务:
应用工程领域:需求分析,系统设计,系统实现。
应用工程在领域工程结果基础上构造新产品:
三生命周期模型为有多个产品线的大型企业增加企业工程流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。
SEI模型基本活动分为三部分,分别是核心资源开发(即领域工程)、产品开发(即应用工程)和管理。
SEI模型的主要特点:
核心资源开发活动的目标是建立产品线的生产能力。根据输入端的产品约束、框架、生产约束、生产策略和遗留资产清单,核心资产开发活动产出三项输出:
划分依据:用演化方式和革命方式引入产品线开发过程,基于现有产品还是开发全新的产品线。
四种方式的基本特征如下:
演化方式 | 革命方式 | |
---|---|---|
基于现有产品 | 基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件 | 核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集 |
全新产品线 | 产品线核心资源随产品新成员的需求而演化 | 开发满足所有预期产品线成员的需求的核心资源 |
软件产品线开发过程分为领域工程和应用工程,相应的软件开发组织结构也应该有两个基本组成部分,即负责核心资源的小组和负责产品的小组。这也是产品线开发与独立系统开发的主要区别。
组织模型:开发部门、商务部门、领域工程部门和层次领域工程部门。
动态的组织结构,根据产品线的建立方式和发展阶段、成熟程度的变化,有一种组织结构向另一种组织结构演变。
组织结构类型:
要成功实施产品线,主要取决于以下因素:
定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。
定义2:构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。
定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。
构件系统架构特性:
软件复用(软件重用)是使用已有的软件产品(如设计、代码和文档等)来开发新的软件系统的过程。
复用的发展过程:
复用的维度:
例题12:
例题12解析与答案:
答案:B
解析:略
第一步,检索与提取构件
基于关键字的检索,特点:树形或有向无回路图结构。
刻面检索法,特点:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
例如,分多个刻面:1 应用领域、2 使用环境、3 功能
超文本检索法,特点:按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。
第二步,理解与评价构件
第三步,修改构件
第四步,组装构件
组装的三种方式:
构件组装失配问题:
例题13:
例题13解析与答案:
答案:C
解析:略
构件标准规范包括OMG的CORBA、Sun的EJB/J2EE和微软的COM/DCOM/COM+。
COBRA
CORBA体系的主要内容包括以下几部分:
四种构件:
构件模型:
EJB/J2EE
EJB是Sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。EJB 构件用于封装业务逻辑,使开发人员无须再担心数据访问、事务处理支持、安全性、高速缓存和迸发等琐碎任务的编程。
支持的5种构件模型:Applet、Servlet、JSP、EJB、Application Client。
其中,EJB中的BEAN分三种:
COM/DCOM/COM+
COM+ ⊇ DCOM ⊇ COM
可以参考https://blog.csdn.net/lili40342/article/details/128586533
例题14:
例题14解析与答案:
答案:A
解析:略
中间件是一类构件,中间件是一类系统软件。
中间件,简化结构、屏蔽差异、利于复用。
采用中间件技术的优点:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于操作系统之上,管理计算资源和网络通信,实现应用之间的互操作。
目前,应用服务器已经成为电子商务应用中一种非常关键的中间件技术。通过它能将一个企业的商务活动安全有效地实施到Internet上,实现电子商务。它并非一种传统意义上的软件,而是一个可以提供通过Internet来实施电子商务的平台。在分布式、多层结构及基于构件和服务器端程序设计的企业级应用开发中,它提供的是一个开发、部署、运行和管理、维护的平台。它可以提供软件“集群” 的功能,因而可以让多个不同的、异构服务器协同工作、相互备份,以满足企业级应用所需要的可用性、高性能、可靠性和可伸缩性等。
故而,从某种意义上说,应用服务器提供了一个“企业级应用的操作系统”。实现 J2EE规范的应用服务器称为 J2EE 应用服务器。