|
知识路径: > 系统开发基础知识 > 基于构件的开发 > 中间件技术 > 中间件技术 >
|
相关知识点:1个
|
|
|
|
中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。中间件分类有很多方式和很多种类型。
|
|
|
从中间件的层次上来划分,可分为底层型中间件、通用型中间件和集成型中间件3个大的层次。底层型中间件的主流技术有JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公用语言运行时)、ACE(Adaptive Communication Environment,自适应通信环境)、JDBC和ODBC等,代表产品有Sun的JVM和Microsoft的CLR;通用型中间件的主流技术有CORBA、EJB、COM/DCOM等,代表产品主要有IONA Orbix、BEA WebLogic和IBM MQSeries等;集成型中间件的主流技术有WorkFlow和EAI等,代表产品主要有BEA WebLogic和IBM WebSphere等。
|
|
|
由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通信服务,我们将这种通信服务称之为平台。基于目的和实现机制的不同,可将平台分为远程过程调用(Remote Procedure Call,RPC)、面向消息的中间件(Message-Oriented Middleware,MOM)、对象请求代理(Object Request Brokers,ORB)3类。它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等,在这些基本的通信平台之上,可构筑各种框架,为应用程序提供不同领域内的服务。
|
|
|
|
RPC是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来远程执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。一个RPC应用分为两个部分,分别是服务器和客户机。服务器提供一个或多个远程过程,客户机向服务器发出远程调用。要说明的是,这里的服务器和客户机并不是指计算机硬件,而是指应用程序。服务器和客户机可以位于同一台计算机,也可以位于不同的计算机,甚至运行在不同的操作系统之上,它们通过网络进行通信。在这里,RPC通信是同步的,如果采用线程则可以进行异步调用。
|
|
|
在RPC模型中,客户机和服务器只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的服务器。因此,RPC为C/S分布式计算提供了有力的支持。同时,RPC所提供的是基于过程的服务访问,客户机与服务器进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。例如,RPC通常需要一些网络细节以定位服务器;在客户机发出请求的同时,要求服务器必须是活动的,等等。
|
|
|
:在Java开发环境中,可以使用Java远程方法调用(Remote Methode Invocation,RMI)来代替RPC。RMI提供了Java程序语言的远程通信功能,这种特性使客户机上运行的程序可以调用远程服务器上的对象,使Java编程人员能够在网络环境中分布操作。
|
|
|
|
利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,MOM可在分布环境下扩展进程间的通信,并支持多通信协议、语言、应用程序、硬件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。消息传递和排队技术有以下3个主要特点:
|
|
|
(1)通信程序可在不同的时间运行:程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
|
|
|
(2)对应用程序的结构没有约束:在复杂的应用场合中,通信程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通信方式的构造并没有增加应用程序的复杂性。
|
|
|
(3)程序与网络复杂性相隔离:程序将消息放入消息队列或从消息队列中取出消息来进行通信,与此关联的全部活动,如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其他程序通话,并且它们不涉及网络通信的复杂性。
|
|
|
|
ORB是OMG推出的对象管理结构(Object Management Architecture,OMA)模型的核心组件,它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口。ORB是对象总线,它在CORBA规范中处于核心地位,定义异构环境下对象透明地发送请求和接收响应的基本机制,是建立对象之间C/S关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。客户机对象并不知道与服务器对象通信、激活或存储服务器对象的机制,也不必知道服务器对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。
|
|
|
:客户机和服务器角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是客户机,也可以是服务器,甚至兼有两者。当对象发出一个请求时,它是处于客户机角色;当它在接收请求时,它就处于服务角色。大部分对象都是既扮演客户机角色又扮演服务器角色。另外由于ORB负责对象请求的传送和服务器的管理,客户机和服务器之间并不直接连接,因此,与RPC所支持的单纯的C/S结构相比,ORB可以支持更加复杂的结构。
|
|
|