关于中间件技术

1.分布式中中间件提供的支持

在一个分布式系统中,中间件通常提供两种不同类型的支持:

1、交互支持,中间件协调系统中的不同组件之间的交互。

2、提供公共服务,即中间件提供对服务的可复用的实现。这些服务可能会被分布 式系统中的很多组件所需要。公共服务是指被不同组件需求的服务,不管这些组件 的功能是什么。这些服务,你可以把这些服务看做是中间件容器提供的。可以在这 个容器中部署你的组件并且这些组件可以访问和使用这些公共服务。 

2.嵌入式中间件

通常,嵌入式中间件没有统一的架构风格,根据应用对象的不同可存在多种类型,比较常见的是消息中间件和分布式对象中间件。

2.1消息中间件

消息中间件是在消息的传输过程中保存信息的容器。消息中间件再将消息从它的源中继到它的目标时充当中间人的作用。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的。

消息中间件的特点:

(1)采用异步处理模式。消息发送者可以发送一个消息而无须等待响应。消息发送者将消息发送到一条虚拟的通道(主题或队列)上,消息接收者则订阅或是监听该通道。一条信息可能最终转发给一个或多个消息接收者,这些接收者都无需对消息发送者做出同步回应。整个过程都是异步的。

(2)应用程序和应用程序调用关系为松耦合关系。主要体现在如下两点:发送者和接受者不必了解对方、只需要确认消息;发送者和接受者不必同时在线。比如在线交易系统为了保证数据的最终一致,在支付系统处理完成后会把支付结果放到消息中间件里通知订单系统修改订单支付状态。两个系统通过消息中间件解耦。

消息中间件的传输模式:

(1)点对点模型。点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发送到由某个名字标识的特定消费者。这个名字实际上对于消费服务中的一个队列(Queue),在消息传递给消费者之前它被存储在这个队列中。队列消息可以放在内存中也可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。

(2)发布-订阅模型(Pub/Sub)。发布者/订阅者模型支持向一个特定的消息主题生产消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式就好比是匿名公告板。这种模式被概况为:多个消费者可以获得消息,在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便能够消费者订阅。订阅者必须保持持续的活动状态及接收消息,除非订阅者建立了持久的订阅。

2.2 分布式对象中间件

分布式对象中间件技术是为了解决分布计算和软件复用过程中存在的异构问题而提出的。CORBA,EJB,COM/DCOM是目前主要的3大中间件技术。

2.2.1公共对象请求代理体系结构CORBA

CORBA由对象管理组织OMG于1991年提出,其旨在将错综复杂的网络编程从单独的组件和应用中移走。ORB是CORBA平台的核心,他提供了客户—对象间实现透明通信的方法,当客户激活一个方法时,ORB负责定位对象实现并透明激活将请求传输给对象实现并返回结果。IDL是不依赖于具体编程语言和计算平台的接口语言,用来定义对象接口,IDL对描述跨平台,跨语言应用程序提供一个公共的表示方式,IDL编译器可根据用户需要将IDL定义转化为应用程序语言,如C++,JAVA等。IDL桩为客户提供了静态调用对象方式,IDL构架为客户提供了静态实现方式,他们由IDL编译器产生,作为具有调用功能的子例程分别在客户方和服务器方使用。而动态调用接口DII(Dynamic Invocation Interface)和动态构架接口DSI(Dynamic Skeleton Interface)提供了动态调用方式和动态实现方式。在ORB核心和对象实现之间还有对象适配器,他负责服务对象的注册、对象引用的创建和解释、对象实现的激活和去活以及客户请求的分发等。ORB之间的互操作主要是由ORB桥,IIOP(Internet InterORB Protocol)和EISP(Environment Specific InterORB Protocol)等互操作协议来规定。IIOP是建立在TCP协议之上的基于连接的协议。

2.2.2分布组件对象模式DCOM

DCOM是Microsoft与其他业界厂商合作提出的一种分布构件对象模型。DCOM起源于动态数据交换DDE技术。通过剪切/粘贴(cut/paste)实现2个应用程序之间共享数据的动态交换。对象连接和嵌入OLE就是从DDE引伸而来的,随后Microsoft引入了构件对象模型COM,形成了COM对象之间实现互操作的二进制标准。COM规定了对象模型和编程要求,使COM对象可以与其他对象相互操作。DCOM出现是为了弥补COM在支持远程组件方面的不足。他为分布在网络不同节点的2个COM组件提供了互操作的基础结构。

将COM,DCOM,OLE及ActiveX这些服务结合起来形成了微软创造的分布式网络互联体系结构DNA。

2.2.3EJB企业JAVA平台

近年来,Sun Microsystem公司提出的基于JAVABean组件技术的EJB及Enterprise JAVA平台,JAVABean是JAVA向组件方面的发展,组件的单位叫Bean或JAVABean,这种组件模式是JAVA编写的可移植的,平台独立的组件模式,在分布计算模型中,可用来构建客户端程序。EJB于1998年提出,是服务器方的组件模式,定义了开发和布署可重用的JAVA服务器组件模式和API规范。JAVABeans和EJB体系结构之间,一个最明显的区别是事件处理。JAVABean是为紧耦合的桌面环境而设计,使用局部事件模式,不利于系统的集成。EJB体系结构对分布式的事件提供灵活的支持,允许远程客户通过远程方法调用API访问服务器功能。适应分布式体系结构中的多层应用。EJB还不是一个完整的平台,其提供服务也有限,于是在EJB的基础上,提出能适应广泛企业计算的Enterprise JAVA平台技术。Enterprise JAVA平台包括EJB ,JSP,Servlet,JDBC等组件。

2.2.4 3种中间件的特点

上述3种中间件各有特点,CORBA可以跨各种操作平台,包括Windows OS ,甚至支持DOS操作系统而DCOM只支持Win 32; 同时CORBA跨多种语言,支持C++,Smalltalk,JAVA,COBOL,Ada等语言。DCOM主要以桌面Wintel同质平台对象跨应用使用见长,支持带有指针结构的语言如C,C++而不支持JAVA语言。Enterprise JAVA在Internet环境下集组件模式、跨异构平台、兼具事务处理、数据库连接等许多基础结构服务,但仅限于支持JAVA语言。因此我们利用JAVA语言具有简单、面向对象、分布式、解释型、健壮、安全、可移植性的特点结合CORBA的跨异构平台的特性实现对象的重用。

你可能感兴趣的:(#,中间件)