吉林大学2018年软件组件与复用技术--背诵资料整理

考前临时整理的,又不想浪费掉,保存下,希望对大家有些许帮助!

文章目录

    • @[toc]
    • 一、软件理论部分
        • 1. 软件复用
        • 2. 软件体系结构
        • 3. 设计模式
        • 4. 设计框架
        • 5. 动态链接概念理解
    • 二、COM组件
        • 1. 组件的作用
        • 2. `IUnKnown`接口中三个函数的作用
        • 3. 组件和中间件
        • 4. 类厂接口的作用
    • 三、IDL编译器
        • 1. `ORB`相关
        • 2. ``IDL``编译器的主要作用
        • 3. `IDL`语言作用
        • 4. ``IDL``从输入得到输出原理
    • 四、``EJB``组件
        • 1. `EJB`概念
        • 2. ``EJB``容器回调函数
        • 3. ``EJB``的部署描述文件
        • 4. ``EJB``分类
        • 5. 构建``EJB``组件的一般过程
        • 6. HOME接口作用
        • 7. `EJB` Object对象的作用
      • 补充:
        • 通过对`EJB`容器和``ORB``的了解,给出对中间件的理解

一、软件理论部分

1. 软件复用

软件复用的理解

软件复用,是将已有的软件的各种知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。

软件复用的主要思想是,将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件再设计编写时可以被设计成完成同类工作的通用工具。这样,完成一项新的项目或工程,就变成了各种相应软件组件的链接问题。极大地提高了软件开发效率和质量。不仅于此,软件复用也包括其体系结构、需求、设计文档等方面。

软件复用有三个基本原则,一是必须有可复用的对象,二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。

2. 软件体系结构

一句话总结:软件初步划分后的构成,是一种分解方法,是对软件系统概要设计的结果,即对需求做出什么样的决策。

  1. 代表着一个软件系统的高层次结构,或者是初步分解之后的组成形式,对应的是软件在设计时的顶级的逻辑结构;
  2. 代表对软件系统的分解方法;
  3. 对于典型种类的软件会有特定的划分方式,从而形成典型的软件体系结构,这些软件体系结构是可以在开发类似产品时重复使用,即可复用;
  4. 一个软件系统的软件体系结构对应的是为了满足软件系统的需求(这些需求包括功能性需求和非功能性需求),给出设计决策,进一步来讲,就是整个组成元素需要由什么元素组成。并且为了满足非功能性需求,在开发的时候,它应该由哪些元素所组成。整个软件系统运行时必须包括哪些主要成分,从不同角度将要开发出来的能够满足系统需求的软件模样,它的构成。

3. 设计模式

针对典型的设计问题的本身描述以及针对这个问题给出的相对来说通用的,经过检验的,经过时间证明的相对好的解决方法。一个设计模型怎么来表示,进一步地通过问题本身的描述,以及为了解决该问题应在程序或软件结构上有哪部分构成,这几部分如何协同工作来解决问题。它是领域无关的,解决一般性问题。

工厂方法

工厂方法有两种设计模式,一种是调用者知道应该使用哪个具体工厂服务,直接去找那个工厂;二是调用者不知道也不想知道我所要的产品是哪个工厂生产的,只要能生产出来就行。

代理模式

使用代理模式创建代理对象,让代理对象控制目标对象的访问,并且可以在不改变目标对象的情况下添加一些额外的功能。

4. 设计框架

针对于特定的领域的,根据已经开发出来的结果来得到经验结果,是一种结果复用。它里面包括了对设计问题的部分实现。

5. 动态链接概念理解

动态链接是指用户在应用程序的运行中能够将组件替换掉的技术,使用组件的优点便来源于用户可以动态地将组件插入或卸载应用程序,为在运行时能够改变组件,我们需要将组件动态链接起来。


二、COM组件

1. 组件的作用

