CORBA架构体系指南(通用对象请求代理体系架构)

何谓CORBA架构?

综述

通用对象请求代理体系架构(CORBA)是对象管理组(OMG)所定义的准则,允许用各种计算机语言撰写和运行于若干台计算机中的软件组件协同工作。

在该框架中,CORBA提供了一种支持对跨网络分发对象进行远程调用的机制。对象是用一种叫做接口定义语言(IDL)的语法来描述。

图片[1]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

公共对象请求代理体系结构(CORBA, Common Object Request Broker Architecture, OMG)是OMG(Object Management Group, OMG)为便于部署于不同平台的系统进行通信而定义的一个标准。

使用CORBA作为操作系统和编程语言可以减少对计算硬件的依赖。

CORBA采用面向对象模型(object-oriented model, OOM),虽然用CORBA实现的系统不一定要面向对象。然而,在大多数情况下,这些系统都需要用这种方法来描述和处理各种复杂问题。为了解决这一难题。作者提出了一种新的体系结构——分布式对象结构。

图片[2]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

CORBA完成了用不同语言撰写和运行于不同计算机中的各种软件间的通讯。由于CORBA是一个开放标准,其应用范围已扩展到包括硬件环境在内的所有领域;因此,它不仅适用于分布式计算机系统而且也可用于分布式系统。操作系统、编程语言和硬件平台都可以使用CORBA来进行开发和维护,从而使开发人员能够方便地访问这些资源。CORBA对处于相同地址空间(应用)或者远程地址空间(同主机或者网络中远程主机)内应用对象间方法调用语义进行规范。

将中间件当作事务代理来完成请求和应答。实现了服务请求映射、自动搜寻、路由和自动设定等功能,为事务代理提供支持;

实现了基于软件总线机制和符口规范定义的分布式系统;

一个既可以用于客户程序也可以用于服务器程序,而且修改对象的执行也不影响两方的顺序,所以软件重用率非常高。

核心结构

图片[3]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

CORBA由四部分组成:

1.对象请求代理 (ORB,Object Request Broker )

对象请求代理(ORB)负责对参数进行通信,编组和解组(communication).marshaling.and unmarshaling使参数处理对CORBA服务器及客户端应用程序都具有透明度。

Object Request Broker (ORB) handles communication, marshaling and unmarshaling of parameters in such a way that the manipulation of parameters is transparent to a CORBA server and client application.

2.CORBA 服务器(CORBA server)

CORBA服务器建立CORBA对象,并使用ORB对对象进行初始化。用户使用这些对象来构造自己的应用程序,并且可以向服务器发送请求并从服务器获取所需数据。当用户通过一个或多个客户端与服务器进行通信时,CORBA对象被激活以完成任务。服务器把CORBA对象引用置于命名服务之中使客户端能够获取这些对象。

CORBA servers create CORBA objects and initialize them with an ORB. The server places references to the CORBA objects inside a naming service so that clients can access them.

3.命名服务(Naming service)

命名服务为CORBA对象保存引用。

References to CORBA objects are stored in the naming service.

4.CORBA请求节点(CORBARequest node)

CORBARequest节点作为CORBA的客户端。

CORBARequest nodes serve as CORBA clients.

图片[4]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

公共设施

公共设施有两种:一是公共设施;

横向设施(horizontal facilities)指一般领域中所界定的物体。它包括:通信设备;计算机与网络;数据存储和传输系统(如数据库);软件及应用程序开发系统等,它们共同构成了一个信息网络系统。

纵向设施(verticalfacilities)指对专用领域中的物体进行界定。它主要包括:一,邮政。指邮政部门从事的业务和服务;二,邮电系统。即邮电部门及其所属企业为社会提供各种通信服务的行业或单位。三,金融。电信,财政,商业,卫生保健均属专用领域。

对象服务

对象服务就是针对公共设施及各类应用对象,提供命名,事件,事务处理,通知,交易,生命周期,安全等基础服务。

命名服务是一种以网络为基础,通过对计算机、通信和数据库等资源进行管理与控制而提供给用户使用的技术。目前命名服务已经成为Web上重要的应用之一。

事件服务(eventservice)事件服务包括一个或者更多供应者(supplier),消费者(consumer)和事件通道(event channel)。供应者向消费者提供所需产品;当事件发生时,供应者向消费者提供事件信息,并且消费者也能通过媒体获得与之相关的资讯。事件通道包括两种类型:一种是单向式事件通道;另一种为双向式事件通道。供应者在事件通道上投放需要发送给消费者的信息,并按照事件通道工作模式,即推模式(push)与拉模式(pull)进行操作,信息或推送给消费者,或消费者自愿拉离通道。

事务处理服务,简称事务处理服务。事务处理服务是指对由多个客户组成的系统中的事务进行管理和控制,使它们能够高效地运行,同时又不会因为某个或某些用户的介入而导致整个系统崩溃的一种机制。它保证了某项事务中所包括的业务,或者都顺利地完成,或者失败时都没有完成,回到初始状态,从而保持了事务完成前和完成后的数据一致。

