标题：中间件软件
中间件软件
中间件（middleware）是基础软件的一大类，属于可复用软件的范畴。顾名思义，中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上，应用软件的下层，总的作用是为处于自己上层的应用软件提供运行与开发的环境，帮助用户灵活、高效地开发和集成复杂的应用软件。 
在众多关于中间件的定义中，比较普遍被接受的是IDC表述的：中间件是一种独立的系统软件或服务程序，分布式应用软件借助这种软件在不同的技术之间共享资源，中间件位于客户机服务器的操作系统之上，管理计算资源和网络通信。 
IDC对中间件的定义表明，中间件是一类软件，而非一种软件；中间件不仅仅实现互连，还要实现应用之间的互操作；中间件是基于分布式处理的软件，最突出的特点是其网络通信功能。
中间件软件起源
我们最早知道的中间件是一个称为Tuxedo的东西，实质上它是一个交易中间件。1998年IDC公司对于中间件有一个定义，并根据用途将其划分为6个类别。如今所保留下来的只有消息中间件和交易中间件，其他的已经被逐步融合到其他产品中了，被包裹进去了，在市场上已经没有单独的产品形态出现了。例如，当时有一个叫屏幕数据转换的中间件，其主要是针对IBM大机终端而设计产品，用于将IBM大机终端的字符界面转化为用户所喜欢的图形界面，类似的东西当时都称为中间件。但随着IBM大机环境越来越少，但是盛行一时的此类中间件如今已经很少再被单独提及。 
2000年前后，互联网盛行起来，随之产生了一个新的东西，就是应用服务器。实际上，交易中间件也属于是应用服务器，为了区分，人们传统的交易中间件称为分布交易中间件，因它主要应用在分布式环境下，而将新的应用服务器，称为J2EE中间件，到目前为止，这都是市场上非常热门的产品。 
EAI概念出来之后，市场上又推出了一些新的软件产品，，例如工作流、Portal等，但从分类上不知道怎么归类，向上不能够划归应用，往下又不能归入操作系统，于是就把它归入了中间件，如此中间件的概念更加扩大了。目前，市场上对于中间件，各家的说法不一，客观上也导致了理解上的复杂性。 
如今，市场上又推出了很多新的概念，例如三层结构、构件、Web服务，其中风头最劲的当属SOA(面向服务的架构)。实际上，他们都不是一个产品，而是一种技术的实现方法，是开发一个软件的一种方法论。我们知道，最早软件开发方法就是编程、写代码的，其缺点在于无法复用，为此提出了构件化的软件开发方法，通过把编程中一些常用功能进行封装，并规范统一接口，供其它程序调用，例如我们开发一个新软件，可能要用到构件1、构件2、构件3，那么，我们只要对其进行本地组装，就可以得到我们想要的应用软件。在互联网得到普及重视之后，软件开发方法在构件化基础上又有新发展，核心思想是软件并不需要囊括构件，所需要的仅仅是构件的运行结果，例如编写一个通信传输软件，就可以到网上寻找构件，并提出服务请求，得到结果后返回，而不需要下载构件并打包，这就是现在所说的SOA。想要现实SOA，就要规范构件接口，同时还要规范构件所提交的服务结果，如此，新的软件开发的思想才能够行的通。但SOA并不是一个产品，而是一种思想方法，而实现这种方法的基础，如今看来只有中间件。 
那么，到底什么才是中间件，什么不是中间件?从东方通科技的观点看，中间件应该具备两个关键特征:首先要为上层的应用层服务，这是一个基本条件;此外，又必须连接到操作系统的层面，并却保持运行工作状态，具备了这样两个特征才能称为中间件。现在很多人把开发工具也称为中间件是不合适的，因为开发工具开发出来的软件，并不依赖开发工具与底层操作系统连接。
典型案例
现在最流行的交易中间件为Tuxedo的东西，实质上它是一个交易中间件，如果你想真正的知道中间件的定义，我认为学习一下它，是唯一的办法。 
在当今系统整合、全球应用、永远可用的业务环境中，企业要求分布式事务处理（TP）的基础结构，不仅能够充分发挥现有技能和应用资产的作用，而且还要具备基于标准的互操作性以简化集成。 
BEA Tuxedo 是当今 C、 C++和 COBOL解决方案的首选平台。它运行着一些最大型的关键任务事务处理系统，如有线传输、ATM和电信。它是许多世界领先公司的支柱。 
只有 BEA Tuxedo 才能提供这样强大的平台，满足在分布式异构计算环境下运行如此大量应用的需求；它能够使事务在全球范围内跨任何系统，从面向客户的关键任务应用延伸到后台处理。 
BEA Tuxedo 是一种多语言、可任意伸缩的事务处理平台，它提供了用户为实现下列目标所必需的任务关键型基础结构： 
增强现有应用的可访问性 
整合企业事务处理和消息传递解决方案 
采用Web 服务的核心应用 
确保应用最高的可用性和吞吐量 
提升处理效率，改善资源管理 
降低总体拥有成本 
(图文翻译) 
BEA Tuxedo 向业务关键型基础结构的服务，提供可伸缩的BEA Tuxedo Domain 连接性和应用互操作性。 
BEA Tuxedo 产品功能 
BEA Tuxedo 采用基于面向服务的架构。该架构利用功能强大的消息和事务处理引擎，极大地简化企业分布式计算。 
高性能消息引擎：BEA Tuxedo 系统的核心是能够保证"一次性"交付的高性能、高可靠性的消息引擎。该引擎提供同步式、异步式和会话式消息 API。所有这些，不管是在一台机器上，还是在相关机器的集群中，或者在独立的 BEA Tuxedo 中，都是透明的。使用数据依赖路由，BEA Tuxedo可以根据其上下文和优先级来路由消息。 
面向服务的基础结构：BEA Tuxedo 系统与 Service Request Broker (SRB) 非常相似，它提供面向服务的基础架构，从而可以跨BEA Tuxedo 流程和应用，高效地路由、调度、管理各种请求、事件和应用队列。 
功能强大的 API：把诸如两阶段提交、异构资源管理之类复杂的事务管理，封装在标准的API 中，BEA Tuxedo 向 IT 部门提供了功能强大、用户友好的TP 基础结构，以满足其所有的 C、C++、COBOL应用的需求。 
高度分布的事务处理：BEA Tuxedo分布式处理管理服务，可以跨多个数据库优化事务处理，不管采用什么访问协议，都能确保所有在用资源和数据库的数据完整性。该系统不但跟踪事务处理参与者，而且监控两阶段提交协议，从而确保所有事务的提交和回滚在每个分布式资源中都得到妥善处理。 
管理功能： BEA Tuxedo 基于 Web的图形化管理功能，使分布式系统中的许多关键管理功能实现了自动化，从而最大程度地减少了操作员的干预。除此之外，BEA Tuxedo 系统还无缝集成了第三方SNMP管理控制台，以简化应用管理。 
(图文翻译) 
借助WebLogic Tuxedo Connector，BEA Tuxedo能实现与BEA WebLogic Enterprise Platform的互操作性。这种高速连接器支持完全的事务和安全性传播，允许企业构建无缝、端到端的解决方案。 
无限的伸缩性和可靠性 
复制服务框架：BEA Tuxedo 可以根据实时的系统负载和吞吐量，自动生成额外服务的复制服务框架，从而确保您最紧迫的任务关键型应用都具有最高的性能和可靠性。动态负载均衡：BEA Tuxedo 使应用能并行处理各种请求，在不同的分布式节点上同时处理各种事务。 
事务队列：为了灵活地处理事务或延迟事务处理，BEA Tuxedo 提供了事务队列；允许分布式应用可以用异步、“无连接”的方式协同运行。事务队列是一种模块化存储转发模型，可根据不同的标准，例如消息上下文、消息内容和日期时间，确定队列的优先级和延缓事务处理。 
监测：为了确保对各种应用的不间断访问， BEA Tuxedo 连续地监测各种组件，以防应用、事务、网络和硬件发生故障。 
运行、控制和管理（OA&M）服务：借助 BEA Tuxedo稳健的 OA&M 服务，可以自动重启和停止应用服务，消除了单点故障，无论何时何地，只要客户和合作伙伴需要，各种应用总是处于可用状态。万一发生故障，BEA Tuxedo 就能从系统中在逻辑上删除组件，将各种消息和事务自动地重新路由到还继续存在的系统中。 
安全性服务：系统全面的安全性服务包括：认证、授权和链路级加密（LLE）安全性，以便跨网络部署BEA Tuxedo应用时确保数据的安全。 
插入型安全性框架： BEA Tuxedo 还提供插件程序型框架，以支持公共密钥加密、数字签名和针对网络应用的第三方安全性产品，从而使BEA Tuxedo 能在现有公司安全标准内发挥作用。 
可扩展的基础结构 
BEA Tuxedo 支持许多不同的连通性和互操作性标准，允许企业跨其他应用和解决方案，充分发挥BEA Tuxedo 应用和服务的作用。 
域网关 (DG) 架构： DG 架构支持各种消息和TP 应用之间的互操作性，这些应用不但运行在不同的环境、网络、地理位置和公司，而且还跨不同的应用服务平台，其中包括BEA WebLogic ServerTM、TopEnd 应用集成、BEA MessageQ 网桥和 BEA Tuxedo 主机适配器（连接 IMS 和 CICS）。 
BEA Tuxedo 和 BEA WebLogic Platform 
BEA Tuxedo 面向服务的架构，允许企业开发综合性的复合（或混合）、端到端解决方案，实现 BEA Tuxedo 的可用性、伸缩性与 J2EE 的可扩展性的完美统一。 
WebLogic Tuxedo Connector (WTC): 由于BEA Tuxedo 和 BEA WebLogic Platform 之间通过 WebLogic Tuxedo Connector (WTC)实现了紧密集成，因此，IT 部门可以轻松地扩展和将 BEA Tuxedo 服务与新的和现有的 J2EE 解决方案集成在一起。利用双向对等协议， WTC 完全支持BEA Tuxedo C、C++、COBOL 应用和 BEA WebLogic Server 、Platform J2EE工具与应用之间的事务和安全性传播（非代理事务）。 
BEA Tuxedo 和 BEA WebLogic Workshop：若要在开发"复合"解决方案时确保最佳方案和加快 IT 价值实现速度，Java 开发人员可以充分利用新的 Tuxedo 控件，因为它显著简化了 Web 服务生成、Web 页面流应用部署、门户与集成项目。企业开发人员和 BEA Tuxedo 合作伙伴双方，也都能利用Workshop，迅速创建 Tuxedo 控件扩展 （JCX 或"客户控件"），以访问特定的 Tuxedo 服务。