客户机/服务器已经流行多年,尽管有专家预测到2010年,传统的客户机/服务器结构有可能过时,代之于Web技术、对象技术、数据仓库技术等新的概念和结构,但是,实际上客户机/服务器还在发展,如三层或多层客户机/服务器结构,客户机/服务器方式的应用还在迅猛扩张。
随着对各种旧有应用的不断扩充和新应用的不断增加,各企业IT部门面临的问题也越来越多,诸如不同硬件平台、不同网络环境、不同数据库之间的互操作,多种应用模式并存,系统效率过低,传输不可靠,数据加密,开发周期过长,等等,这些问题如果单纯依赖传统的系统软件或工具软件提供的功能已经不能满足要求,诸如此类的问题便产生了中间件,就象JAVA产生的最初起因是人们不满足于为各种不同的环境重复开发功能相同的程序。这些问题中许多是由各种不同的厂商的产品并存所引起的,又不能靠传统的系统软件(如操作系统、数据库等)、工具软件(如CASE 工具、4GL等)解决。中间件可以理解成是处于应用软件和系统软件之间的一类软件,或者是独立于硬件或数据库厂商(处于其产品的中间,实现其互连)的一类软件,或者是客户方与服务方之间的连接件,或者是需要进行二次开发的中间产品。总之,中间件是在中间。
应用的互连和互操作是中间件要解决的第一位的问题。不管这些应用分布在什么硬件平台上,使用了什么数据库,透过了多么复杂的网络,或是同一电脑中的不同应用系统。中间件是一种应用级的软件,是一种应用集成的关键构件,一个好的中间件产品要能解决应用互连带来的各种问题,通讯要支持各种通讯协议、各种通讯服务模式、传输各种数据内容、数据格式翻译、流量控制、数据加密、数据压缩等;中间件核心要解决名字服务、安全控制、并发控制、可靠性保证、效率保证等。应用开发要能提供基于不同平台的丰富的开发接口、支持流行的开发工具、支持流行的异构互连接口标准(如XA、IDL等);系统管理要解决对中间件本身的配置、监控、调谐,为系统的易用易管理提供保证。(见BEA TUXEDO网站)
另外,针对不同的应用领域,对中间件又有各种不同的要求。如对于邮件系统需要提供存储转发功能;对工作流应用需要以条件满足状态将信息从一个应用传递到另一个应用;对联机交易处理系统,需要保证数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输,等等。