ORB的工作原理.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORB的工作原理

改进 RPC 的功能,现在我们介绍以下两种方法: 分布式对象,也称为对象请求代理(Object Request Broker,ORB):此方法侧重于代码重用和语言独立性。 异步消息传递:此方法解决了应用程序之间的紧密耦合问题。 让我们首先了解一下分布式对象这一方法,因为它与 RPC 的关系更密切一些。目前,大多数应用服务器都基于 ORB 技术。 分布式对象:对象请求代理 分布式对象技术的实现有三个主要类型。其中之一就是语言独立性和平台独立性,即所谓的公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)。其他技术则依赖于语言或者依赖于平台和语言。Java 远程方法调用 (RMI) 是依赖于语言技术的示例,而 Microsoft 分布式对象组件模型 (DCOM) 和 IBM? 系统对象模型 (SOM) 是依赖于平台技术的示例。 现在我们将详细介绍 CORBA,因为它是最常见(独立于语言和平台)的技术,并且来自不同供应商且基于此技术的产品可以一起使用。例如,基于 ORB 的 IBM WebSphere? Application Server 可以与许多其他供应商的应用服务器通信。 除引入面向对象的优点(如继承、多态性和封装)外,CORBA 还引入了大量的新功能。最重要的可能要数 ORB 这一概念,ORB 提取了用于封送输入和输出参数的代码和用于从客户端和服务器应用程序到独立软件组件通信的代码。另外,ORB 还提供了用于获取远程对象引用的设备,以便调用该远程对象上的方法。 此分离允许多个应用程序重用同一代码,并通过从点到点的集成中移去应用程序,使这些应用程序之间能够进行一定程度的分离。从点到点的集成中移去应用程序可能是 ESB 概念发展的第一步。图 1 演示了这一情况,该图显示了同一台计算机上的多个应用程序可以使用同一 ORB 相互通信,并可以与不同计算机上的应用程序进行通信。 图 1. 多个应用程序通过 ORB 相互通信,演示代码重用和通过 ESB 的间接通信(ESB 方向的第一步) 图 2 显示了 ORB 的基本工作原理。当应用程序需要使用另一个组件的服务时,它首先获取提供该服务的对象的引用。获取对象引用后,客户端应用程序可以调用该对象上的方法,该对象就好像是本地对象。 图 2. 远程对象上使用 ORB 的方法调用,包括获取远程对象引用 CORBA 还引入了接口定义的语言独立性概念。这是通过引入接口定义语言 (IDL)(类似于 C++ 编程中的头文件)完成的。它只定义接口,但不包括实现。IDL 负责确保在不同的语言之间正确地交换数据,从而负责 CORBA 的语言独立性。这允许使用一种语言(如 C++)实现客户端,使用另一种语言(如 Java)实现服务器。清单 1 显示了一个 IDL 示例。 清单 1. IDL 接口定义示例,它使用单个远程操作为计算数的平方定义单个接口 module Test { interface square attribute double arg1; double getSquare (in double arg1); }; }; CORBA 中提出的另一个重要概念是命名服务,它允许 CORBA 对象注册,并按名称查找这些对象。此概念包含了 SOA 中注册概念所需的种子。 总的说来,CORBA 引入了大量的新功能,并允许重用通信代码,对代码进行封送和解封送处理。远程对象的注册和位置概念、语言独立性接口定义和从点到点集成移除是引入的重要新功能。因此,对于许多集成项目,基于 ORB 的解决方案可能是合适的选择。不过,使用基于 ORB 的集成存在一些缺点,因此,在某些情况下,这可能不是最佳选择。其中的一些注意事项包括: 基于 ORB 的解决方案无法进行大容量扩展,因此,在希望处理大量的事务时,该解决方案并不合适。缺乏扩展性是由于交互操作的同步特性,该特性使客户端应用程序在收到服务器的响应之前无法继续进行其工作。 客户端对象和服务器对象之间的交互粒度太细,在网络中会导致许多问题。因此,无法有效地使用网络带宽,这将进一步限制解决方案的可扩展性。 基于 ORB 的通信是不可靠的,无法保证将消息和返回值发送到既定目标。因此,在某些情况下(如网络连接中的中断),客户端应用程序在其操作过程可能会发生挂起。 尽管从理论上讲,CORBA 是独立于语言的,但是,使用 ORB 的大多数商业产品都是特定于语言的,如 Java 或 Java 2 Platform Enterprise Edition (J2EE)。这是因为 CORBA 开放标准已证明由于太难而无法实现最常见的形式。这限制了

文档评论(0)

docindpp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档