DDS 中间件
- 格式:docx
- 大小:47.88 KB
- 文档页数:16
DDS 中间件不同类型中间件软件的发展一、引言分布式计算是指各种不同的工作站通过网络互相连接,由分布式系统提供跨越网络透明地访问各种异构设备所需要的支持,使得用户可以充分利用网络上的各种计算资源来完成自己的任务[1]。
与网络技术的发展和日益增长的应用需求相适应,分布式计算已经成为新一代计算和应用的主流。
分布式计算中所涉及的分布式系统是指组件分布在网络计算机上且通过消息传递进行通信和动作协调的系统[2]。
分布式系统具有以下特征:组件的并发性、缺乏全局时钟、组件故障的独立性。
构造分布式系统的挑战主要是其组件的异构性、开放性(指允许增加或替换组件)、安全性、可伸缩性(指用户数量增加时能正常运行的能力)、故障处理以及组件的并发性和透明性。
构造和使用分布式系统的主要动力来源是资源共享,因此分布式系统之间的通信和集成技术一直是关注的重点。
中间件是指一个软件层,它提供了一个编程抽象以及对底层网络、硬件、操作系统和编程语言异构性的屏蔽,同时还为服务器和分布式应用的编程人员提供了一致的计算模型。
中间件能够很好地完成异构分布系统的集成、互操作,并且能够很好地保证这些系统的可移植特性,因而极大地降低了开发分布式应用的周期,能够提高系统的可靠性,是当前分布式应用开发和分布式系统集成的主要手段。
本文对分布式企业应用和分布式实时应用的集成技术进行了简要介绍。
二、分布式企业应用集成技术企业自上世纪七十年代开始使用IT支持系统至今,一些大型企业中各种IT支持系统平均达数十种之多。
它们大部分是一个个的信息孤岛,管理着企业特定的各个职能部门的工作,相互之间缺乏有效的通信。
随着信息技术的不断发展,今天的企业需要一个集成的、开放的、面向用户且随需而变的IT支持系统,因此面临着应用系统的整合问题。
不同的应用(尤其是不同企业的)的开发语言不同,部署平台不同,通信协议不同,对外交换的数据格式也存在着差异,如何去解决语言差异、平台差异、协议差异、数据差异所带来的高代价的系统集成是这个问题的关键。
企业应用集成(Enterprise Application Integration,EAI)将企业中的业务流程、应用系统、硬件和各种标准联合起来,在两个或更多的企业应用系统之间实现无缝集成,使它们像一个整体一样进行业务处理和信息共享。
企业应用集成不仅包括企业内部的应用系统集成,还包括企业与企业之间的集成,以实现企业与企业之间的信息交换、商务协同、过程集成和组建虚拟企业和动态联盟等。
目前,常用的企业应用集成技术有远程过程调用技术、分布式对象技术、面向消息的中间件技术和Web服务技术。
(一) 远程过程调用技术最早提出远程过程调用的是美国Birrell和NelSon,其后在Xerox工作站上实现,它非常类似于在单机编程过程中经常使用的过程调用(Procedure Call)。
在分布式环境下,远程过程调用允许本地计算机上的程序调用远程计算机上的进程。
远程过程调用允许发送一个请求(客户进程)到远地进程即被调用者,被调用者或服务器进程执行这个过程并发回一个结果(响应)消息。
该方法最主要的特点是程序不需要知道调用的过程是本地还是远地。
远程过程调用和传统的过程调用不同就在于调用者(Caller或Client)和被调用的进程(Server)是在不同的机器上的不同的进程。
1987年,Sun Microsystem公司开发了开放式网络计算(ONC)RPC系统,作为它的网络文件系统(NFS)的基本通信机制;同年,Apollo Computer公司为其操作系统开发了网络计算系统(NCS)的RPC系统。
在1989年,开放式软件基础设施(OSF)组织为RPC系统发出了技术请求(RFT),并收到了两个主要提案:一个来自HP/DEC,基于NCS;另一个来自Sun,基于ONC。
最终,OSF选择NCS作为其分步式计算环境(DCE)的RPC 机制。
1990年,Microsoft基于DCE/RPC的修订版开发了RPC机制,使得RPC技术得到了更广泛的应用。
远程过程调用的灵活性体现在它的跨平台性上,它不仅远端的子程序,而且这种调用是可以跨越不同操作系统平台的。
而远程过程调用的缺点在于其采用了同步通信方式,适合于小型的简单应用。
对于一些大型的应用,需要支持多种通信模式时,远程过程调用就不太适合。
(二) 分布式对象技术二十世纪九十年代,随着面向对象技术的广泛应用和和分布式系统成为计算机系统和应用的主流技术,出现了分布式对象技术。
分布式对象技术是面向对象技术和分布式技术的结合,其提供了一种通讯机制,透明地在异构的分布式计算环境中传递对象请求,而这些对象可以位于本地或远程机器。
主流的分布式对象技术有以下三种:l 对象管理组织(Object Management Group, OMG)制定的CORBA(Common Object Request Broker Architecture,通用对象请求代理架构)技术。
l Microsoft公司提出的DCOM(Distributed Component Object Mode,分布式组件对象模型)技术。
l Sun公司提出的RMI(Remote Method Invocation,远程方法调用)技术。
CORBA是OMG专门为异构平台上不同语言开发的分布式对象进行互操作而制定的规范。
OMG组织是一个国际性的非盈利组织,成立于1989年,致力于面向对象软件开发的实践与理论,制定工业指南和对象管理规范,加快对象技术的发展。
其目标是为应用开发提供一个公共框架,使得基于对象的软件在分布异构环境下具有良好的可重用性、可移植性和互操作性,从而能够在由多种操作系统构成的异构分布环境中,方便地建立异构分布式应用系统,或实现企业信息资源的集成。
为实现上述目标,OMG组织成立后不久就制定了OMA (Object Management Architecture,对象管理体系结构)参考模型,其主要包含四个部分:应用对象(Application Object)、对象服务(Object Service)、公共设施(Common Facilities)和对象请求代理(Object Request Broker)。
针对OMA中的核心部分ORB,OMG组织制定了CORBA规范。
CORBA规范屏蔽了底层硬件、操作系统和网络协议的不同,使开发者能够将精力集中到应用逻辑上,而不需考虑复杂的异构环境通信问题。
1991年,CORBA1.1规范正式提出,定义了IDL接口语言和ORB对象请求代理中间件。
1995年,OMG发布CORBA 2.0,提出了IIOP(Internet Inter Object Protocol),用以规范不同厂家的ORB之间的互联互通。
自此,CORBA逐渐成型,2002年,OMG组织正式发布了CORBA3.0规范。
CORBA规范给出了ORB的基本结构及其各部分的功能描述,包括:界面定义语言(IDL)、静态调用界面(IDL Stub)、ORB界面、动态调用界面(DII)、静态框架界面(SS)、动态框架界面(DSI)、对象适配器(OA)、界面库、对象实现库和ORB间的互操作协议IIOP,其关系如下图所示。
图1. CORBA ORB的结构对象的界面通过IDL定义,独立于对象的实现。
IDL编译器将对象的IDL文件编译成客户端的存根(Stubs)和服务器端的框架(Skeleton)。
客户端根据IDL Stubs使用静态方式调用对象服务;或根据界面库中得IDL描述信息采用动态调用方式搜索可用的服务,找到这些服务的界面并构造使用这些服务的请求。
对象实现在执行客户请求时,通过对象适配器获取ORB的服务。
对象适配器是对象访问ORB服务的主要通道,拓为实例化的对象服务提供运行环境,接收客户请求并传送给服务对象。
此外,对象适配器还负责为服务对象分配对象ID,以及将对象类和实例化对象注册到对象实现库中。
对象实现库包含了允许ORB查找和调用对象实现的相关信息,是ORB进行对象匹配的场所。
CORBA自发布以来,已经有很多实现。
目前市场上流行的产品有:IONA公司的Orbix,Inprise/Borland公司的VisiBroker 等。
DCOM是由Microsoft于1996年提出的分布式对象构件标准,旨在提高应用软件的互操作能力。
COM(Component Object Model,组件对象模型)技术使得程序的各个组件之间可以用一种统一的方式进行交互,而DCOM实际上是COM技术在分布式环境中的扩展,它建立在DEC(分布式计算环境)的RPC规范之上,可以实现在两台不同的计算机之间调用COM对象,对象间的通信通过网络来传输。
DCOM屏蔽了COM对象的位置差异,使用户不需知道COM对象的实际位置,就可以使用该COM对象。
图2. DCOM整体结构图DCOM的整体结构如上图所示。
DCOM利用RPC提供分布功能,当客户进程调用接口上的方法时,DCOM将方法调用转换为RPC调用。
RPC机制自动完成数据的包装和解包、数据格式的转换、建立网络会话和处理网络调用。
可以说DCOM提供了一种面向对象的RPC 机制。
RMI是Sun公司于1997年所提出的分布式计算模型,用以解决访问Java分布式对象的通信问题。
Java是一个提供了可移植的面向对象编程语言和高性能的Java虚拟机组成的应用系统运行和开发平台。
RMI能够支持一台Java虚拟机(JVM)上的对象与另一台Java虚拟机(JVM)上的对象进行通信。
RMI的架构如下图所示,包含三层:桩/骨架层、远程调用层、传输层。
图3. RMI结构图其中,Stub/Skeleton Layer监听客户端产生的远程方法调用,将这些调用转换为服务器端的远程RMI服务。
Remote Reference Layer负责解释与管理客户对服务器上远程对象的引用。
Transport Layer为服务器端RPL与客户端RPL建立连接。
由于Java的天生跨平台优势,RMI的跨平台能力很强,但它只是Java体系的一部分,对纯Java应用的集成能力很强,并没有跨语言的互操作能力。
而企业在信息化过程中,存在大量非Java开发的遗留系统或采用其它技术开发的独立系统,这样就大大增加了RMI在企业信息资源集成中的成本。
分布式对象技术能在一定程度上解决分布式系统的通信和集成问题,但是存在着一些问题,如交互双方以紧耦合的同步通信方式绑定,基于二进制通信协议,并采用跨逻辑层的紧密集成,容易导致可伸缩性问题。
另外RMI和DCOM技术限于特定平台,不能实现异构系统之间的集成,CORBA技术实现复杂,投入高。
为了解决分布式系统之间集成的紧耦合问题,产生了面向消息的中间件技术。
(三) 面向消息的中间件技术面向消息的中间件(Message-Oriented Middleware,MOM),提供了以松散耦合的灵活方式集成应用程序的一种机制。