中间件技术复习提纲.docx
- 文档编号:24088203
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:13
- 大小:437.58KB
中间件技术复习提纲.docx
《中间件技术复习提纲.docx》由会员分享,可在线阅读,更多相关《中间件技术复习提纲.docx(13页珍藏版)》请在冰豆网上搜索。
中间件技术复习提纲
复习提纲
考试题型:
一、填空题(本大题共小题,共30空,每空1分,总计30分)
二、问答题(本大题共4小题,每小题5分,总计20分)
三、编程题(本大题共1小题,每小题50分,总计50分)
1、开放系统公认的“必具特征”
可移植性,可互操作性,可伸缩性,易获得性
2、开放系统技术在信息技术领域已经得到了广泛应用,一个开放系统可以用其“轮廓(ProfiIe)”来勾划,轮廓由七个成分所组成。
系统管理,用户界面、安全性、编程服务、互操作服务、通信服务、信息实体
3、CORBAORB的优点:
静态和动态方法调用、高级语言绑定、位置透明、内置安全和事务处理、与遗留系统共存
4、国外学术界明确地给出了中间件的定义,并画出中间件的定义图。
中间件是一种软件,它能使处于应用层中的各应用程序之间实现跨网络协议的协同工作(也就是互操作),这时允许各应用层成分所涉及的“系统结构、操作协议、通信协议、数据库和其他应用服务”各不相同。
5、作为一个中间件,它应该具有两个部分。
执行环境(ExecutionEnvironment)软件(简称EE软件)、应用开发(ApplicationDevelopment)工具(简称AD工具)
6、中间件对于应用之间的协同工作的真正贡献,并画出中间件的层次结构图。
提供了合作对象透明设施和下层设备透明设施
7、传统上认为中间件可以分为三类。
事务处理中间件,消息中间件,分布式中间件
8、从应用程序来说,利用中间件可以获得的优点。
透明的地同其他应用程序进行交互、与平台提供的网络通信服务无关,具有良好的可靠性和可用性,具有良好的可扩展性
9、RMI体系结构由三层组成。
桩(也称为存根)/框架层(stub/skeleton)、远程应用层(RemoteReference)、传输层(Transport)
10、在RMI体系中,一个远程对象客户端的桩要负责处理多项任务:
初始化并与远程对象所在的远程虚拟机连接;将参数打包,然后传递到远程虚拟机;等待方法调用的结果;解包返回值和异常;将值返回给调用者。
11、ORB的最重要的特征是,提供了客户与目标对象之间的交互透明性。
具体地说,它主要屏蔽了哪些内容?
对象位置,对象的执行状态,对象通信机制,数据表示。
12、编写一个基本的DCE应用,应用开发者应当提供三个文件:
(界面定义文件)、(客户程序)、(服务器程序)
界面定义文件:
它定义了服务器所提供的远程过程调用的界面(数据结构、过程名、参数)。
客户程序:
它定义了用户界面,对远程过程的调用及客户方的处理功能。
服务器程序:
它提供远程过程调用的实现。
13、作为一个中间件DCE提供着两类服务:
基本服务和扩充性服务。
基本服务包括哪些?
扩充性服务包括哪些?
基本服务:
线程服务、RPC服务、目录服务、和安全服务
扩充性服务:
分布式文件服务、时间服务。
14、DCE对于安全涉及4个方面。
认证、安全通信、授权、审计
15、在国际标准化组织ISO/IEC和ITU的共同努力下,于1995年发布出了开放式分布处理参考模
型RM-ODP,ODP的功能有哪些?
管理功能、协作功能、复制功能、仓库功能、安全功能、抵赖功能
16、RM-ODP标准把对ODP系统的说明细化为五个观点。
企业观点:
关注系统的目标、范围和策略
信息观点:
关注信息和所执行的信息处理的语义
计算观点:
将系统功能分解为在界面处相互作用的对象,来达到分布的目的
工程观点:
关注支持系统中对象间分布式相互作用所需要的机制和功能
技术观点:
关注改系统所用技术的选择
17、作为交互的前提,计算界面之间的绑定是至关重要的,计算语言定义了三种绑定方式。
操作绑定(支持操作的调用)、流绑定(支持连续媒体)和信号绑定(支持实时事件)
18、COM技术经历了哪5个阶段的演变,每个阶段都代表了COM的一个应用层次和应用领域。
DLL、OLE、COM、DCOM、COM+
19、在COM技术中,核心概念是哪两个。
组件:
具有一定逻辑功能的可执行代码。
是组成应用程序的构件。
借口:
对其他软件和组件能使用的公共功能的定义,是组建与外界的交互通道
20、为了保证多个开发商之间的基于CORBA的EJB产品之间的互操作性,规范定义了EJB到CORBA的映射,分为四个部分。
分布映射、命名映射、事物映射、安全性映射
21、DCOM是分布式应用环境中的COM技术,DCOM的整体结构图。
22、COM+技术是WindowsDNA框架中的中间层技术,它扩展并增加了哪些企业应用功能?
事务服务(使COM对象可以创建、使用和提交事物)、安全服务(提供基于角色的安全检查)、同步服务(对多线程并发访问的协调机制)、消息队列组件(组件的异步通信机制)、事件服务(用于“发行—订阅”调用关系的一种通信方式)和集成的管理工具(组件服务浏览器可以完成对COM+对象的管理,完成组建的发型、管理和监测等任务—)等。
23、EJB的主要组成部分。
EJB组件、容器、服务器、EJB对象(object)和EJBHome
24、EJB中的bean可以分为几种?
会话bean(维护会话)、实体bean(处理事务)、消息bean(提供异步消息机制)
25、会话bean可进一步分为两种。
无状态(不维护客户端状态)、有状态(维护客户端状态)
26、为了开发一个由两个可执行部分(一个是客户机,另一个是服务)所组成的C++CORBA应用程序。
通常需要执行以下几个步骤:
(1)确定府用程序的对象,定义它们在IDL中的接口。
(2)将IDL定义编译成c++的存根和框架。
(3)声明和实现能具体化CORBA对象的c++伺服类。
(4)编写一个服务器main程序。
(5)将所创建的在服务器上可以执行的存根和框架,编译和连接成服务器实现文件。
(6)与生成的存根一起编写、编译和连接客户机程序代码。
27、通过C++编写一段CORBA小程序(教材第五章的例子)
28、通过java编写一个CORBA小例子。
1)首先要熟悉idlj语言,这个是专门进行接口设计的语言,它与java没关系,有自己的语法,具体的规则需要大家自己再网上研究,这里不多说了
moduleHelloApp
{
interfaceHello
{
stringsayHello();
onewayvoidshutdown();
};
};
这里定义了一个简单的interface,将其保存为hello.idl,然后再dos命令框里面输入idlj.exe-fallhello.idl编译。
之后会出现一个叫做HelloApp的目录,corba就是通过这个目录里面的类来进行c-s之间的数据沟通。
2)下一步,就是我们的server端:
//AserverfortheHelloobject
importHelloApp.*;
importorg.omg.CosNaming.*;
importorg.omg.CosNaming.NamingContextPackage.*;
importorg.omg.CORBA.*;
importorg.omg.PortableServer.*;
importorg.omg.PortableServer.POA;
importjava.util.Properties;
publicclassHelloServer{
publicstaticvoidmain(Stringargs[]){
try{
//createandinitializetheORB
ORBorb=ORB.init(args,null);
//getreferencetorootpoa&activatethePOAManager
POArootpoa=
(POA)orb.resolve_initial_references("RootPOA");
rootpoa.the_POAManager().activate();
//createservantandregisteritwiththeORB
HelloImplhelloImpl=newHelloImpl();
helloImpl.setORB(orb);
//getobjectreferencefromtheservant
org.omg.CORBA.Objectref=
rootpoa.servant_to_reference(helloImpl);
//andcastthereferencetoaCORBAreference
Hellohref=HelloHelper.narrow(ref);
//gettherootnamingcontext
//NameServiceinvokesthetransientnameservice
org.omg.CORBA.ObjectobjRef=
orb.resolve_initial_references("NameService");
//UseNamingContextExt,whichispartofthe
//InteroperableNamingService(INS)specification.
NamingContextExtncRef=
NamingContextExtHelper.narrow(objRef);
//bindtheObjectReferenceinNaming
Stringname="Hello1";
NameComponentpath[]=ncRef.to_name(name);
ncRef.rebind(path,href);
System.out.println
("HelloServerreadyandwaiting...");
//waitforinvocationsfromclients
orb.run();
}
catch(Exceptione){
System.err.println("ERROR:
"+e);
e.printStackTrace(System.out);
}
System.out.println("HelloServerExiting...");
}//endmain
}//endclass
将其保存为HelloServer.java.放在刚才的hello.idl的目录。
编译这个文件就不多说了。
3)还记得在hello中定义的interface吗?
我们需要对自己定义的接口中的方法进行实现,因此HelloImp.java
//Theservant--objectimplementation--fortheHello
//example.NotethatthisisasubclassofHelloPOA,whose
//sourcefileisgeneratedfromthecompilationof
//Hello.idlusingj2idl.
importHelloApp.*;
importorg.omg.CosNaming.*;
importorg.omg.CosNaming.NamingContextPackage.*;
importorg.omg.CORBA.*;
importorg.omg.PortableServer.*;
importorg.omg.PortableServer.POA;
importjava.util.Properties;
classHelloImplextendsHelloPOA//必须继承这个类,在helloApp目录中已自动生成
{
privateORBorb;
publicvoidsetORB(ORBorb_val){
orb=orb_val;
}
//implementsayHello()method
publicStringsayHello()
{
return"\nHelloworld!
!
\n";
}
//implementshutdown()method
publicvoidshutdown(){
orb.shutdown(false);
}
}//endclass
同样放在server所在目录中。
4)接下来是客户端(HelloClient.java):
//AsampleJavaIDLobjectclientapplication.
importHelloApp.*;
importorg.omg.CosNaming.*;
importorg.omg.CosNaming.NamingContextPackage.*;
importorg.omg.CORBA.*;
publicclassHelloClient
{
staticHellohelloImpl;
String[]x=newString[6];
publicstaticvoidmain(Stringargs[]){
try{
//createandinitializetheORB
ORBorb=ORB.init(args,null);
System.out.println("ORBinitialised\n");
//gettherootnamingcontext
org.omg.CORBA.ObjectobjRef=
orb.resolve_initial_references("NameService");
//UseNamingContextExtinsteadofNamingContext,
//partoftheInteroperablenamingService.
NamingContextExtncRef=
NamingContextExtHelper.narrow(objRef);
//resolvetheObjectReferenceinNaming
Stringname="Hello1";
helloImpl=
HelloHelper.narrow(ncRef.resolve_str(name));
System.out.println
("Obtainedahandleonserverobject:
"
+helloImpl);
System.out.println(helloImpl.sayHello());
helloImpl.shutdown();
}
catch(Exceptione){
System.out.println("ERROR:
"+e);
e.printStackTrace(System.out);
}
}//endmain
}//endclass
这个文件最好放在一个新建的目录,已表示和server有区别,放在一起也没有关系。
如果分开的话,记着把HelloApp这个目录复制到client的目录来。
5)好啦!
已经可以开始爽了,我们编译所有的java文件
6)再dos窗口输入orbd.exe–ORBInitialPort1234(端口号可以自定义,但是记得s-c要保持一致),启动corba服务。
7)启动服务器:
javaHelloServer–ORBInitialPort1234–ORBInitialHostlocalhost
8)启动客户端:
javaHelloClient–ORBInitialPort1234–ORBInitialHostlocalhost
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间件 技术 复习 提纲