CORBA ORB

Posted mypods

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CORBA ORB相关的知识,希望对你有一定的参考价值。

http://xxj.iteye.com/blog/212311

对象请求代理(ORB) 

        对象请求代理(Object Request Broker , ORB)是对象总线,它可以让对象透明的向本地或远程的其他对象发送请求或从那里接受响应。ORB使对象可以在运行时相互发现和调用对方的服务。 
        ORB是对象间建立客户/服务器关系的中间件。通过使用ORB,一个客户对象可以透明的调用服务器对象的方法。客户/服务器的角色仅仅是用于协调两个对象之间的交互。ORB的对象根据场合的不同既可以充当客户,也可以充当服务器。 
CORBA中间件       
CORBA ORB 的客户端和服务器端工作  
客户端:  
         客户端IDL存根(Client IDL Stubs)  
为对象服务器提供静态的接口。这些预编译的存根定义了客户如何调用服务器上的相应服务。从客户的角度来看,存根像是一个本地调用,它是一个远程服务器对象的本地代理。服务由IDL定义,而客户和服务器的存根都由IDL编译器生成。对于它所使用的服务器上的每一个接口,客户都必须有一个IDL存根。 
         动态调用接口(DLL) 让你可以在运行时找到调用的方法。 
         接口池API 允许获得和修改所有有关已注册的组件接口以及它们支持的方法和它们所需的参数的描述。CORBA称这些描述为方法标记。我们可以把接口池看作是一个动态的ORB元数据池。 
        ORB接口由一些API组成,这些API用于定位可能与应用程序有关的本地服务。 
        全局池ID是ORB提供的全局标志符,称为池ID(Repository ID)用来在多个销售商ORB和池的环境下唯一且全局的标志一个组件和它的接口。池ID是系统生成的、唯一的字符串,以便维护对多个池的命名规则的一致性,它不允许有任何名称冲突。池ID是在IDL中通过指令 pragmas 生成的。池ID自身是个字符串,由三级名称层次结构组成。 
        
服务器端: 
        服务器IDL存根(OMG称其为框架)
为每一个服务区输出的服务提供静态接口。由IDL编译器创建。 
         动态框架接口(DSI) 为那些需要处理收到的对某些组件的方法调用的服务器提供了一种运行时动态绑定机制,这些被调用的组件不具备给予IDL编译的框架(或存根)。 
        对象适配器位于ORB核心通信服务的顶层,为代表服务器对象的服务接受请求。它提供运行时环境来初始化服务器对象、将请求传给它们并且分配它们的对象ID —— CORBA 称这种ID为对象引用。对象适配器也用实现池纪录它支持的类和它们运行时的实例(如对象)。 
         实现池(Implementation Repository) 提供了运行时信息池,里面存放了关于服务器支持的类、被实例化的对象以及它们的ID信息。它还提供了一个公共场所,用于存储与ORB实现相关的附加信息。 
        ORB接口由一些API组成,用于定位本地服务。 
        
        同时支持动态和静态客户/服务器调用以及接口池的特性提高了CORBA的性能。静态调用更易于编程、更快,且可以自己生成文档。动态调用提供了最大的灵活性,但编程起来比较困难。动态调用对于那些在运行时寻找服务的工具非常有用。服务器端无法区别动态和静态调用,这两种调用都含有相同的消息语义。这两种情况下,ORB都是通过服务器IDL存根找到服务器对象适配器、传递参数、将控制转交给对象实现。 

以上是关于CORBA ORB的主要内容,如果未能解决你的问题,请参考以下文章

CORBA 应用程序必须以与 ORB 相同的语言实现吗?

org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService") 上的错误;

CORBA orb.resolve_initial_references("ORBPolicyManager");不工作

CORBA ORB 运行时定义本地 IP 接口使用

如何更改标准JDK corba ORB线程池的线程名称

尝试使用 corbaloc url 连接到 CORBA 服务