- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CORBA技术及实例
作者:easyinfonet
email: easyinfonet@
日期:2000-11-14 23:15:19
5.3 CORBA技术及实例
CORBA是一种规范,它定义了分布式对象如何实现互操作。在WorldWideWeb盛行之前,特别是Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。
实际的CORBA规范归对象管理组(ObjeotManagementGroup)管辖,这是一家由700多家公司组成的开放的研讨会,其工作是制订对象计算的开放标准。CORBA对象可以用任何一种CORBA软件开发商所支持的语言,如C、C++、Java、Ada和Smalltalk,来编写。同样地,CORBA对象可以运行在任何一种CORBA软件开发商所支持的平台上,如Solaris,Windows95/NT,OpenVMS、DigitalUnix、HP-UX或AIX等。这意味着,我们可以在Windows95下运行Java应用程序,同时动态调入并使用C++对象,而实际上,该对象可能存储于一个在Internet上的UnixWeb服务器上。
使用 接口描述语言(InterfaceDescriptionLanguage)编写的对象接口,使得与语言无关的独立性成为可能。IDL使得所有CORBA对象以一种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA、Java)到IDL的“桥梁”。CORBA对象的互通信要以对象请求解析器(Object Request Broker)为中介,这种互通可以在多种流行通信协议之上(如TCP/IP或是IPX/SPX)实现。在TCP/IP上,来自于不同开发商的ORB用InternetInter-Orb协议(IIOP)进行通讯,这是CORBA2.0标准(最新的版本)的一部分。
目前,对于较为流行的编程语言(包括C++,Smalltalk,Java和Ada95),已经有了许多第三方的ORB。随着其他语言的逐渐流行,CORBA开发商毫无疑问地要做出相应的ORB来支持它们。
5.3.1 CORBA简介
最初,OMG在1990年制订了对象管理体系(ObjectManagementArchitecture),即OMA,来描述应用程序如何实现互操作。作为其中的一部分,需要有一个标准规范应用程序片段即对象的互操作──这导致了CORBA的诞生。OMA定义了组成CORBA的四个主要部分。(图1.1)
图1.1 OMG的CORBA参考模型
l Object Request Broker,ORB作为对象互通讯的软总线。
l Object Services,定义加入ORB的系统级服务,如安全性、命名和事务处理。
l Common Facilities定义应用程序级服务,如复合文档等。
l Application Interface 定义现实世界的对象和应用,如飞机或银行帐户。
1.ObjectRequestBroker详述
OMA最重要的部分就是ORB。为了创建一个遵从CORBA规范的应用程序,ORB是CORBA四大部分中唯一必须提供的。许多ORB版本根本不带CORBAServices或是CORBAFacilities,你可以自制(或购买)商用对象。但是,没有ORB,CORBA应用程序绝对无法工作。(图5.2)
图5-.2 单个ORB的体系结构
CORB ORB最显见的功能,是对你的应用程序或是其它ORB的请求予以响应。在CORBA应用程序运行期间,你的ORB可能被请求做许多不同的事情,包括:
l 查找并调用远程计算机上的对象
l 负责不同编程语言之间的参数转换(如C++到Java)
l 可超越本机界限的安全管理
l 为其它的ORB收集并发布本地对象的metadata
l 用下载的代码(stub)中描述的静态方法调用去击活远程对象中的方法
l 用动态方法调用击活远程对象
l 自动击活一个当前没有装入内存运行的对象。
l 将回调方法导引向其管理之下的本地对象
实现细节对软件开发者的透明性,是ORB的一个杰出的特性。用户只须在代码中提供相应的hooks,用于初始化ORB并向ORB登记该应用程序,就可以将该应用程序和大量分布式对象建立联系。
2.用IDL描述对象
为了保持CORBA的商业中立性和语言中立性,必须有一个中介,存在于象C++CORBA服务器代码和JavaCORBA客户机这样的实体之间。这就是IDL。一个底层对象的若干相关方法和属性被IDL集入一个单一接口。一旦IDL接口定义完成,它可以以stub码或框架代码(skeletoncode)的形式编译成你选用的语言。在所有的ORB
文档评论(0)