中间件复习题及复习资料

中间件复习题及复习资料
中间件复习题及复习资料

中间件复习题

1.你认为什么是中间件?中间件的主要作用是什么?

●定义:中间件是介于应用系统和系统软件之间的一类软件,是位

于操作系统和应用软件之间的一个软件层,向各种应用软件提供服务,使不同的应用进程能在屏蔽掉平台差异的情况下,通过网络互通信息。

●作用:使用系统软件所提供的基础服务(功能),衔接网络上应用

系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。

2.比较B/S结构与C/S结构的优缺点。

C/s 是客户机和服务器结构

B/S是浏览器和服务器结构

B/S:

优点:1.具有分布性特点,业务处理方便;2.业务扩展简单方便;3.便于维护

缺点:1.响应速度不及C/S结构;2.用户体验效果不够理想,需要单独界面设计

C/S:

优点:1.客户端与服务器直接相连,响应速度快;2.C/S结构的管理信息系统具有较强的事务处理能力。

缺点:1.客户端需要安装专用的客户端软件,工作量、维护成本较大;

2.对客户端的操作系统有限制。

3.对客户端的操作系统一般也会有限制。不适用于微软新的操作系统等等,Linux、Unix等。

3.ORB、对象适配器的作用分别是什么?

●ORB:是OMA参考模型的核心,是基于分布式对象构建应用程序的

基础设施,保证了在异构平台上对象的互操作性与可移植性。

作用:把客户发出的请求传递给目标对象,并把目标对象的执行结果返回给发出请求的客户。由ORB提供的通信机制负责完成查找请求的对象实现,让对象实现准备好接收请求,传递构成请求的数据。

●对象适配器:对象适配器是联系对象实现与ORB本身的纽带。它

的引入还大大减轻了ORB的任务,从而简化了ORB的设计。

作用:

管理服务器端伺服对象,对象标识,CORBA对象以及它们之间关联。决定在收到一个客户请求时应调用哪一个伺服对象,然后调用该伺服对象上的合适操作。对象适配器主要完成以下工作:对象登记、对象引用(OR, Object Reference)的产生、服务器进程的激活、对象的激活、对象的撤消、对象向上调用。

4.描述典型CORBA程序的开发实现过程(静态工作模式)。

5.什么是POA策略?列举几种标准的POA策略并简要解释。

●POA策略:POA策略是一个对象,负责控制相关POA的行为及这些

POA所管理的对象,使用POA前应仔细考虑应用程序所需的策略集。

●标准POA策略:(选两种即可)

线程策略:该策略指定POA使用的线程模型,它有两种取值:

ORB_CTRL_MODEL(缺省值):表示由ORB负责将对POA的请求指派到线程。在多线程环境中,并发请求可以用多线程传送。

SINGLE_THREAD_MODEL:这时只有一个线程,POA顺序地处理请求。

对象标识指派策略:该策略指定对象标识是由程序员编写的服务程序生成还是由POA自动生成,它可取以下值:

USER_ID:由应用程序为POA的对象引用指定对象标识。

SYSTEM_ID(缺省值):由POA为它的对象引用分配对象标识。如果同时还采用了PERSISTENT策略,则在同一POA的所有实例中对象标识必须是唯一的。

对象标识唯一性策略:该策略允许多个抽象对象共享一个伺服对象,它可取下列值:

UNIQUE_ID(缺省值):被激活的伺服对象仅支持一个对象标识,POA不允许一个伺服对象与多个CORBA对象相关联。

MULTIPLE_ID:被激活的伺服对象可以有一个或多个对象标识,在运行时刻调用伺服对象的操作时必须由操作内部决定对象标识。生命期策略:该策略指定POA中对象实现的使用期限,它可有以下值:

TRANSIENT(缺省值):由POA创建的对象引用是瞬时的,这些对象在创建它的POA之外不可存在。一旦POA被冻结为非活动状态,调用该POA创建的任何对象引用将引发OBJECT_NOT_EXIST异常。对话型对象通常设计为瞬时对象。

PERSISTENT:由POA创建的持久对象可在创建它的POA之外存在,因而使用这一策略通常还会同时采用USER_ID策略。对持久对象的请求可能导致隐式地激活一个进程、一个POA以及实现该对象的伺服对象,这意味着POA应注册伺服对象定位器或激活器。实体型对象通常设计为持久对象。

