中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
IDC的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
下面组出形成原因
存在必定合理
但是合什么理呢
知道为什么要存在就知道在什么进修应该使用它了
中间件的演变过程
随着计算机技术的发展,IT厂商出于商业和技术利益的考虑,各自产品之间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历史原因和降低风险的考虑,必然也无法避免多厂商产品并存的局面。
于是,如何屏蔽不同厂商产品之间的差异,如何减少应用软件开发与工作的复杂性,就成为技术不断进步之后,人们不能不面对的现实问题。
显然,由一个厂商去统一众多产品之间的差异是不可能的,而单独由计算机用户在自己的应用软件中去弥补其中的大片空档,由于技术深度和技术广度的要求,必然也是勉为其难。于是,中间件应运而生。中间件试图通过屏蔽各种复杂的技术细节使技术问题简单化。
在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计、管理,复杂多变的网络环境,数据分散处理带来的不一致性问题、性能和效率、安全,等等。这些与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件这类的软件。
中间件解决什么问题
世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:
· 缩短应用的开发周期
· 节约应用的开发成本
· 减少系统初期的建设成本
· 降低应用开发的失败率
· 保护已有的投资
· 简化应用集成
· 减少维护费用
· 提高应用的开发质量
· 保证技术进步的连续性
· 增强应用的生命力
具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。Standish的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
由于中间件的种类较多,企业在使用中间件的时候必须作出选择。选择应该从以下几方面进行。
选择种类:先确定类别再确定产品
中间件的特殊性使得企业在选择具体的中间件产品以前,必须确定企业的应用类型或具体需求,进而仔细确定选择使用哪一类中间件。这一点非常重要,比如企业的应用类型如果只是传递消息,而对高可靠、高并发、高效率无特殊要求,就应该选择消息中间件而非交易中间件。如果是典型的关键任务的联机事务处理系统就应该选择交易中间件。如果要建立分布式构件应用,企业就应该选择基于对象的中间件。如果想基于Web建立应用,最好选用Web应用服务器。下面给出一个选择的流程图:
中间件产品选择流程图
当然,实际情形远非图中描述的那么简单。中间件的功能经常是相互交叉的,比如有的交易中间件包含有消息传递的功能;有些对象中间件继承了交易中间件的特性;而有的应用服务器,可以把交易管理中间件或消息中间件作为它的一种服务,等等。因此,除了技术上的界定以外,还要考虑以下因素:
·技术成熟度。不同的中间件的发展历史都不同。由于中间件涉及的技术面广,与操作系统、网络、数据库、应用都有关系,因此中间件从诞生到成熟需要2~3年的时间。中间件的技术成熟度是一个很需要关注的问题。
·与遗留应用的结合度。如果您选用中间件构造的应用与传统的遗留应用要建立联系的话,就需要考虑这个问题。
·使用的难易程度。每类中间件使用的难度也不尽相同。有些中间件只是您应用的一部分,而有些中间件将会给您的应用一个新的体系结构。应用的现状、应用开发队伍的水平、中间件本身的复杂程度等,都会影响中间件的使用效果。
·成本。不同类的中间件的成本不同,如把消息中间件只是用在局域网上实现数据访问显然代价太大。把交易中间件用在非交易处理类系统中去传递消息同样不足取。另外也要考虑技术培训对开发成本所带来的影响。
·技术方向。有的中间件比较传统,而有的中间件是发展方向,中间件的选择同您对软件技术发展趋势的把握紧密相关。如果企业已决定用构件技术或Web技术,您就要选择相关的中间件。
选择服务:影响成败
中间件处在“顶天立地”的地位,决定了中间件与应用软件、操作系统、数据库系统密切相关,中间件的技术服务需要深度和广度。因此,要求一个中间件厂商不仅要了解中间件本身,还必须具备全面的技术能力,尤其是要熟悉应用,否则是做不好技术服务的。一个好的产品也许会由于缺乏的质量的技术服务而导致整个系统运转不灵。
注意应用环境:软件确实有国情
值得特别注意的是,中国的应用环境和国外有一些差别,表现在以下几个方面:网络通讯状况参差不齐,大量存在9600bps通信线路,国外中间件产品对此缺乏足够的准备;许多大企业在管理上采用多级树型结构,而国外中间件产品又多为网状结构。产生在优良环境里的国外产品,在国内应用环境中并不一定能够达到其预期的功能性能指标。
安全:不容忽视
国家已有明文规定,要建立安全的信息体系,安全产品立足于国内。中间件作为一个支撑软件,与系统安全紧密相关。国内自主版权的中间件产品将是金融、政府、军队、公安等敏感部门的解决信息安全问题一条道路。
选择专业厂商:选择未来
选择厂商和选择产品并不是同一个概念,一是有多家厂商在做同一种中间件产品,二是一家厂商在做多种中间件产品。因此,中间件厂商的选择是中间件选择策略中的一个重要组成部分。
由于企业对中间件需求的多样性,也使得对厂商的选择有不同的方式。常见的两种现象,一是更注重产品本身,选择最好的中间件产品,而不在乎不同中间件之间的相互配合和厂家本身的实力。另一种观点正好相反,选择一个有各种中间件产品的厂商。不管哪种观点,都应以满足您目前和将来对中间件的需求为基础。
由于中间件目前处在快速发展时期,种类繁多,竞争激烈,需要强有力的支持服务,因而选择一个专业从事中间件的厂商总是有益的,否则会对未来的支持和发展带来问题。试想,一个厂商自己都不把您要选择的中间件作为其主导性发展方向,怎么能成为您可信赖的长期合作伙伴呢?
测试:合脚才是好鞋
测试是一个直接有效的手段,建立一个与您的实际应用环境类似的模拟环境,编写模拟测试程序,在实际应用中对中间件的功能和性能进行逐项测试。测试应包括功能测试、适应性测试、扩展性测试、压力测试、边界测试、破坏测试、连续运行测试等等。不同类的中间件测试方法不尽相同。但必须能模拟出使用中间件的真实情况。
考察:让事实说话
如果测试还不能让您拿定主意的话,您也可以去考察实际应用案例,并倾听中间件使用者的感受。当然考察的时候要非常仔细,包括应用环境、应用类型、业务量、中间件的工作状况、配置、中间件开发和使用的难易度、厂家的支持服务、价格等。
IDC的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
下面组出形成原因
存在必定合理
但是合什么理呢
知道为什么要存在就知道在什么进修应该使用它了
中间件的演变过程
随着计算机技术的发展,IT厂商出于商业和技术利益的考虑,各自产品之间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历史原因和降低风险的考虑,必然也无法避免多厂商产品并存的局面。
于是,如何屏蔽不同厂商产品之间的差异,如何减少应用软件开发与工作的复杂性,就成为技术不断进步之后,人们不能不面对的现实问题。
显然,由一个厂商去统一众多产品之间的差异是不可能的,而单独由计算机用户在自己的应用软件中去弥补其中的大片空档,由于技术深度和技术广度的要求,必然也是勉为其难。于是,中间件应运而生。中间件试图通过屏蔽各种复杂的技术细节使技术问题简单化。
在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计、管理,复杂多变的网络环境,数据分散处理带来的不一致性问题、性能和效率、安全,等等。这些与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件这类的软件。
中间件解决什么问题
世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:
· 缩短应用的开发周期
· 节约应用的开发成本
· 减少系统初期的建设成本
· 降低应用开发的失败率
· 保护已有的投资
· 简化应用集成
· 减少维护费用
· 提高应用的开发质量
· 保证技术进步的连续性
· 增强应用的生命力
具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。Standish的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
由于中间件的种类较多,企业在使用中间件的时候必须作出选择。选择应该从以下几方面进行。
选择种类:先确定类别再确定产品
中间件的特殊性使得企业在选择具体的中间件产品以前,必须确定企业的应用类型或具体需求,进而仔细确定选择使用哪一类中间件。这一点非常重要,比如企业的应用类型如果只是传递消息,而对高可靠、高并发、高效率无特殊要求,就应该选择消息中间件而非交易中间件。如果是典型的关键任务的联机事务处理系统就应该选择交易中间件。如果要建立分布式构件应用,企业就应该选择基于对象的中间件。如果想基于Web建立应用,最好选用Web应用服务器。下面给出一个选择的流程图:
![](http://www0.ccidnet.com/tech/app/2001/07/20/image/010720midware1.jpg)
中间件产品选择流程图
当然,实际情形远非图中描述的那么简单。中间件的功能经常是相互交叉的,比如有的交易中间件包含有消息传递的功能;有些对象中间件继承了交易中间件的特性;而有的应用服务器,可以把交易管理中间件或消息中间件作为它的一种服务,等等。因此,除了技术上的界定以外,还要考虑以下因素:
·技术成熟度。不同的中间件的发展历史都不同。由于中间件涉及的技术面广,与操作系统、网络、数据库、应用都有关系,因此中间件从诞生到成熟需要2~3年的时间。中间件的技术成熟度是一个很需要关注的问题。
·与遗留应用的结合度。如果您选用中间件构造的应用与传统的遗留应用要建立联系的话,就需要考虑这个问题。
·使用的难易程度。每类中间件使用的难度也不尽相同。有些中间件只是您应用的一部分,而有些中间件将会给您的应用一个新的体系结构。应用的现状、应用开发队伍的水平、中间件本身的复杂程度等,都会影响中间件的使用效果。
·成本。不同类的中间件的成本不同,如把消息中间件只是用在局域网上实现数据访问显然代价太大。把交易中间件用在非交易处理类系统中去传递消息同样不足取。另外也要考虑技术培训对开发成本所带来的影响。
·技术方向。有的中间件比较传统,而有的中间件是发展方向,中间件的选择同您对软件技术发展趋势的把握紧密相关。如果企业已决定用构件技术或Web技术,您就要选择相关的中间件。
选择服务:影响成败
中间件处在“顶天立地”的地位,决定了中间件与应用软件、操作系统、数据库系统密切相关,中间件的技术服务需要深度和广度。因此,要求一个中间件厂商不仅要了解中间件本身,还必须具备全面的技术能力,尤其是要熟悉应用,否则是做不好技术服务的。一个好的产品也许会由于缺乏的质量的技术服务而导致整个系统运转不灵。
注意应用环境:软件确实有国情
值得特别注意的是,中国的应用环境和国外有一些差别,表现在以下几个方面:网络通讯状况参差不齐,大量存在9600bps通信线路,国外中间件产品对此缺乏足够的准备;许多大企业在管理上采用多级树型结构,而国外中间件产品又多为网状结构。产生在优良环境里的国外产品,在国内应用环境中并不一定能够达到其预期的功能性能指标。
安全:不容忽视
国家已有明文规定,要建立安全的信息体系,安全产品立足于国内。中间件作为一个支撑软件,与系统安全紧密相关。国内自主版权的中间件产品将是金融、政府、军队、公安等敏感部门的解决信息安全问题一条道路。
种类 | 作用 | 典型产品 |
消息中间件 | 适用于任何需要进行网络通信的系统,负责建立网络通信的通道,进行数据或文件发送。消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供服务。 | ibm mqseries 东方通科技tonglink/q |
交易中间件 | 适用于联机交易处理系统,主要功能是管理分布于不同计算机上的数据的一致性,保障系统处理能力的效率与均衡负载。交易中间件所遵循的主要标准是x/open dtp模型。 | ibm cic bea tuxedo 东方通科技tongeasy |
对象中间件 | 基于corba标准的构件框架,相当于软总线,能使不同厂家的软件交互访问,为软件用户及开发者提供一种即插即用的互操作性,就像现在使用集成块和扩展板装配计算机一样。 | iona orbix borland visibroker ibm componentbroker 东方通科技tongbroker |
应用服务器 | 用来构造internet/intranet应用和其它分布式构件应用,是企业实施电子商务的基础设施。应用服务器一般是基于j2ee工业标准的。 | ibm websphere bea weblogic 东方通科技tongweb |
安全中间件 | 以公钥基础设施(pki)为核心的、建立在一系列相关国际安全标准之上的一个开放式应用开发平台,向上为应用系统提供开发接口,向下提供统一的密码算法接口及各种ic卡、安全芯片等设备的驱动接口。 | entrust entrust 东方通科技tongsec |
应用集成服务器 | 把工作流和应用开发技术如消息及分布式构件结合在一起,使处理能方便自动地和构件、script 应用、工作流行为结合在一起,同时集成文档和电子邮件。 | lss flowman ibm flowmark vitria businessagiliti |
选择专业厂商:选择未来
选择厂商和选择产品并不是同一个概念,一是有多家厂商在做同一种中间件产品,二是一家厂商在做多种中间件产品。因此,中间件厂商的选择是中间件选择策略中的一个重要组成部分。
由于企业对中间件需求的多样性,也使得对厂商的选择有不同的方式。常见的两种现象,一是更注重产品本身,选择最好的中间件产品,而不在乎不同中间件之间的相互配合和厂家本身的实力。另一种观点正好相反,选择一个有各种中间件产品的厂商。不管哪种观点,都应以满足您目前和将来对中间件的需求为基础。
由于中间件目前处在快速发展时期,种类繁多,竞争激烈,需要强有力的支持服务,因而选择一个专业从事中间件的厂商总是有益的,否则会对未来的支持和发展带来问题。试想,一个厂商自己都不把您要选择的中间件作为其主导性发展方向,怎么能成为您可信赖的长期合作伙伴呢?
测试:合脚才是好鞋
测试是一个直接有效的手段,建立一个与您的实际应用环境类似的模拟环境,编写模拟测试程序,在实际应用中对中间件的功能和性能进行逐项测试。测试应包括功能测试、适应性测试、扩展性测试、压力测试、边界测试、破坏测试、连续运行测试等等。不同类的中间件测试方法不尽相同。但必须能模拟出使用中间件的真实情况。
考察:让事实说话
如果测试还不能让您拿定主意的话,您也可以去考察实际应用案例,并倾听中间件使用者的感受。当然考察的时候要非常仔细,包括应用环境、应用类型、业务量、中间件的工作状况、配置、中间件开发和使用的难易度、厂家的支持服务、价格等。