CORBA
此条目需要扩充。 (2018年7月22日) |
此条目没有列出任何参考或来源。 (2018年7月22日) |
CORBA(Common Object Request Broker Architecture)又叫通用物件请求代理架构,是软件构建的一个标准。
CORBA标准由物件管理组织(OMG)设立并进行控制,CORBA定义了一系列API,通信协议,和物件/服务资讯模型用于使得异质应用程式能够互相操作,这些应用程式用不同的编程语言编写,运行在不同的平台上。CORBA因此为定义明确的物件提供了平台和位置的透明性,这些物件是分布式计算平台的基础。
通常来说,CORBA把用其他语言开发的程序代码和关于该程序代码能力和如何调用该程序代码的资讯包到一个开发包(package)中,开发包中的物件则可以在网络上被其他程序(或CORBA物件)调用。在这个意义上来讲,CORBA可以被看作是一个机器可读的文档文件格式,类似于头文件(header),但是具有相当多的资讯。
CORBA使用一种接口描述语言(Interface description language)用于刻画物件将呈现出来的接口。CORBA又规定了从IDL到特定编程语言,如C++或Java,实现的映射。这个映射精确的描述了CORBA数据类型是如何被客户端和服务端实现的。标准映射的有Ada、C、C++、Smalltalk、Java、以及Python。还有一些非标准的映射,为Perl和Tcl的映射由这些语言写的ORB实现。
CORBA的IDL只是IDL的一个例子。
在提供用户语言和平台中性的远程过程调用规范的同时,CORBA也定义了通常需要的服务,例如事务和安全。
CORBA的主题
编辑对象按引用传递
编辑对象的引用可以通过以下几种方式获得:通过URI直接指定对象位置、通过类似于DNS的名称服务查找、调用时通过参数传递。
对象引用是指向真实对象(本地或远程)的轻量级方式。调用对象引用(通常就是指针)的方法,实际上是通过ORB调用了实际对象的方法,调用会阻塞当前线程直到远端返回结果。参数和返回结果以及抛出的异常都会被ORB集中传递。
数据按值传递
编辑CORBA的数据(整数、浮点数、结构、枚举等)是通过值传递。
通用ORB间协议(GIOP)
编辑GIOP是用于ORB间数据传输的抽象协议,通用ORB间协议(GIOP)用来为这个由不同电脑及其各种体系结构组成的世界中传送消息定义结构和格式。如果使用GIOP的结构和格式,并将它们应用于TCP/IP,那么就得到IIOP。GIOP有两个版本:1.0和1.1。相关协议标准由Object Management Group(OMG)管理. GIOP架构提供了如下具体协议:
- 因特网ORB间协议(IIOP)—定义了基于因特网的GIOP实现,提供了TCP/IP到GIOP的映射。
- 加密ORB间协议(SSLIOP)—SSLIOP是基于SSL加密层的IIOP,提供了加密和认证。
- 超文本ORB间协议(HTIOP)—HTIOP是基于HTTP的IIOP,提供了透明代理穿越。
- 还有很多……
Corba对象位置(CorbaLoc)
编辑Corba对象位置(CorbaLoc)是指一个由字符串构成的对象引用,看起来就像一个URL。
CORBA产品需要支持两种OMG定义的URL:"corbaloc:"和"corbaname:"。Corba对象位置的目的是提供一个便于人阅读和修改的方式指定何处可以获得某个可互操作对象(IOR)。
corbaloc的例子:
- corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
使用Corba的好处
编辑- 与具体编程语言无关
- Java and C++, C-only, SmallTalk, Perl, Ada, Ruby, and Python等语言都有CORBA的实现,并且可以跨语言互操作。
- 操作系统无关
- Linux/Unix, Windows, Sun, Mac等系统都有CORBA的实现,并且可以互操作。
- 从技术细节中解脱
- 强数据类型
- 从繁琐的数据传递中解脱
- 压缩
- CORBA的底层数据通讯机制灵活,ZIOP扩展可以将数据压缩后进行传送,而应用程式开发人员可以不懂具体压缩技术,并且不用改动绝大部分代码。
参见
编辑参考文献
编辑外部链接
编辑- Object Management Group(页面存档备份,存于互联网档案馆)
- Information Board(页面存档备份,存于互联网档案馆)
- Catalog of OMG Specifications(页面存档备份,存于互联网档案馆)
- An overview of available CORBA implementations
- Combat: a Tcl ORB, and a Tcl layer for C++ ORBs(页面存档备份,存于互联网档案馆)
- Python ORB(页面存档备份,存于互联网档案馆)
- Perl ORB(页面存档备份,存于互联网档案馆)
- JacORB
- TAO The ACE ORB
- e*ORB
- omniORB(页面存档备份,存于互联网档案馆)
- MICO(页面存档备份,存于互联网档案馆)
- PocoCapsule for CORBA组件容器支持CORBA伺服器应用,OMG事件/通知服务应用,OMG-DDS应用,OMG-RTC应用,以及JTRS-SCA基于组件的软件无线电(SDR)应用。