当前位置:文档之家› 中间件概述

中间件概述

中间件概述什么是中间件?在一个具体的应用项目之中,到底能不能够不用中间件?这也是中间件厂商经常被问到问题之一。

之所以有此一问,说明了用户只是知道了中间件,听说其很重要,但并真正不知道什么是中间件?我们最早知道的中间件是一个称为Tuxedo的东西,实质上它是一个交易中间件。

1998年IDC 公司对于中间件有一个定义,并根据用途将其划分为6个类别。

如今所保留下来的只有消息中间件和交易中间件,其他的已经被逐步融合到其他产品中了,被包裹进去了,在市场上已经没有单独的产品形态出现了。

例如,当时有一个叫屏幕数据转换的中间件,其主要是针对IBM大机终端而设计产品,用于将IBM大机终端的字符界面转化为用户所喜欢的图形界面,类似的东西当时都称为中间件。

但随着IBM大机环境越来越少,但是盛行一时的此类中间件如今已经很少再被单独提及。

2000年前后,互联网盛行起来,随之产生了一个新的东西,就是应用服务器。

实际上,交易中间件也属于是应用服务器,为了区分,人们传统的交易中间件称为分布交易中间件,因它主要应用在分布式环境下,而将新的应用服务器,称为J2EE中间件,到目前为止,这都是市场上非常热门的产品。

EAI概念出来之后,市场上又推出了一些新的软件产品,,例如工作流、Portal等,但从分类上不知道怎么归类,向上不能够划归应用,往下又不能归入操作系统,于是就把它归入了中间件,如此中间件的概念更加扩大了。

目前,市场上对于中间件,各家的说法不一,客观上也导致了理解上的复杂性。

如今,市场上又推出了很多新的概念,例如三层结构、构件、Web服务,其中风头最劲的当属SOA(面向服务的架构)。

实际上,他们都不是一个产品,而是一种技术的实现方法,是开发一个软件的一种方法论。

我们知道,最早软件开发方法就是编程、写代码的,其缺点在于无法复用,为此提出了构件化的软件开发方法,通过把编程中一些常用功能进行封装,并规范统一接口,供其它程序调用,例如我们开发一个新软件,可能要用到构件1、构件2、构件3,那么,我们只要对其进行本地组装,就可以得到我们想要的应用软件。

在互联网得到普及重视之后,软件开发方法在构件化基础上又有新发展,核心思想是软件并不需要囊括构件,所需要的仅仅是构件的运行结果,例如编写一个通信传输软件,就可以到网上寻找构件,并提出服务请求,得到结果后返回,而不需要下载构件并打包,这就是现在所说的SOA。

想要现实SOA,就要规范构件接口,同时还要规范构件所提交的服务结果,如此,新的软件开发的思想才能够行的通。

但SOA并不是一个产品,而是一种思想方法,而实现这种方法的基础,如今看来只有中间件。

那么,到底什么才是中间件,什么不是中间件?中间件应该具备两个关键特征:首先要为上层的应用层服务,这是一个基本条件;此外,又必须连接到操作系统的层面,并却保持运行工作状态,具备了这样两个特征才能称为中间件。

现在很多人把开发工具也称为中间件是不合适的,因为开发工具开发出来的软件,并不依赖开发工具与底层操作系统连接。

传统的客户/服务器模式是一种双层的结构,通常是一台个人计算机做客户机使用(运行客户端程序),另外一台服务器用于存放后台的数据库系统,应用程序可客户端直接相连,中间没有其他的逻辑。

程序的业务逻辑则一般存在于前台的应用程序中,即程序员根据客户的业务要求定制客户端程序,这种定制的程序没有通用性。

或者业务逻辑也存在于后台数据库中,以触发器(trigger)的方式实现。

这种方式有一个很大的缺点,就是一旦客户的业务逻辑有所改变的话,将引起应用程序的修改以及后台触发器的修改,将所有程序模块都重新修改、编译、连接的工作量是相当大的。

另外由于这种结构将用户界面和业务逻辑以及数据源绑定在一起,会消耗客户机的大量资源,对客户机来说是一个很大的负担。

为了克服由于传统客户/服务器模型的这些缺陷给系统应用带来的影响,一种新的结构出现了,这就是三层(N层)客户/服务器模型。

三层客户/服务器结构构建了一种分割式的应用程序。

系统对应用程序进行分割后,划分成不同的逻辑组件,主要分为三层:用户服务层:提供信息浏览,服务定位。

主要是实现用户界面,并保证用户界面的友好性、统一性。

业务处理层:实现客户的全部业务逻辑。

数据服务层:实现数据定义、存储、备份、检索等功能,主要有数据库系统实现。

这三个层次共同组成应用系统。

使用这种模型,可以将系统需求划分成可以明确定义的服务,例如事务服务、名字服务等。

将这些服务以组件的形式实现,一个组件可以实现系统中的一种或者多种服务,是这些服务的物理封装。