使具有某一特定功能的应用可以被跨平台使用,使与编程语言无关的实现成为可能。可以通过组件的组合实现多种功能的应用。大大节省了软件开发时间和劳动量,并更容易实现良好的软件规范体系,使软件复用成为现实。

具体内容

  • COM组件是由接口实现两部分组成;
  • 实现部分对客户来说是黑盒,客户能够看到组件的接口部分;
  • 接口部分是由若干接口组成,每个接口都是有序排列的一组函数指针,可以简单理解为一组函数
  • 每个接口相当于该组件对外的一个窗口,客户可以从不同的接口看到,获得通过该组件提供的服务;
  • 对客户来说,组件就是接口集,只能通过接口与组件交互;
  • 接口公布后,永远不变,允许组件增加新接口;
  • 接口和组件有唯一标识符,接口中函数通过位置确定,表示用结构化形式表示,是连续的若干字节;

2. IUnKnown接口中三个函数的作用

COM将接口自管理功能的函数集中定义在一个IUnknown的接口中

QueryInterface 的作用是对组件的接口进行查询,组件客户可以通过它查询该组件是否存在某一个接口。若存在某个接口,客户可以获得该接口,从而获得该接口提供的服务。这个规定是因为在COM中,COM组件之间是动态组合的,使用一个组件之前,必须确认它具有所需要的服务。即:先确认,后使用。这与一般程序中使用对象的方式不同。

AddRefRelease通过计数器共同完成引用计数功能。一个组件可同时被多个客户使用,使用时客户将组件载入到内存中,但客户不能将组件从内存中卸载。为了知道何时这个组件没有客户,利用计数器来记录该组件的使用情况。为每一个接口设置一个计数器,当所有的计数器为0时,该组件不存在客户,将其从内存中卸载。

3. 组件和中间件

组件和中间件相结合的开发方式,组件负责什么,中间件负责什么

组件是利用IDL定义接口,利用某种程序设计语言编写程序实现接口。

中间件是出于应用程序及其所在系统内部工作方式之间的软件,它提供了与具体业务无关的功能,是用流的形式实现与业务无关的功能,有规范接口。

组件的职责是不直接交互,它们使用中间件提供的协议和方法进行交互。中间件是为JavaEE提供环境,为组件提供所需服务。

组件接口的进一步描述

一个组件的其它接口可以看做IUnKnown接口的子接口,其它任何一个接口的前三个函数与IUnKnown接口中的三个函数相同。客户获得一个接口后,可以查询其它接口是否存在。每个接口能够进行引用计数。

4. 类厂接口的作用

类工厂:一个能够创建其它组件的组件

  1. 客户可以通过类厂创建其它组件;
  2. 类厂组件的唯一功能就是创建其它组件;
  3. 创建组件的标准接口是IClassFactoryCoCreateInstance创建的组件实际上是通过IClassFactory创建的;
  4. 可以给客户提供一种能够控制组件创建过程的方法。在建立好一个组件之后,可以控制将组件装载内存中何处或检查客户是否有权限;
  5. 类厂的特性:类厂的一个实例只能创建同某个CLSID相应的组件,类厂可以知道并确实具有它所见的组件的一些特殊知识;

具体过程描述

使用COM库中的CoGetClassObject函数可以获得指定类的类工厂,然后调用IClassFactory::CreateInstance方法创建类的实例,并将该实例的接口指针返回给客户,客户利用该界面指针调用接口中的方法。


三、IDL编译器

1. ORB相关

ORB的任务是把客户发出的请求传递给目标对象,并把目标对象的执行结果返回给发出请求的客户。

ORB最重要的特征是,提供了客户与目标对象之间的交互透明性。

2. IDL编译器的主要作用

最重点部分!!!

