CORBA及MICO简介一、分布式计算与组件模型标准 全球性网络使联机的所有设备和软件成为全球共享的浩翰的资源,计算机环境也从集中式发展到分布式。开放式系统的发展使用户能够透明地应用由不同厂商制造的不同机型、不同平台所组成的异构型计算资源,因此,分布式处理和应用集成自然而然地成为人们共同的要求。 而在这种开放式分布系统中,如果再用传统的集中管理的固化接口方式根本无法适应其灵活多变的要求。进而希望能够提供一种方式,使客户在要求其他系统提供服务时,能够不必知道所有的服务是由谁及用什么方式来提供。而提供服务的软件或部件可以用不同语言实现,运行在不同的机器、平台上。这将极大方便处理网络计算时代应用软件所要求的那种复杂性。 我们用“互操作性”一词 来描述两个或多个软件组件合作的能力(即使其实现的编程语言、接口及运行平台是在完全不同的情况下)。 考虑一个家电产品(如电冰箱),要利用发电设备的服务(如供电)时,人们是通过接插件来完成二者的联结的。如果想达到二者能够正常地一起工作,要求插头与插口间满足表态相容性(插头、插口形状相配)和动态相容性(电压、频率、功能方面符合要求)。若不相容可再加上适配器和变换器。接插件的标准化给各种产品组合成更大系统提供了极大的方便。 对软件组件来说,处理互操作性的方案之一就是可以采用类似于这种独立于产品的插头和插口的接口技术。这里所谓静态相容,是指调用与被调用的过程能够满足类型检查的要求,动态相容则要求所提供的服务能够满足客户的要求。 当适当加入正确的针对组件间互操作和便携性的标准后,组件的集成得到一个一致的能运行的系统。 目前有两类处理软件组件互操作性要求的组件接口技术。一类称为标准化接口(interface standardigation),一类称为接口桥(interface bridging)。前者要求客户组件与服务组件的接口都变换成共同的标准形式。这种技术总的说来工作量较小,如n个组件间交互协作,只要作n种变换。但这是一种封闭的机制,灵活性差一些。如果产生新的组件要求,已制定的标准也许无法适应新需要。而用接口桥来处理n个组件间协同工作所需的交互,则需要数量级为n(n-1)种的映射。当然,这是一种开放式的机制,如果要加入任意一种新的部件来与原来n种组件交互,只要再增加n种映射即可。这是一种极为灵活、但实现工作量极大的方案。 当然,对于组件来说,除了互操作性外,支持分布式的网络计算还有更多的需求。国际上将兼容异种成分的分布式处理,称为开放分布式处理。概括地讲,开放分布式处理要达到以下几个方面的透明性: 1) 存取透明:隐藏数据表示和调用机制的异同,使用同样的方式存取数据; 2) 失败透明:将出错和恢复事件隐藏在对象内部,以达到容错的目的; 3) 位置透明:隐藏接口的空间位置,用户不需关心接口是哪里提供的; 4) 迁移透明:外界不需要知道系统为使用资源均衡而改变对象的位置; 5) 持久性透明:对象里隐藏着所有资源的变化,如处理器资源、存储资源的冻结与解; 6) 重定位透明:改变一个接口的位置不影响与之关联的其他接口; 7) 复制透明:为提高性能,能同时有多个行为相同的对象支持某一个接口,而用户不需要知道有多个对象存在; 8) 提交透明:一组对象发生作用的次序不影响结果的一致性。 为了达到以上几个方面的要求,就不能任意地构造软件组件,必须研究组件软件的特点,或组件软件的体系结构和组件间的接口方式。相应的软件组件系统的体系结构和组件接口标准等有关的概念应运而生。微软、IBM等公司都注意到这一点,并且各自提出了软件部件的接口标准,其中最有代表性的有以下几种: 1) Microsoft提出的COM/DCOM,现在已演变成为.NET; 2) OMG标准组织提出的CORBA; 3) Sun提出的EJB,现已朝着Sun One演变; 二、CORBA简介 CORBA是common object request broker architecture,公共对象请求代理体系结构的缩写,它是由IBM、HP等多家公司联合开发的组件软件的体系结构和组件接口标准。1997年8月出版的CORBA 2.1的版本页上已有21个公司和组织了。而支持CORBA的对象管理集团OMG已达750家公司。 整个CORBA平台的组成结构如下图所示:
图1 CORBA结构示意图 在CORBA体系结构的中心部分是对象请求代理程序(Object Request Broker,ORB),它作为一个“软件总线”来连接网络上的不同对象。在客户端,ORB提供一个发送操作调用的接口;而在服务器端,ORB提供一个将操作调用传输到服务器的API。ORB的任务是定位一个合适的服务器,并且通过一个对象适配器(Object Adapter,OA)将操作调用传送给服务器。OA的目的是:给框架发送方法,调用并且支持服务器对象的生命周期(例如,对象的建立和删除)。老版本的CORBA规范包含一个基本对象适配器(Basic Object Adapter,BOA),就像它的名字一样,BOA是十分简单的。它定制的也不是很好,它禁止CORBA应用程序的可移植性。作为CORBA标准的版本2.2,BOA被可对象适配器(Portable Object Adapter,POA)所取代。MICO支持BOA和POA。 在客户端,ORB提供一个一般的API,它是一个动态调用接口(Dynamic Invocation Interface,DII)来发送操作调用。在服务器端,OA通过动态框架接口(Dynamic Skeleton Interface,DSI)来传输一个操作调用,它为服务器端镜像DII的行为。一个在客户和服务器之间的静态接口通过一种接口定义语言(Interface Definition Language,IDL)来定义。虽然DII和DSI代表到ORB的一般接口,并且通常被用于桥,但一个IDL规范可以用于产生到ORB的类型安全的、应用特定的接口。 在客户端,客户与ORB之间的静态接口被称为静态调用接口(Static Invocation Interface,SII),在服务器端,这个接口被称为静态框架接口(Static Skeleton Interface,SSI)。一个IDL编译器从一个IDL规范来生成一个存根stub和一个框架skeketon。存根的功能类似于一个客户代理,而框架负责发送一个操作调作给一个真正的此操作的实现程序。 上一篇:什么时候应该使用Web Service 下一篇:如何追踪黑客 更多相关文章
|
推荐文章
精彩文章
|