交易服务(traderservice)它是指企业通过与国际市场上不同国家或地区的交易来满足其特定需求,以获取最大利润的一种经营活动。交易服务在国际贸易中具有重要作用。交易服务包括出口者(exporter),进口者(importer)以及交易者(trader)三部分。

生命周期服务这种方法是一种把系统分为不同阶段,并在每个阶段采用相应技术进行管理的设计思想。它可以减少软件的开发周期,降低软件开发成本,提高开发效率。对象生存期是由对象的创建,删除,传递,复制等直接面向对象服务控制。

安全服务是一种面向分布式应用环境的高级访问控制技术,它能够保证数据和信息在分布式网络上安全可靠地传输。CORBA提供了一个用于对用户的访问行为进行监控和管理的方法:包括以下步骤:通过使用一级安全服务来完成诸如鉴权、限权、授权、审计、加密以及登记注册等功能,从而保证了分布系统中数据的安全性;

通知服务该系统将基于事件驱动的方法应用于SCADA系统中,提供一种在不修改原系统的基础上实现对事件进行处理和管理的新技术。这是对事件服务功能的拓展,加入结构化事件、事件过滤机制和服务质量控制。

应用对象

没有经过OMG标准化,是各应用开发者独立开发的一个实体,应用对象采用CORBA中的多个对象服务。

接口定义语言

接口定义语言(InterfaceDefinitionLanguage, IDL)用于定义CORBA对象所用,应用组件间的界面。这不是一种过程语言,只能够定义一个界面,并不能实现一个界面。由于采用了这种方法,使得许多复杂的问题在开发中变得简单容易,提高了系统设计效率。因此,被广泛应用于各种软件开发环境之中。目前,它已成为软件工程领域研究的热点之一。IDL与任何编程语言都无关,使用IDL编译器可把IDL映射到其它常用语,例如C++、C、COBOL和Java中。

模块(module)。它包含了很多以功能为分组单位的界面,构成一个额外的分层结构。用户可以根据自己需要,在不同层次上选择特定的模块来实现各种复杂功能,使系统具有很好的可扩充性和可扩展性。

它定义出数据与操作(即所谓的方法),以便于顾客调用。接口是实现系统内部各种功能,如数据通讯、处理信息等的工具。接口在整个软件开发过程中起着重要作用,并随着软件技术的发展而不断变化。一个完整的接口可由多个部分组成。接口可包含类型,常量,属性,异常等语句。IDL接口还提供了一个用于访问CORBA的方法。

它代表顾客可调用,位于对象内的一种服务。异常事件是由一组特定的客户语言环境引起的。如此,运算在CORBA上定义一个方法。

数据类型。作为面向对象语言中一类重要的对象,它在软件工程中起着极其重要的作用。对数据进行分类是开发不同类型系统的基础和关键。本文介绍了几种常用的数据类型。用于表征参数,属性,返回值和异常等允许值。类型是指能被识别的实体,其谓词和其值同,若作用在某实体上所获得的效果是真的,则该实体满足该类,称该类成员。CORBA支持数据类型可为基本类型,模板类型,构造类型,复杂类型和本地类型。

对象请求代理(ORB:Object Request Broker)是CORBA中的一个基础,也是分布环境中,CORBA中应用到的,以对象模型为核心的软件总线。对象请求代理技术是实现分布式计算与共享存储系统的关键技术之一,也是当前国际上研究的热点之一。ORB由一个简单而又复杂的体系结构构成。其根本责任在于解决物体引用的要求,在应用物体间建立联结,并通过标准接口实现这一联结与所用硬件,软件等平台无关,以确保平台透明,操作系统,网络协议,编程语言透明。

图片[5]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

应用程序以ORB的方式和其它对象交互。这种交互方式称为消息驱动,也可以称作事件处理(EDA).本文提出一种新的消息驱动技术,并将其应用于一个实际系统中去解决一些问题。这就是其实际实现途径:

The CORBA specification dictates that there must be an ORB through which an application would interact with other objects. In practice, it is implemented as follows:

应用程序对ORB进行初始化,访问内部的对象适配器Object Adapter,适配器保持如引用计数,对象(以及引用)实例化策略instantiation policies,对象生命周期策略object lifecycle policies等内容。

An application initiates the ORB, and accesses an internal object adapter, which maintains such things as reference counting, object (and reference) instantiation policies and life cycle policies.

使用对象适配器注册所产生代码类中的示例。通过在CORBA应用程序开发过程中采用对象适配器技术可以提高编程效率,缩短开发周期。代码类中的每一个都可以被配置成执行诸如IDL代码之类的高级接口,而不需要在操作系统上运行任何其它类型的类库。要强制实现CORBA语义和提供清洁的用户进程到CORBA基础结构之间的界面,这一步非常有必要。

Object adapter to register an instance of a generated code class. The generation of code classes is the result of compilation of user IDL code, which translates the high-level interface definition into an OS-class and language-specific one for use by the user application. This step is necessary to enforce the semantics of CORBA and provide a clean user process to interface with the CORBA framework.

IDL:接口定义语言

