Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yulewei/3db77a69f2aa94a80fee71730dc6b0f0 to your computer and use it in GitHub Desktop.
Save yulewei/3db77a69f2aa94a80fee71730dc6b0f0 to your computer and use it in GitHub Desktop.

走近中间件技术

作者:中科院软件研究所 仲萃豪

出处:《中国科技信息》,2001年第10期12-13

来源:cnkicqvip

中间件是什么

中间件(middleware)是处于操系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。中间件属于基础软件的范畴,属于可复用软件。按照国内对软件的分类方法,中间件应该归入支撑软件,支撑软件的总的作用是为处于自己上层应用软件提供运行与开发的环境。今天,在欧美发达国家,中间件已经与操作系统、数据库管理系统并驾齐驱,成为基础软件的三架马车。人们在使用中间件时,往往是把一组中间件集成在一起。构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,因此,可定义为“中间件平台 = 中间件组 + 通信”。也可以把中间件看作在系统软件上构筑的平台,通常限定了只有用于分布式系统中才能称为中间件。中间件是一个通道,保障应用中信息的可靠传递;中间件是一个桥梁,使各应用构件间互通互连;中间件是一个框架,实现分布式应用的完整集成;中间件是一个平台,实现分布式应用的顺利部署。

中间件以自身的复杂换取了开发分布式应用系统的便捷。把所有与应用系统无关的基础性细节,由中间件来完成,帮助用户灵活、方便,高效地开发与集成应用系统。

随着 IT 技术的发展和市场的演进,中间件的内涵也变得越来越丰富,品种越来越多,技术也越来越复杂,应用范围越来越广。中间件已成为分布式应用系统中不可缺少的基础软件。

中间件按功能可分为以下几类:

  1. 通信处理中间件,又称消息中间件,包括消息发送和接收、可靠投递、智能路由、名字服务、队列处理、脱机处理,和广播等机制。如 TongLINK/Q、BEA MessageQ、IBM MQSeries 等,称为通信处理中间件。这是中间件中唯一不可缺少的,是销售额中最大的中间件产品。

  2. 事务处理中间件,用于开发联机事务处理 OLTP。每一笔事务常常要多台服务器上的程序顺序地协调完成,一旦中间发生某种故障,就要恢复到事务处理的开始状态,既要确保系统的可用性、事务完整性,又要确保使各事务处理之间相互不受影响的独立性;有时在某台服务器发生故障时,不但要完成恢复工作,而且要自动切换系统,达到系统永不停机,实现了高可靠性运行,同时要使大量事务在多台应用服务器能实时井发运行,井进行负载平衡地调度,实现了昂贵的可靠性大型计算机系统同等的功能。为了实现这个目标,要求系统具有监视和调度整个系统的功能。BEA 的 Tuxedo 由此而著名,它成为增长率最高的厂商。一个事务处理平台,根据 Open Group 的参考模型规定,应由事务处理中间件、通信处理中间件以及数据存取管理中间件三部分组成。东方通科技公司的 TongLINK/Q 和 TongEASY 实现了这个参考模型规定。

  3. 数据存取管理中间件。在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型、复合文档型、具有各种存放格式的。多媒体型,或者是经过加密或压缩存放的,该中间件将为在网络上虚拟缓冲存取、交换、格式转换、解压等带来方便。

  4. Web 服务器中间件,又称应用服务器。应用服务器是为了满足目前日益增长的 Internet 应用的需要诞生的。Internet 应用,尤其是以 Internet 为基础的电子商务应用,要求实现信息的采集、管理、发布、交换、处理等,并能很好的解决诸如应用的快速开发和构建、处理大量并发事务、支持 7x24 小时作业、易扩展、互操作性、信息安全等方面的问题。以上这些问题,只是依靠简单的 Web 技术是不够的。为了很好地解决这些问题,需要以 Web 的低层技术为基础,规划一个整体的应用框架,并提供一个支撑平台,用于 Internet 应用的开发、部署、运行和管理,并能借此解决上述各种问题。这已经发展成为一个能广泛适应的标准的支撑层,成为 Internet 应用的基础设施(Infrastructure),这一支撑层实际上是 Web 服务器中间件,业界给了他一个崭新的名字——应用服务器。目前流行的应用服务器的产品很多,包括 IBM WebSphere、BEA WebLogic、SilverStream、Oracle OAS 等,国内的产品有东方通科技的 TongWeb 等。

  5. 安全中间件。一些军事、政府和商务部门上网的最大障碍是安全保密问题,而且不能使用国外提供的安全措施(如防火墙、加密、论证、安全网关、虚拟专网等),必须用国产的产品。它遵循国际上安全标准,可用于开发、构造更高层伪安全产品,或支持各应用系统的安全运行。

  6. 跨平台中间件。在分布式系统中,还需要集成各节点上的不同系统平台上的构件或新老版本的构件,由此产生了构架中间件,功能最强的是 CORBA 中间件可以跨任意平台,但是太庞大,降低系统效率;Java Bean 较灵活简单,很适合于做浏览器,但运行效率也差;DCOM 模型主要适合 Windows 平台,已广泛使用。实际上国内新建系统主要是 UNIX(包括 Linux)和 Windows,因此针对这二平台建立相应的中间件要实用得多。

  7. 专用平台中间件。为特定应用领域、设计领域参考模式,建立相应的应用服务器上的构架,配置相应的构件库和中间件,为应用服务器开发和运行特定领域的关键任务(如金融、证券交易、电子商务、网站、ERP、CRM、Workflow 等)。

  8. 网络中间件,它包括网管、接入、网络测试、虚拟杜区、虚拟缓冲等,也是当前最热门的研发项目。

设计中间件的难度

在设计和实现一个分布式应用系统时,可以发现其中 70% 以上的代码是与具体应用的关键任务无关的,而这部分内容与系统软件很相似,就像发明 Java 的最初起因是人们不满足于在各种不同的环境下重复开发功能相同的程序一样,为此技术人员就把它独立分离出来,产生了中间件。然而一个成熟的中问件产品要能够跨过不同硬件平台、不同的网络环境、不同的数据库系统之间互操作,解决新旧系统并存等等问题,从而增加了它的研发难度。应用的互连和互操作是中间件首先要解决的问题,它是一种应用集成的关键件,不管这些应用分布在不同的硬件平台上,使用了不同的数据库系统,透过了多么复杂的网络,或是同一电脑中的不同应用系统。一个好的中间件产品要能解决应用互连带来的各种问题。在通讯上要支持各种通讯协议、各种通讯服务模式、传输各种数据内容、数据格式翻译、流量控制、数据加密、数据压缩等等。在中间件核心要解决名字服务、安全控制、并发控制、可靠性保证、效率保证等。在开发上要能提供基于不同平台的丰富的开发接口、支持流行的开发工具、支持流行的异构互连接口标准(如 XA,IDL)等。在管理上解决对中间件本身配置、监控、调谐,为系统的易用易管理提供保证。其次,针对不同的应用领域,对中间件又有各种不同的要求。由于实际的应用环境千差万别,中间件就要解决应用中所遇到的各种问题。对于邮件系统需要要根据条件以及条件满足状态将信息及响应状态从一个应用传递到另一个应用;对联机事务处理系统,需要保证分布式的数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输等等。

中间件技术是新兴的技术,正处于成长的过程中,它要涉及和运用所有当前的新技术,其难度和复杂度很大,有大量的技术难题要我们去解决,有大量的中间件等待我们开发,并要经过大量的应用和考验,才能成熟,这就需要共同合作和努力,更需要国家制订相应政策和规划,给予扶植。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment