Chap8-基于分布构件的体系结构_第1页
Chap8-基于分布构件的体系结构_第2页
Chap8-基于分布构件的体系结构_第3页
Chap8-基于分布构件的体系结构_第4页
Chap8-基于分布构件的体系结构_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章:基于分布构件的体系结构,董威,文艳军,陈振邦国防科技大学计算机学院,软件设计与体系结构,2,基于分布构件的系统体系结构,3,内容,8.1EJB分布构件框架8.2DCOM分布构件框架8.3CORBA分布构件框架,4,8.1EJB分布构件框架,简介:EJB(EnterpriseJavaBean)分布构件框架由SUN公司主导制定,它基于Java语言,面向企业级的分布式系统开发。,5,8.1EJB分布构件框架,实例:HelloWorldEJB构件HelloWorldBean文件HelloWorldBean.java:,6,8.1EJB分布构件框架,实例:HelloWorldEJB构件HelloWorldBean文件HelloWorld.java:,7,8.1EJB分布构件框架,实例:HelloWorldEJB构件HelloWorldBean编译上述两个文件,便能够得到两个类文件HelloWorldBean.class和HelloWorld.class,它们分别描述了EJB构件HelloWorldBean和它的远程接口HelloWorld。将这两个类放在Jboss安装目录的examplesserver子目录下,然后打包成一个文件HelloWorld.jar。至此,EJB构件HelloWorldBean就开发好了。,8,8.1EJB分布构件框架,实例:HelloWorldEJB构件HelloWorldBean的部署在开发完EJB构件之后,需要将其部署到EJB应用服务器中。对于Jboss,在成功启动之后,只需要将上述的文件HelloWorld.jar直接拷贝到Jboss安装目录下的一个特定子目录中,Jboss就会自动完成EJB构件HelloWorldBean的部署。,9,8.1EJB分布构件框架,实例:HelloWorldEJB客户HelloWorldClient的开发,10,8.1EJB分布构件框架,实例:HelloWorld测试编译完文件HelloWorldClient.java后,即可运行命令“javaexamples.client.HelloWorldClient”,结果如下所示:,11,8.1EJB分布构件框架,原理分析:本实例中定义的三个类之间的关系如下图所示。构件HelloWorldBean的实例由构件容器负责创建。,12,8.1EJB分布构件框架,原理分析:本实例中定义的三个类之间的关系如下图所示。构件HelloWorldBean的实例由构件容器负责创建。,13,8.1EJB分布构件框架,原理分析:RMI原理,14,8.1EJB分布构件框架,其它说明:在EJB构件框架下,客户端可以有各种不同的形式,如下图所示。无论简单的Java程序,还是Web容器或者客户容器中的Java程序,它们都遵守上述的EJB构件框架,即通过远程对象的存根访问EJB容器中的会话Bean。,15,内容,8.1EJB分布构件框架8.2DCOM分布构件框架8.3CORBA分布构件框架,16,8.2DCOM分布构件框架,DCOM(DistributedComponentObjectModel,分布构件对象模型)是一个二进制代码层面的构件模型,由微软公司于1995年左右提出,从COM(ComponentObjectModel,构件对象模型)扩充而成。按照这个模型,以二进制形式存在的构件可以被远程客户透明访问。,17,8.2DCOM分布构件框架,基本概念DCOM客户:泛指所有与DCOM构件交互的程序片断。如果一个DCOM构件要与其他DCOM构件交互,那它同时也是一个DCOM客户。DCOM构件:是具有特定格式要求的动态链接库(DLL)文件或可执行(EXE)文件。对象、类和类工厂接口接口的代理/残桩DLL,18,19,8.2DCOM分布构件框架,整体结构,20,8.2DCOM分布构件框架,实例:HelloWorld,共包含十个文件:HelloComponent.cpp、HelloComponent.h:包含EXE构件的主函数WinMain()和相关代码。HelloClass.cpp、HelloClass.h:包含EXE构件向外提供的类CHelloClass的定义、以及向外提供的工厂类CFactory的定义。Hello.idl:定义类CHelloClass向外提供的接口IHello。既用于EXE构件,也用于客户程序。HelloClient.cpp:客户程序。Registry.cpp、Registry.h:包含一些辅助函数的定义,用于访问Windows注册表。Makefile、HelloProxy.def,21,8.2DCOM分布构件框架,实例:HelloWorldEXE构件主程序(HelloComponent.cpp),22,8.2DCOM分布构件框架,实例:HelloWorldEXE构件中的工厂类CFactory,23,8.2DCOM分布构件框架,实例:HelloWorldEXE构件中的类CHelloClass,24,8.2DCOM分布构件框架,实例:HelloWorld类CHelloClass的接口IHello,25,8.2DCOM分布构件框架,实例:HelloWorld类CHelloClass的接口IHello:Hello.idl,26,8.2DCOM分布构件框架,实例:HelloWorldEXE构件HelloComponent.exe的生成和部署:部署时,需要将HelloComponent.exe和HelloProxy.dll拷贝到服务器上,并应该将它们都注册到服务器上的DCOM系统中。注册HelloProxy.dll的命令是“Regsvr32HelloProxy.dll”;注册HelloComponent.exe的命令是“HelloComponent.exe-regserver”,也就是说它能够自我注册。,27,8.2DCOM分布构件框架,实例:HelloWorld客户程序(HelloClient.cpp),28,8.2DCOM分布构件框架,实例:HelloWorld客户程序(HelloClient.cpp):客户端请求服务器创建对象的过程,29,8.2DCOM分布构件框架,实例:HelloWorld客户方的部署和测试:将HelloClient.exe和HelloProxy.dll拷贝到客户机上,并将HelloProxy.dll注册到客户机上的DCOM系统中。,30,8.2DCOM分布构件框架,对原理的进一步分析:客户与EXE服务构件之间有三次直接的交互,如图上的数字6、8、9所标识。但在分布环境下,客户是不可能直接与EXE构件在接口层面直接交互的。实际上,上述三次交互都是由本地机器上的代理对象或残根对象完成的,而这些代理对象和残根对象都是由前面生成的代理/残根动态链接库HelloProxy.dll生成,只不过这个过程由DCOM系统控制,外界看不到而已。,31,32,内容,8.1EJB分布构件框架8.2DCOM分布构件框架8.3CORBA分布构件框架,33,8.3CORBA分布构件框架,CORBA(CommonObjectRequestBrokerArchitecture,分布对象请求代理体系结构)是一种异构平台下的语言无关的分布对象互操作模型。由OMG(ObjectManagementGroup,对象管理组织)于1990年首次提出,后经过多版改进,最新的CORBA规范是2008年发布的3.1版。,34,8.3CORBA分布构件框架,基本体系结构,35,8.3CORBA分布构件框架,基本体系结构,36,8.3CORBA分布构件框架,基本体系结构,37,8.3CORBA分布构件框架,实例分析:HelloWorld,包含四个文件和七个Java类,38,8.3CORBA分布构件框架,实例分析:HelloWorld接口的定义(Hello.idl),39,8.3CORBA分布构件框架,实例分析:HelloWorld服务器端的对象实现类的定义HelloImpl.java,40,8.3CORBA分布构件框架,实例分析:HelloWorld服务器端的主程序(Server.java),41,8.3CORBA分布构件框架,实例分析:HelloWorld客户端程序(Client.java),42,8.3CORBA分布构件框架,实例分析:HelloWorld

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论