什么是corba
由OMG制订的工具彼此操纵类型凡是称为“工具打点体系”(ObjectManagement Architecture,OMA)。OMA界说了两个组件:“焦点工具模子”(Core Object Model)和“OMA参考体系”(OMA Reference Model)。OMA参考体系界说了一套下层处事布局及机制,实现了工具彼此间举办操纵的本领。OMA参考体系包罗“工具请求署理”(Object Request Broker,ORB)、“工具处事”(Object Services,也称作CORBAservices)以及一些通用机制。
ORB是工具间彼此请求的一条通信总线。举办请求时,毋需体贴对方的物理位置在那边。这意味着在客户代码中看起来象一次方案挪用的进程实际长短常巨大的一次操纵。首先,必需存在与处事器工具的一条毗连途径。并且为了建设一个毗连,ORB必需知道详细实现处事器的代码存放在那边。建好毗连后,必需对要领自变量举办“搜集”。譬喻,将它们转换到一个二进制流里,以便通过网络传送。必需通报的其他信息包罗处事器的呆板名称、处事器历程以及对谁人历程内的处事器工具举办标识的信息等等。最后,这些信息通过一种初级线路协议通报,信息在处事器那一端解码,最后正式执行挪用。ORB将所有这些巨大的操纵都从措施员面前埋没起来了,并使措施员的事情险些和与挪用当地工具的要领一样简朴。
并没有硬性划定应如何实现ORB焦点,但为了在差异开拓商的ORB之间实现一种根基的兼容,OMG界说了一系列处事,它们可通过尺度接口会见。
1. CORBA接口界说语言(IDL)
CORBA是面向语言的透明而设计的:一个客户工具可挪用属于差异类的处事器工具要领,无论对方是用何种语言实现的。虽然,客户工具事先必需知道由处事器工具展现的要领名称及签名。这时便要用到IDL。CORBA IDL是一种与语言无关的设计要领,可用它指定命据范例、属性、操纵、接口以及更多的对象。IDL的语法雷同于C++或Java语法。下面这张表格为各人总结了三种语言一些通用观念,并展示了它们的对应干系。
CORBA IDL Java C++
模块(Module) 包(Package) 定名空间(Namespace)
接口(Interface) 接口(Interface) 纯抽象类(Pure abstract class)
要领(Method) 要领(Method) 成员函数(Member function)
担任观念也得到了支持——就象C++那样,同样利用冒号运算符。针对需要由处事器和客户实现和利用的属性、要领以及接口,措施员要写出一个IDL描写。随后,IDL会由一个由厂商提供的IDL/Java编译器举办编译,后者会读取IDL源码,并生成相应的Java代码。
IDL编译器是一个相当有用的东西:它不只生成与IDL等价的Java源码,也会生成用于搜集要领自变量的代码,并可发出长途挪用。我们将这种代码称为“根干”(Stub and Skeleton)代码,它组织成多个Java源文件,并且凡是属于同一个Java包的一部门。
2. 定名处事
定名处事属于CORBA根基处事之一。CORBA工具是通过一个引用会见的。尽量引用信息用我们的眼睛来看没什么意义,但可为引用分派由措施员界说的字串名。这一操纵叫作“引用的字串化”。一个叫作“定名处事”(Naming Service)的OMA组件专门用于执行“字串到工具”以及“工具到字串”转换及映射。由于定名处事饰演了处事器和客户都能查询和操纵的一个电话本的脚色,所以它作为一个独立的历程运行。建设“工具到字串”映射的进程叫作“绑定一个工具”;删除映射干系的进程叫作“打消绑定”;而让工具引用通报一个字串的进程叫作“理会名称”。
好比在启动的时候,处事器应用可建设一个处事器工具,将工具同定名处事绑定起来,然后等待客户发出请求。客户首先得到一个处事器引用,理会出字串名,然后通过引用发出对处事器的挪用。
同样地,“定名处事”类型也属于CORBA的一部门,但实现它的应用措施是由ORB厂商(开拓商)提供的。由于厂商差异,我们会见定名处事的方法也大概有所区别。