隐式激活策略:该策略指定POA是否支持伺服对象的隐式激活,它可取以下值:

IMPLICIT_ACTIVATION:POA支持隐式激活,服务程序可调用servant_to_reference操作或servant_to_id操作将伺服对象添加到活动对象映射表并转换为对象引用,也可调用伺服对象的

_this方法激活伺服对象。该值要求同时使用SYSTEM_ID和RETAIN 策略。

NO_IMPLICIT_ACTIVATION(缺省值):POA不支持伺服对象的隐式激活,只有通过显式的调用才可将伺服对象与一个对象标识相关联。

伺服对象保持策略:该策略指定POA是否将活动伺服对象保存在活动对象映射表中,它有两种取值:

RETAIN(缺省值):POA利用活动对象映射表跟踪对象的激活情况,通常与伺服对象激活器或POA显式激活方式结合使用。

NON_RETAIN:POA不在活动对象映射表中保存活动的伺服对象,通常结合伺服对象定位器一起使用。

6.Corba客户端的静态和动态调用

(1)静态调用(SII)

静态调用借助于客户程序桩完成。

桩与框架在编译时创建并且在运行时不再改变,所以这些接口称为SII。

IDL桩负责客户程序的实现语言与ORB内核之间的映射。

客户程序开发者必须在程序编译之前就知道操作的名字和所有参数与返回值的类型,实际的操作名字、参数值和返回值是编写在应用程序的源代码中。

优缺点:编程更容易-根据名字调用远程方法,将参数传递给方法,和本地方法调用相同。

更强的类型校验-编译程序时加强了类型校验。

执行良好-比动态方式快40倍左右

自编文档-通过阅读代码可以了解正在进行的东西。

不够灵活,用户在系统中添加新的对象服务时,客户程序必须改动源程序,重新编译,才能使用。

(2)CORBA支持两种用于动态调用的接口:

动态调用接口(DII)——支持客户方的动态请求调用。

动态框架接口(DSI)——支持服务方的动态对象调用。

1 利用DII,客户方应用可以在运行时动态地向任何对象发出请求,而不象静态调用那样,必须在编译时就知道特定的目标对象的界面信息。

2 使用DII时,用户必须手工构造请求信息,包括相应的操作及有关参数等。

3 类似地, DSI允许用户在没有静态框架信息的条件下来获得对象实现。

4 过程:客户在运行时发现服务,获取接口,动态构造请求,从而使客户方调用该对象实现提供服务

优缺点:客户端程序在编译的时候无法得知对象的详细信息,通过DII向远端对象发起调用

客户端可以通过DII中所含的标准的API动态的决定:调用哪个对象,调用对象中的哪个操作,操作的参数是什么

可以在运行时动态向任何对象请求

用户必须手工构造请求信息,包括相应操作及有关参数

DII为客户端程序提供了“构建”和“发起”远端对象调用的能力接口库提供了在运行时刻发现对象的能力。

没有接口库,就不会有真正的CORBA动态特性

7.简述基于POA实现的客户请求传递过程。

客户请求的传递过程:

●客户程序发出的请求中包含:创建对象引用的POA名字、对象标识

及目标机器与端口等信息

●如果目标POA不存在,ORB还允许调用适配器激活器创建所需的

POA

●一旦请求被ORB传送到正确的机器与端口,监听该端口的POA管

理器负责检查对象关键码(object key),对象关键码中含有POA 名字与对象标识

●POA管理器利用对象关键码将请求传送给正确的POA

●POA利用对象关键码确定对象标识

●根据POA的策略集直接或间接地利用对象标识将请求传送到正确

的伺服对象。

8.什么是IOC/DI,主要类型有哪些?

IOC:

控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件

的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

DI:

依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。

9.EJB组件有哪几种?其特点分别是什么?

●EJB组件:

会话bean(维护会话):表示客户同应用之间进行的会话,是一种商业处理过程对象。

实体bean(处理事务):代表商业过程中处理的永久性的数据。

消息驱动Beans(Message-driven Beans):结合了会话bean 和 JMS 的消息监听器的特性, 可异步接收JMS 消息。

●特点:

会话bean(维护会话):

-运行在服务器端,其数据需要自己管理

-客户通过session bean上的方法来同应用的业务逻辑层上的组件进行交互

-Session bean是短暂的,且只有在与之关联的会话存在时才存在-会话Bean代表的是调用它的客户程序所完成的工作,是商务过程对象。

