浅谈中间件

 

浅谈中间件
         东方通科技
一、前言
  客户机/服务器已经流行多年,尽管有专家预测到2001年,传统的客户机/服务器结构有可能过时,代之于Web技术、对象技术、数据仓库技术等新的概念和结构,但是,实际上客户机/服务器还在发展,如三层或多层客户机/服务器结构,客户机/服务器方式的应用还在迅猛扩张。
  随着对各种旧有应用的不断扩充和新应用的不断增加,各企业IT部门面临的问题也越来越多,诸如不同硬件平台、不同网络环境、不同数据库之间的互操作,多种应用模式并存,系统效率过低,传输不可靠,数据加密,开发周期过长,等等,这些问题如果单纯依赖传统的系统软件或工具软件提供的功能已经不能满足要求,诸如此类的问题使人们开始关注中间件,就象JAVA产生的最初起因是人们不满足于为各种不同的环境重复开发功能相同的程序。伴随着分布式应用的迅猛发展,中间件这一新兴的软件领域已悄然崛起。

二、中间件的概念
  既然许多问题是由各种不同的厂商的产品并存所引起的,又不能靠传统的系统软件(如操作系统、数据库等)、工具软件(如CASE 工具、4GL等)解决,人们便想用一种另类的软件来解决。顾名思义,你可以把中间件理解成是处于应用软件和系统软件之间的一类软件,或者是独立于硬件或数据库厂商(处于其产品的中间,实现其互连)的一类软件,或者是客户方与服务方之间的连接件,或者是需要进行二次开发的中间产品。总之,中间件是在中间。

  但是,并不能把不能归类的软件都归到中间件的范畴。许多组织和专家都对中间件下过定义,但都不太精确,所以经常会有"什么是中间件"这样的问题,这也正说明中间件正处在迅速发展之中。这里引用一个比较流行的定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通讯。

  从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能。


二、 中间件解决什么问题

  那么,中间件究竟解决什么问题呢?
  首先,应用的互连和互操作是中间件要解决的第一位的问题。不管这些应用分布在什么硬件平台上,使用了什么数据库,透过了多么复杂的网络,或是同一电脑中的不同应用系统。
这里所说的互连和互操作是应用之间而不是说系统之间的,因为中间件是一种应用级的软件,是一种应用集成的关键构件,一个好的中间件产品要能解决应用互连带来的各种问题,通讯要支持各种通讯协议、各种通讯服务模式、传输各种数据内容、数据格式翻译、流量控制、数据加密、数据压缩等;中间件核心要解决名字服务、安全控制、并发控制、可靠性保证、效率保证等。应用开发要能提供基于不同平台的丰富的开发接口、支持流行的开发工具、支持流行的异构互连接口标准(如XA、IDL等);系统管理要解决对中间件本身的配置、监控、调谐,为系统的易用易管理提供保证。
  其次,针对不同的应用领域,对中间件又有各种不同的要求。由于实际的应用环境千差万别,不能指望有一种包罗万象的中间件解决所有的问题。对于邮件系统需要提供存储转发功能;对工作流应用需要以条件满足状态将信息从一个应用传递到另一个应用;对联机交易处理系统,需要保证数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输,等等。

三、中间件的分类

  为了更好地说明中间件能解决什么问题,需要对中间件作一个分类说明。
  在讨论中间件的分类前,先分析一下应用之间常用的会话方式。一般地,应用级的会话有两种方式,各类中间件都是基于这两种会话方式。
  一种是同步方式,客户方向服务方发出请求后,等待服务方返回的结果,在收到服务方的处理结果前不做其它处理。在这种方式下,客户方在等待服务方的处理结果时,可以结?
  另一种会话方式是异步方式,客户方在等待服务方的处理结果时可以去完成其它任务。在异步方式下,当一个节点向另外一个节点发出消息后,不等待应答。因而一个消息发送完成后,发送方就可以去处理其它事情。但不幸的是发送方也可以发送新的消息,因而同样会造成网络拥堵。
  中间件的分类方式很多,有些软件在中间件的概念产生以前可能就已经存在了,有些软件虽然不是作为中间件开发出来的,但是符合中间件的定义,我们也把它归入中间件的范畴,有些软件,尽管具有中间件的特征,我们却并不把它叫做中间件(如HTTPD)。
  按照IDC的分类方法,中间件可分为六类。
(一)终端仿真/屏幕转换
  用以实现客户机图形用户接口与已有的字符接口方式的的服务器应用程序之间的互操作。

(二)数据访问中间件
  适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的API,以提请直接访问和更新基于服务器的数据源,数据源可以是关系型、非关系型和对象型。这类中间件大都基于SQL语句,采用同步通讯方式。此类中间件使应用开发简单,但如果是透过广域网使用,回带来严重的效率问题,因为在低速网上来回交互SQL语句会使通讯流量过大,同时对数据压缩、加密带来不便。