根据系统的功能、性能等各方面的需求,系统管理员可以在网络上灵活的部署这些组件。

并且根据业务的改动可以灵活的对这些服务组件进行修改,而不影响其它的组件,从而降低维护的费用。

另外,这些组件应该做成通用的,基于某一标准接口的,所以它们可以被重用,其他应用程序可以使用它们提供的应用程序接口调用组件,完成所需的操作。

这就是基于ORB的中间件模型。

这种模型完全克服了传统的客户/服务器模型的缺点,具有可重用性、灵活性、可管理性、易维护性等一系列优良的特性。

目前对ORB及其支撑环境--应用程序服务器的研究正是如火如荼,感兴趣的朋友想进一步了解,可以查阅相关文献和资料。

基于ORB的中间件模型虽然在性能上非常优异,但是目前在国内的应用远远没有达到普及的程度,应用最广泛的是基于Web数据库的中间件技术。

下面进行一些探讨。

数据库中间件的工作原理示意图如下:数据库中间件连接客户端程序(通常是应用程序)可数据库,为用户提供可靠便捷的数据库访问。

举一个简单的例子:在一个局域网环境下,使用Delphi编写客户端应用程序,后台数据库使用Ms NT4 +SQL Server,在Delphi中,通过ODBC或者BDE连接到后台数据库。

在此ODBC就是一种标准的数据库中间件,它是Windows操作系统自带的服务。

BDE (Borland Database Engine)不是中间件,因为程序员虽然可以通过BDE和后台数据库相连,但是实际上BDE还是要通过ODBC的。

后面提到的Web环境下的JDBC和ODBC类似,也是操作系统提供的标准数据库中间件。

这是一种传统的结构,这种结构有很多不足之处,例如有很"胖"的客户端,从而造成系统的可扩展性差等。

我们要重点介绍的是基于Web的数据库中间件。

下面是它的工作原理图:这是目前得到广泛应用的一种标准结构。

在这种结构中,用户使用标准的浏览器(如微软公司的IE)通过Internet和http协议访问服务方提供的Web服务器,Web服务器分析用户浏览器提出的请求,如果是页面请求,则直接用http协议向用户返回要浏览的页面。

如果有数据库查询操作的请求(当然也包括修改、添加记录等),则将这个需求传递给Web服务器和数据库之间的中间件,这个中间件当然不是odbc了,由中间件再向数据库系统提出操作请求,得到结果后再返回给Web服务器,Web服务器把数据库操作的结果形成html页面,再返回给浏览器。

在这种结构下,有许多中间件方案可以选择:1、CGI(公共网关接口)公共网关接口是一种Web站点上可以用来访问Web站点的用户交互的各种程序的标准,这里讲的交互主要是允许用户在浏览器上访问数据库,完成各种数数据库的操作。

支持CGI的平台非常广泛,而且开发者在开发CGI程序时,也可以采用任何一种语言,如Perl,C,C++,vb,Delphi等。

CGI有个最大的缺点就是执行效率低,因为Web服务器都支持并发访问,对每个数据查询请求都要启动一个CGI的进程,这样极大的浪费服务器资源。

2、ASP(Active Server Pages)ASP是一种开放的应用程序环境。

它支持将Html脚本和可重用的Active server组件结合在一起构建交互式网页。

所采用的技术主要是微软的组件技术(COM),通过组件ActiveDataObject(ADO)建立和数据库的连接。

另外,ASP可以直接在Html文件中包含可执行的脚本,这样页面文件和脚本的开发就变成了一个过程。

而在使用CGI的时候,程序和页面文件是要在不同的开发环境下进行开发的,这就导致了程序编制和修改的困难性。

3、JSP(Java Server Page)近年来Java的流行想必大家都已经熟知了。

Java是Sun公司开发的一种面向对象的程序设计语言,它和传统的程序设计语言不同,支持多线程控制,而且跨平台。

Java为Internet 应用带来了一场变革。

Sun公司提供了一种标准的访问数据库的Java应用程序接口:JDBC,JDBC定义了Java与数据库之间的接口类库,是Java语言中执行SQL语句的API。

程序设计人员通过它可以方便的建立与数据库的连接,操纵数据库。

JSP综合了中间件和Java的优点:前者的优点在于可以使程序访问异构的数据库,而不必对应用程序作出改动,后者的优点在于具有平台无关行,不需要为不同平台编写不同的应用程序。

也就是同样的程序可以在Windows环境下运行,也可以在Unix或者Linux下运行.JSP的工作方式为:客户端浏览器首先访问Web服务器,从Web服务器上下载Java小程序Apple t的字节码文件,以及相关类和JDBC接口的字节码文件。

然后和Web服务器脱离,Applet根据数据库服务器的地址、端口号、帐号和数据库服务器连接,进行交互操作。

由于JSP技术有可操作性、可维护性、安全性、高效性等一系列优良特性,因此和其他中间件技术相比,有很大的优势。

目前,JSP技术已经越来越广泛的应用到各行各业当中。

相关主题