中间件复习题及答案.docx
《中间件复习题及答案.docx》由会员分享,可在线阅读,更多相关《中间件复习题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
中间件复习题及答案
中间件复习题及答案
中间件复习题
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.对客户端的操作系统有限制。
对象标识唯一性策略:
该策略允许多个抽象对象共享一个伺服对象,它可取下列值:
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不在活动对象映射表中保存活动的伺服对象,通常结合伺服对象定位器一起使用。
3.Corba客户端的静态和动态调用
(1)静态调用(SII)
静态调用借助于客户程序桩完成。
桩与框架在编译时创建并且在运行时不再改变,所以这些接口称为SII。
IDL桩负责客户程序的实现语言与ORB内核之间的映射。
客户程序开发者必须在程序编译之前就知道操作的名字和所有参数与返回值的类型,实际的操作名字、参数值和返回值是编写在应用程序的源代码中。
优缺点:
编程更容易-根据名字调用远程方法,将参数传递给方法,和本地方法调用相同。
更强的类型校验-编译程序时加强了类型校验。
执行良好-比动态方式快40倍左右
自编文档-通过阅读代码可以了解正在进行的东西。
不够灵活,用户在系统中添加新的对象服务时,客户程序必须改动源程序,重新编译,才能使用。
(2)CORBA支持两种用于动态调用的接口:
动态调用接口(DII)——支持客户方的动态请求调用。
动态框架接口(DSI)——支持服务方的动态对象调用。
1利用DII,客户方应用可以在运行时动态地向任何对象发出请求,而不象静态调用那样,必须在编译时就知道特定的目标对象的界面信息。
2使用DII时,用户必须手工构造请求信息,包括相应的操作及有关参数等。
3类似地,DSI允许用户在没有静态框架信息的条件下来获得对象实现。
4过程:
客户在运行时发现服务,获取接口,动态构造请求,从而使客户方调用该对象实现提供服务
优缺点:
客户端程序在编译的时候无法得知对象的详细信息,通过DII向远端对象发起调用
客户端可以通过DII中所含的标准的API动态的决定:
调用哪个对象,调用对象中的哪个操作,操作的参数是什么
可以在运行时动态向任何对象请求
用户必须手工构造请求信息,包括相应操作及有关参数
DII为客户端程序提供了“构建”和“发起”远端对象调用的能力
接口库提供了在运行时刻发现对象的能力。
没有接口库,就不会有真正的CORBA动态特性
4.简述基于POA实现的客户请求传递过程。
客户请求的传递过程:
●客户程序发出的请求中包含:
创建对象引用的POA名字、对象标识及目标机器与端口等信息
●如果目标POA不存在,ORB还允许调用适配器激活器创建所需的POA
●一旦请求被ORB传送到正确的机器与端口,监听该端口的POA管理器负责检查对象关键码(objectkey),对象关键码中含有POA名字与对象标识
●POA管理器利用对象关键码将请求传送给正确的POA
●POA利用对象关键码确定对象标识
●根据POA的策略集直接或间接地利用对象标识将请求传送到正确的伺服对象。
5.什么是IOC/DI,主要类型有哪些?
IOC:
控制反转即IoC(InversionofControl),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。
所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
DI:
依赖注入(DependencyInjection):
组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。
6.EJB组件有哪几种?
其特点分别是什么?
●EJB组件:
会话bean(维护会话):
表示客户同应用之间进行的会话,是一种商业处理过程对象。
实体bean(处理事务):
代表商业过程中处理的永久性的数据。
消息驱动Beans(Message-drivenBeans):
结合了会话bean和JMS的消息监听器的特性,可异步接收JMS消息。
●特点:
会话bean(维护会话):
-运行在服务器端,其数据需要自己管理
-客户通过sessionbean上的方法来同应用的业务逻辑层上的组件进行交互
-Sessionbean是短暂的,且只有在与之关联的会话存在时才存在
-会话Bean代表的是调用它的客户程序所完成的工作,是商务过程对象。
-他们执行商务逻辑、商务规则、算法和工作流程,他们是包含商务逻辑过程的可重用组件。
实体bean:
-表示存储在永久性数据存储位置的业务数据,是持久的对象。
-与会话bean不同,实体bean不维护客户端状态
-实体bean实例映射到存储在关系数据库表中的一行数据
-实体bean每一个实例都具有唯一的标识(主键)
-更复杂的entitybean可以代表数据库表间关联视图。
-实体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模式的一种实现,构建程序框架结构。
控制层组成:
ActionServlet和Action。
ActionServlet在MVC模型中扮演中央控制器的角色。
Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
控制器接受用户的输入并调用模型和视图完成用户的需求。
视图组成:
jsp和ActionFormBean。
ActionFormBean来进行视图和控制器之间表单数据的传递。
视图是用户看到并与之交互的界面。
视图向用户显示数据并接收用户的输入数据,而不进行业务处理。
视图也可以向模型查询业务状态,但不能改变模型。
模型部分组成:
javabean和EJB
模型是应用程序的主体部分。
模型表示业务数据和业务逻辑。
一个模型能为多个视图提供数据。
由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。
17.EJB组件各接口的含义和作用。
●会话和实体bean提供接口,消息bean不提供
●Home接口:
Home接口定义一组方法来创建新的EJB对象,查找、定位和清除已有的EJB对象。
●Remote接口:
EJB对象的Remote接口定义EJB构件中提供的可供用户调用的方法,也就是通常所说的实现商业逻辑的函数或过程(如计算商品价格的函数),以供远程客户端调用。
18.COM+的特性是什么?
●COM+对COM的增强和改进:
-增强了COMruntimelibrary
-增强了MTS(MicrosoftTransactionServer):
事务服务、安全服务
-提供了新的runtime服务:
队列服务、事件服务、负载平衡、(内存数据库)
●COM+把COM、DCOM和MTS的编程模型结合起来,继承了它们的绝大多数特性,在原有的特性上增加了新的功能
●利用COM+的服务和管理工具以及其它开发工具,开发一个COM+组件要比开发一个COM组件容易得多
COM+与COM相比较,COM+与Windows操作系统结合得更为紧密,集成了很多底层的、繁琐的工作
19.Servelet的执行过程?
最常使用的接口有什么?
●Servelet的执行过程:
1.加载,实例化和初始化servlet:
容器首先判断servlet的实例是否存在,若不存在,则容器加载该servlet,并从该servlet类创建实例.接着,容器调用init方法对该servlet实例进行初始化
2.调用该servlet的service方法:
假定该servlet实例存在,且已进行了初始化.则容器调用service方法,用其将一个请求对象和一个响应对象传给该servlet.
3.清除servlet的响应,将控制权返回给web服务器:
Servlet处理了请求后,响应被交给容器。
在容器将控制权返回给web服务器前,会将响应清除,然后由web服务器将该响应传送给客户
●接口:
Servlet对应的服务方法,有doGet,doPost等
20.Corba服务端程序解释。
21.J2EE中容器的作用
为组件提供与部署,执行,生命周期管理,安全和其他组件需求相关的服务。
22.DCOM组件的调用过程。
▪创建对象
1. 客户调用OLE32.DLL(COM库)中的函数,指定服务构件的ID(CLSID)
2. (COM)COM库查询系统注册表,找到包含该构件的应用程序,启动程序,从而创建构件实例,返回接口指针
3.(DCOM)通过COM库的SCM(ServiceControlManager)部分,在服务端查询系统注册表,找到包含该构件的应用程序,启动程序,从而创建构件实例,返回接口指针给用户端
▪对象通信(DCOM)
1. [客户]调用服务构件的方法
2. [本地]Proxy将方法调用中的参数打包,变成UNICODE在网上传输。
其间可以在参数表中传入传出数据,返回值表明通信成功与否。
3. [远端]Stub接收包,拆包,将参数传递给服务构件的相应方法
4. [远端]服务构件的方法实现处理参数并返回结果
23.实体bean与会话bean差别?
24.什么是MVC模式?
MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
⏹视图是用户看到并与之交互的界面。
⏹模型是应用程序的主体部分,表示业务数据和业务逻辑。
⏹控制器接受用户的输入并调用模型和视图完成用户的需求。
25.CORBA对象和伺服对象的关系。
●CORBA对象与具体的伺服对象是两个不同抽象层次的概念:
它们之间的彻底分离使得CORBA独立于任何特定程序设计语言,并为服务端程序的可移植性打下基础。
对象适配器是一个重要的ORB组件,它负责将抽象的CORBA对象映射到具体的伺服对象。
●CORBA对象可看作是一个具有对象标识、对象接口及对象实现的抽象实体。
之所以称为抽象的,是因为并没有硬性规定CORBA对象的实现机制。
由于独立于程序设计语言和特定ORB产品,一个CORBA对象的引用又称可互操作的对象引用(InteroperableObjectReference)。
从客户程序的角度看,IOR中包含了对象的标识、接口类型及其他信息以查找对象实现。
●伺服对象(servant)是指具体程序设计语言的对象或实体,通常存在于一个服务程序进程之中。
客户程序通过对象引用发出的请求经过ORB担当中介角色,转换为对特定的伺服对象的调用。
在一个CORBA对象的生命期中,它可能与多个伺服对象相关联,因而对该对象的请求可能被发送到不同的伺服对象。
●伺服对象通过对象标识关联到CORBA对象。
25.CORBA对象和伺服对象的关系。
●CORBA对象与具体的伺服对象是两个不同抽象层次的概念:
它们之间的彻底分离使得CORBA独立于任何特定程序设计语言,并为服务端程序的可移植性打下基础。
对象适配器是一个重要的ORB组件,它负责将抽象的CORBA对象映射到具体的伺服对象。
●CORBA对象可看作是一个具有对象标识、对象接口及对象实现的抽象实体。
之所以称为抽象的,是因为并没有硬性规定CORBA对象的实现机制。
由于独立于程序设计语言和特定ORB产品,一个CORBA对象的引用又称可互操作的对象引用(InteroperableObjectReference)。
从客户程序的角度看,IOR中包含了对象的标识、接口类型及其他信息以查找对象实现。
●伺服对象(servant)是指具体程序设计语言的对象或实体,通常存在于一个服务程序进程之中。
客户程序通过对象引用发出的请求经过ORB担当中介角色,转换为对特定的伺服对象的调用。
在一个CORBA对象的生命期中,它可能与多个伺服对象相关联,因而对该对象的请求可能被发送到不同的伺服对象。
●伺服对象通过对象标识关联到CORBA对象。
26.什么是SOAP?
有什么特点?
可采用的底层传输协议有哪些?
●SOAP:
SOAP是在松散的、分布的环境中使用XML交换结构化的和类型化的信息的一种简单协议。
●特点:
SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只定义了一种简单的以模块化的方式包装数据的机制。
●可采用的底层传输协议:
SOAP没有定义任何底层的传输协议。
可以使用HTTP、FTP、SMTP或者JMS,甚至是自定义协议来传输SOAP报文。
一般使用HTTP协议。
●从某种意义上讲,SOAP可以简单理解为:
HTTP+XML+RPC
HTTP作为底层通信协议
RPC作为一致性的调用途径
XML作为数据传输的格式
27.什么是UDDI、WSDL?
●UDDI(UniversalDescription,DiscoveryandIntegration):
是一套基于Web的WebService注册中心的实现标准规范。
(注册中心维护了一个WebService的全球目录,其中的信息描述格式是基于通用的XML格式的。
)包含注册WebService和发现WebService的访问协议的实现标准。
●WSDL(WebServiceDescriptionLanguage):
是采用XML语言来描述WebService的属性的语言,WSDL文档可以包含以下内容:
What:
WebService做什么,Where:
WebService位于哪里,How:
怎样调用。
如果将WebService作为一个分布式对象来看,WSDL就是WebService的接口描述语言(IDL)。
WSDL定义了一套基于XML的语法,将WebService描述为能够进行消息交换的服务访问点的集合。