-他们执行商务逻辑、商务规则、算法和工作流程,他们是包含商务逻辑过程的可重用组件。

实体bean:

-表示存储在永久性数据存储位置的业务数据,是持久的对象。

-与会话bean不同,实体bean不维护客户端状态

-实体bean实例映射到存储在关系数据库表中的一行数据

-实体bean每一个实例都具有唯一的标识(主键)

-更复杂的entity bean可以代表数据库表间关联视图。

-实体bean对象的存活时间与它们相关联的数据实体一样长,持续到它们表示的实体实际从永久性存储器中删除时对象

-与会话bean不同,实体可由多个客户共享

消息bean:

与其他BEAN区别

-不能由客户直接调用,由容器异步调用

-没有远程或本地接口

-类似于无状态的会话BEAN

10.RMI存根和框架的作用?

RMI存根和框架的作用:

●Stub为客户端编码远程命令并把他们发送到服务器,等待服务器

返回结果,stub再解码返回调用结果给客户端。

●Skeleton是把远程命令解码,调用服务端的远程对象的方法,把

结果再编码发给stub。

11.比较JSP与Servlet。

1.两者都是基于Java的技术,所以都继承了Java的所有特性(跨

平台、多线程、OO ),都可以使用Java强大的API。

2.两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再

编译为类。

3.两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。

4.都是Web服务器的功能扩展,Servlet创建动态页面;JSP可动态,

静态创建页面

5.Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚

本,编写起来更简单容易。

12.简述什么是POA?简述创建并激活POA的过程?

●POA:POA是对象实现与ORB其他组件之间的中介,它将客户请求

传送到伺服对象,按需创建子POA,提供管理伺服对象的策略。

●创建:利用create_POA()方法可以创建一个新的POA作为该POA

的子POA, 可以根据实际需要以这种方式创建多个子POA,从而形成一个POA层次(服务程序创建子POA只需提供子POA的名字,客户程序必须使用完整的POA名字指定一个子POA)

●激活:对象引用通过对象标识与伺服对象建立关联。如果POA采

用RETAIN策略,可有三种激活方式:显示激活,隐式激活,按需激活;若采用NON_RETAIN策略,对象只能按需激活。

13.简述ORM,为什么需要ORM?

概念:对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

目的:面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。为了解决这个不匹配的现象,对象关系映射技术应运而生。

14.现代应用系统的主要特征是什么?

●分布:任务已不只是在单机上运行,而是由网络中多台计算机上

的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同步等诸多问题;

●异构:计算机硬件、操作系统、网络协议、数据库系统以及开发

工具种类繁多,需考虑数据表示、调用接口、处理方式等诸多问题;

●动态协作:参与协作的应用允许位置透明性、迁移透明性、负载

平衡性等需求。

15.2层和3层系统的特点是什么?

●2层结构存在很多缺陷:

1.客户端的负担仍比较重:仍然需要客户端进行较复杂的数据处

2.客户端的可移植性不好:处理复杂必然牵涉更多的移植性问题;

每个客户端上都要安装数据库驱动程序

3.系统的可维护性不好:客户端包含过多的商业逻辑;商业逻辑

与人机交互界面交织在一起

4.数据的安全性

●3层结构的优点:

除了更合理的分配任务外,3层结构还具有如下优点:

1.将业务逻辑放置在中间层可以提高系统的性能,使中间层的业

务逻辑处理与数据层的业务数据紧密结合在一起,而无需考虑客户的具体位置。

2.添加新的中间层服务器能够满足新增客户机的需求,可以大大

提高3层系统的可伸缩性。

3.将业务逻辑从客户端移到中间层,在客户层的应用程序与数据

层的数据库之间增加了一层,这样客户端的应用程序可以独立于数据层的数据库。

4.将业务逻辑致于中间层,从而使业务逻辑集中到一处。而在2

层方式下,业务逻辑被分散到所有的客户机上(除非使用存储过程)。这样做是不可取的,因为业务规则是动态变化的,而对于这些业务而言,规范又是强制性的,所以,将业务逻辑分散到整个客户层的客户机上会使实施过程变得非常困难。

5.大量的中间层中间件平台提供丰富的系统级服务,使得开发人

员可以以更少的工作量开发出更复杂、可靠、高效的软件系统。

16.Struts框架各组件作用。

?是MVC模式的一种实现,构建程序框架结构。

相关主题
相关文档
最新文档