(三)远程过程调用中间件
  RPC机制是早期开发分布式应用时经常采用的一种同步式的请求应答协议。通过这种协议,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。RPC扩展了过程语言中?
  当编译一个采用RPC机制的客户方应用时,编译器告之代表远程功能调用的句柄,客户方需要调用远地的过程时,引用相应的功能调用的句柄,由RPC机制来负责客户方程序实时地调用到远地的过程。服务器上的过程返回后,客户方的程序得到结果并继续往下进行。在采用RPC 机制时,调用远端的过程只需去引用它,而不必告之网络地址或其它底层信息。
  RPC机制可用以构造客户机/服务器方式的应用,但由于它是同步方式,因而在工作的时候,要求客户方和服务方均能正常工作才能很好地运行,有一方不能工作将导致RPC失败。这在网络故障、机器故障存在的情况下,这一要求是很难保证的。还有一点值得注意的是,不管客户方能做什么或做的多快,它必须依靠服务方才能有效工作。有些恢复机制可以在一个远程调用阻塞时转而去调用另一个服务器上的过程,但这种路由方式也会影响效率。
  也有的RPC机制采用异步方式,客户方非阻塞地调用远端的过程,但这种方式不太标准而且很难采用。另外,由于大多数RPC机制很难建立点到点的关系,因而也很难用在面向对象的编程当中。

(四)消息中间件
  尽管消息中间件不象RPC机制那样流行,但越来越多的分布式应用采用消息中间件来构建,通过消息中间件来把应用扩展到不同的操作系统和不同的网络环境
  基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时,消息中间件通知服务方应该进行何种操作。事件可以是一个请求,也可以只是一种警示,警示到来后,即可进行某种处理,但不需等待应答。
  使用消息中间件编程采用的是消息中间件的API,可以很好地扩展到不同的操作系统和硬件平台上。
  消息中间件的核心安装在需要进行消息传递的系统上,在它们之间建立逻辑通道,由消息中间件实现消息发送。
  消息中间件可以既支持同步方式,又支持异步方式,实际上它是一种点到点的机制,因而可以很好地适用于面向对象的编程方式。
  中间件领域目前最热门的技术是异步的消息中间件,异步中间件技术比同步中间件技术具有更强的容错性,在系统故障时可以保证消息的正常传输,因而在过去的两年里增长迅速。异步中间件技术可以分为两类:广播方式和发布/订阅方式。广播方式把消息分发给系统的所有用户。发行/订阅方式可以指定哪种类型的用户可以接收哪种类型的消息。发布/订阅方式由于更加智能有效,事实上已成为异步中间件的非正式标准。

(五)交易中间件
  交易中间件是专门针对联机交易处理系统而设计的。联机交易处理系统需要处理大量并发进程,处理并发涉及到操作系统、文件系统、编程语言、数据通讯、数据库系统、系统管理、应用软件,是一个相当艰巨的任务,但是工作的难度可以通过采用一个交易中间件来简化。交易中间件就是一组程序模块,用以大大减少开发一个联机交易处理系统所需的编程量。X/OPEN 组织专门定义了分布式交易处理的标准及参考模型,把一个联机交易系统划分成资源管理(RM)、交易管理(TM)和应用(AP)三部分,定义了应用程序、交易管理器、多个资源管理器是如何协同工作的。资源管理器是指数据库和文件系统,交易管理器可归入交易中间件。交易中间件管理由应用声明和提交的交易,并通过两阶段提交协议等方式保证分布式交易的完整性、控制并发、实现交易路由和均衡负载。

  交易中间件理论上相对成熟,功能和性能界定清晰,但基本上适用于联机交易系统,如银行业务系统、定票系统等。尽管交易信息也是消息,交易中间件也是基于消息的传输,也可支持同步和异步方式,但与消息中间件的定位差距较大,属于一种较专用的中间件。

(六)对象中间件
  面向对象的技术一直是软件界努力追求的目标,传统的对象技术通过封装、继承及多态提供了良好的代码重用功能。但是这些对象只存在一个程序中,外面的世界并不知道它们的存在,也无法访问它们。面向对象的中间件就是要解决这些问题,它提供一个标准的构件框架,能使不同的厂家的软件通过不同的地址空间、网络和操作系统互相交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说都是透明的。例如,我们可以通过简单的组装或扩展已有的构件就可以建立一个客户机/服务器结构的信息系统。面向对象的中间件技术的目标就是为软件用户及开发者提供一种应用级的即插即用的互操作性,就象现在使用集成块和扩展板一样。

  有关对象中间件的标准相继问世,像OMG组织的CORBA、Microsoft的COM 以及IBM公司的SOM等,这些标准都极大地促进了对象中间件技术的发展,随着面向对象的应用系统的逐渐增长,对象中间件的需求也在逐年加大。对象技术的优势和对象中间件的标准化,促使对象中间件的功能将最终涵盖其它几类中间件的功能而成为中间件产品的主流。


四、中间件技术的发展趋势

  根据有关组织的预测,消息中间件是目前中间件技术的发展热点,如果也把交易中间件看成是一类特殊的消息中间件的话,那么消息中间件在目前的市场上占据主导地位,而且发展势头迅猛。消息中间件以其独特的优势为各种分布式应用的开发注入了强大动力,极大地推动了应用系统集成的发展。

  对象中间件技术也发展迅速,各大硬软件厂商都在积极参与有关标准的制定和产品开发工作,象IBM、HP、DEC、AT&T、ICL、Microsoft等都制定了相应的战略。许多对象中间件的专门厂商也相继诞生,未来的对象中间件市场会出现群雄逐鹿的局面。

  中间件的另一个发展动向是向Internet 的延伸,Internet/Intranet 技术早已在全球范围内广泛采用,但由于其自身的技术特点,在构造许多大型企业级应用时仍显不足,如并发控制、负载均衡、可靠传输、数据路由等,因而仍然存在供中间件发展的中间地带。

  总之,中间件技术作为软件行业新崛起的一个崭新的分支,正在全球范围内迅猛发展,根据IDC组织的预测,到2002年,全球的中间件市场将达到70亿美元。中间件技术的发展,也将把分布式应用的带到一个新的境界。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值