CORBA采用接口定义语言(IDL, interface definition language),为对象向外部世界展示指定界面。它是一种用来将程序中所涉及到的数据封装成一个统一形式并通过网络发布和执行的方法。

比如一个thrift idl的代码是这样的:。

include “base.thrift” namespace go kitex.example.item struct Item { 1: required i64 id, 2: required string title, 3: required string content, 10: optional map<string, string=””> extra, } struct GetItemRequest { 1: required i64 id, 255: optional base.Base Base, } struct GetItemResponse { 1: required Item item, 255: optional base.BaseResp BaseResp, } struct GetSpringDemoRequest { } struct GetSpringDemoResponse { } service ItemService { GetItemResponse GetItem (1: GetItemRequest req), GetSpringDemoResponse GetSpringDemo (2: GetSpringDemoRequest req) GetSpringDemoResponse GetSpringDemo2 (2: GetSpringDemoRequest req) }</string,>

IDL编译器

要在CORBA(CORBA-based distributed object interface)基础上搭建使用或者实现分布式对象接口的体系,开发人员需要访问或者编写IDL代码以定义界面。

For building a system that uses or implements a CORBA-based distributed object interface, a developer must either get or write IDL code that defines the object oriented interface to the logic.

一般情况下ORB的实现都是由一个叫做IDL编译器的工具组成,IDL编译器把IDL接口转换为目标语言target language用于系统这一部分。

Typically, an ORB implementation includes a tool called an IDL compiler ,that translates the IDL interface into the target language ,for use in that part of the system.

传统的编译器随后对产生的代码进行编译并建立一个可链接的对象文件(linkable-object files)并将其应用于应用。最后,将此可执行程序通过网络发布到互联网上,供用户下载并执行。这张图显示如何利用CORBA基础结构中产生的编码:

After that, a traditional compiler compiles the generated code, creates the linkable-object files to be used within the application. The following diagram illustrates how generated code is used inside the CORBA infrastructure.

图片[6]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

这张图展示了用CORBA实现远程进程间通讯的一个先进实例。

The figure illustrates the high level paradigm for remote interprocess communications using CORBA.

CORBA规范更进一步的解决:数据类型,异常情况,网络协议,通信超时等等。

Furthermore, the CORBA specification deals with data typing, exceptions, network protocols, communication delays, etc.

比如:服务器端可移植对象适配器(POA, Portable Object Adapter),它会对本地服务进行调用重定向或者(为了平衡负载)对其它服务器进行调用。

Examples include: Normally, the server side has the Portable Object Adapter (POA) which redirects calls either to local servants or (to balance the load) to other servers.

CORBA规范把分布式系统(distributed system, DSS)的方方面面都交给应用程序去定义,其中包括对象生命周期,冗余/故障转移,内存管理,动态负载平衡以及应用程序–面向模型(MVC),如显示/数据/控制语义间分离(模型-视图-控制器)方式。

CORBA leaves various aspects of the distributed system to the application to define including object lifetimes, redundancy/fail-over, memory management, dynamic load balancing, and application oriented models such as separation between display/data/control semantics. see Model–view–controller), etc.

CORBA除提供给用户语言与平台中立(RPC)的远程进程调用规范外, CORBA也对常见服务如事务与安全,事件,时间等具体在域中的接口模型进行定义。

CORBA not only provides users with a platform-neutral remote procedure call (RPC) language and specification, but also defines commonly required services such as transactions and security, events, timing, and other domain specific interface patterns.

桩(stub)与骨架(skeleton)的编码

桩以及骨架代码文件。这些代码文件允许应用程序连接到ORB。

代理模式中提供了一些具有远程调用功能的接口组件。

其中,客户桩STm是一个典型的静态接口。②客户桩Stu B,是一种动态连接技术。③客户桩Stub和客户桩STU之间通过一个共享端口进行通信。④用户可以根据需要使用不同类型的数据传输方式。它在顾客对象本地并接收顾客要求,对顾客而言等同于一个远程执行对象。

Skeleton具有动态骨架和静态骨架之分;③Client,有两种不同类型:一是以客户机为中心;二是以域服务器为中心。④CORBA.⑤OPC技术是当前流行的一种数据交换方法。⑥XML表示数据形式。其对象为执行对象表示远程客户角色,可实现调用对象的本地实现。

图片[7]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

其发展历程大致是:

1)编制IDL接口的界定文件;

2)将高级语言源代码封装成服务父框架并加载到客户端存根中;

3)根据服务器骨架(skeleton、serverstub)编写服务对象的实现程序;

4)给客户端一个存根(clientstub)并编写客户对象调用程序;

6)服务对象的运行程序。

From the CORBA to Thrift technologies.

图片[8]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

科技是变化的,需求是恒定的,复杂的东西做起来很容易,不能反过来做。

图片[9]-CORBA架构体系指南(通用对象请求代理体系架构)-【聚禄鼎】一站式企业服务平台

不管是CORBA或Thrift,都只需要一个目标:一个地方定义、多个地方使用,只需要解决一个问题:规范并简化客户端和服务器之间通讯发展工作。

原文链接:http://www.sfdkj.com/17032.html

 

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片