中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。它与操作系统、数据库并列为三大基础软件。中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

中间件技术的核心就是应用服务器(Application Server)。应用服务器的主要功能是为现代三层、多层应用系统提供基础软件平台。应用服务器涵盖了中间件技术的许多方面。中间件技术有许多不同实现方案,但人们在提到中间件的第一时间,想到的往往是Java和J2EE。实际上中间件的完善和成熟与J2EE有密切关系。

中间件和应用服务器,尤其是J2EE应用服务器,为企业级大型、巨型应用软件的开发、部署、运行和管理提供了有力的工具和平台。在当前的Internet/Intranet/Extranet环境中,企业级应用系统大多采用三层或多层应用模式。三层结构就是把应用软件分隔成用户界面层,商业逻辑层和数据库层。多层结构与传统的C/S两层结构相比,有着伸缩性好、管理性强、安全性高、软件重用性好以及节省开发时间等诸多优点。J2EE实现的多层体系结构通常包括以下几个部分:在客户端是网页浏览器、小应用程序,在服务器端,前端是运行在网页容器上的JSP和Servlet,在后端是运行在应用服务器上的EJB容器。所有这些,通过JDBC和数据库服务器相连。

随着中间件技术的发展和成熟,一些新的概念的模型被提了出来。其中最引人注目的是面向服务的架构(SOA)这一概念。SOA是一种借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。

经过十几年的发展和完善,中间件及应用服务器技术已经步入全面成熟的黄金岁月。许多应用平台被推上市场。总体而言有两大主流:一类基于J2EE,另一类基于微软的.NET。两类实现各有所长。J2EE平台的具有跨操作系统平台、单一Java语言、有多个厂商的产品可供选择、支持大型、巨型应用、系统的集成性高,可伸缩性(scalability)强、可用性(vailability)高的特点。而.NET具有开发速度快、使用及管理容易、适合中小型应用的特点。

基于J2EE的各类产品中,占主流的是IBM公司的WebSphere平台,BEA公司的WebLogic平台以及RedHat的JBoss。WebSphere和WebLogic是商业产品,在大型企业和关键应用中得到大量的使用。JBoss是开源(Open Source)产品,但RedHat也提供商业支持。JBoss在中小型应用中有大量使用。


  应用服务器中间件又称为“应用服务器软件平台”,是当代软件的基础设施,是最为重要的一类中间件。应用服务器能把不同的应用软件作为构件整合到一个协同工作的环境里,并为应用提供了名字、事务、安全、消息、数据访问等服务,此外他还提供给用构件的研发、部署、运行及管理功能。

传统的中间件有数据访问中间件、远程过程调用中间件、消息中间件、联机事务处理中间件等。Internet的出现又催生了早期的Web服务器,用于满足人们基于Web浏览器进行信息交换的需要。但由于Web服务器并不能为大规模商业应用提供高性能和高可靠性支持,因此使应用的扩展性受到了限制,和此同时软件体系结构也正在经历着从C/S、B/S到三层/多层的深刻变革。

面向对象技术和构件技术的兴起,出现了以Java/EJB、DNA/COM和CORBA为代表的分布式对象/构件计算模型,使用上述技术的应用服务器中间件涵盖了传统中间件的功能,完全支持三层/多层的软件体系结构发展和软件复用,逐渐成为中间件产品的主流。随着构件技术进一步发展,Java/EJB融合了CORBA的好处并演化成为J2EE,Microsoft DNA/COM演化为.NET,CORBA也吸收了J2EE的构件/容器思想推出CCM架构。由于.NET是个封闭的体系,限制了他在其他平台,特别是企业级应用中的推广。J2EE是由SUN发起并由众多重要厂商参和制订的业界规范,为应用服务器的实现提供了一个开放和完整的底层框架,具有开放性、标准化、构件化、互操作和可扩展的特点,他能使用户在此标准下创建的应用程式都能运行于其上。更重要的是,在满足J2EE兼容性的条件下,在不同的应用服务器上的应用构件能非常好地互操作,这样能降低移植的风险和代价,提高应用的灵活性,有助于保护用户的投资,因此其业界接受程度非常高。经过几年的发展,主要的应用服务器厂商都已转向采用J2EE标准,J2EE成了事实上的应用服务器实现标准。