IDL编译器的作用根据IDL文件描述的接口信息生成由特定编程语言为宿主语言的对象服务的头文件、桩和构架。具体来说:

  1. 生成与编程语言相关的文件(IDL 文件,接口仓库);
  2. 生成客户桩文件stub,头文件head,和服务器框架文件skeleton
    • stub是把某个对象类型的IDL操作定义映射到例程;
    • head是桩文件和框架文件都用头文件来定义结构和常量;
    • skeleton是服务器应用程序把客户机操作映射到服务器实现的方法上,通常是源代码形式;

3. IDL语言作用

IDL是接口定义语言,仅仅定义了接口。接口定义了某类对象的特征,行为,还有服务器能在这类对象上施加的操作,包括输入输出以及返回结果。用IDL定义对象就得到了CORBA接口。

4. IDL从输入得到输出原理

IDL语言用来定义对象的属性和操作,包括全部的输入输出以及返回结果。

IDL编译器根据IDL源文件在编译后得到客户机stubstub中是一些函数声明,告诉ORB自己所需要的服务。

skeleton根据ORB传递的信息,告诉客户端请求何种对象来完成指令的服务。

这些过程都只是简单的对接几下映射,并未完成逻辑的实现,所以可以自动生成。


四、EJB组件

EJB : Enterprise Javabean

1. EJB概念

J2EE将业务逻辑从客户端中抽取出来,封装在一个组件中,并运行在一个独立服务器上,客户端软件通过网络调用组件的服务以实现业务逻辑,这个组件称作EJB

EJB定义了服务器组件的编写规则、组件之间的交互规则和应用服务器对组件的管理规则。

EJB的主要组成部分包括:EJB构件、容器、服务器、EJB对象(Object)和EJB Home。

2. EJB容器回调函数

EJB组件当中实现的,实际上是在bean类当中实现的,容器在自动维护组件的实例的生命周期的时候需要调用的。原本组件实例想借助于容器维护自己的生命周期,但在利用或者说请求容器为自己做事情过程中,容器自己完成的一些局部环节的事情。


3. EJB的部署描述文件

借助于部署描述文件,EJB组件能够声明其依赖的中间件服务。然后,EJB容器通过部署描述符了解组件待使用的中间件服务。

4. EJB分类

EJB中的bean可以分为会话bean(维护会话)、实体bean(处理事务)和消息bean(提供异步消息机制)

  • 会话bean 短暂的对象,运行在服务器端,并执行一些应用逻辑处理,它由客户端应用程序创建,其数据需要自己来管理;
  • 实体bean 持久的对象,可以被其它对象调用。与会话bean不同,实体bean不维护客户端状态,且必须在建立时指定一个唯一的标识,并提供相应的机制允许客户应用程序,根据实体bean标识来定位beans实例;
  • 消息bean 专门设计用来处理JMS消息;

5. 构建EJB组件的一般过程

  1. 编写提供业务方法得类:bean类;
  2. 编写两个接口:home接口(工厂接口、类厂接口)和组件业务接口(远程接口);
  3. 创建一个部署描述文件,用来告诉服务器如何管理;
  4. bean、接口和部署描述文件放在一个文件中;
  5. 用服务器开发商提供的工具把bean部署到服务器上;

6. HOME接口作用

容器根据提供的home接口生成home对象,home对象是用于对EJB对象进行管理的,用于创建,查找,删除EJB对象。

7. EJB Object对象的作用

EJB Object对象接受客户端的请求,并把这个请求传给bean实例,可以把EJB Object对象称为bean类的代理。


补充:

通过对EJB容器和ORB的了解,给出对中间件的理解

或者谈谈你对中间件的理解

中间件是处于应用程序及其所在系统的内部工作方式之间的软件。它提供了与具体业务无关的功能,如EJB容器提供了远程访问、事务处理,与数据库中的数据同步等功能;ORB提供了网络传递,压包解包,确定远程访问对象等功能。所以中间件是用统一的形式实现与业务无关的功能,从而简化了编程。中间件独立于操作系统和软硬件平台及软件,与具体编程无关。

你可能感兴趣的:(考试,其他整理,--,个人)