什么是中间件( 二 )


通信程序可以在不同的时间运行
程序在网络上不直接相互对话 , 而是间接把消息放入消息队列 , 因为程序之间没有直接的连接 。它们不必同时运行 。当消息被放入适当的队列时 , 目标程序甚至根本不需要运行;即使目标程序正在运行 , 也不意味着应该立即处理消息 。
对应用程序的结构没有限制
在复杂的应用中 , 通信程序不仅可以有一对一的关系 , 还可以有一对多和多对一的方法 , 甚至是上述方法的组合 。多种通信模式的构建不会增加应用的复杂性 。
程序与网络复杂性无关
程序将消息放入或取出消息队列进行通信 。与此相关的所有活动 , 如维护消息队列、维护程序和队列之间的关系、处理网络重启和移动网络中的消息 , 都是MOM的任务 。程序不与其他程序直接对话 , 也不涉及网络通信的复杂性 。
对象请求代理
随着对象技术和分布式计算技术的发展 , 它们结合形成了分布式对象计算 , 成为软件技术的主流 。1990年底 , OMG首次引入了OMA(对象管理架构) , 对象请求代理(ObjectRequestBroker)是该模型的核心组件 。它的功能是提供一个通信框架 , 在异构分布式计算环境中透明地传输对象请求 。CORBA规范包含了ORB的所有标准接口 。1991年引入的CORBA1.1定义了接口描述语言OMGILD和支持特定ORB上客户机/服务器对象互操作性的API 。CORBA2.0规范描述了不同厂商提供的orb之间的互操作性 。
对象请求代理(ObjectRequestBroker , ORB)是一种对象总线 , 在CORBA规范中起着核心作用 。它定义了异构环境中对象透明地发送请求和接收响应的基本机制 , 是建立对象间客户机/服务器关系的中间件 。ORB使对象能够透明地向其他对象发送请求或从其他对象接收响应 , 这些对象可以位于本地或远程 。ORB截获请求调用 , 负责寻找能完成请求的对象 , 传输参数 , 调用相应的方法 , 返回结果 。客户端对象不知道与服务器对象通信、激活或存储服务器对象的机器制 , 也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分 。
值得指出的是client和server角色只是用来协调对象之间的相互作用 , 根据相应的场合 , ORB上的对象可以是client , 也可以是server , 甚至兼有两者 。当对象发出一个请求时 , 它是处于client角色;当它在接收请求时 , 它就处于server角色 。大部分的对象都是既扮演client角色又扮演server角色 。另外由于ORB负责对象请求的传送和server的管理 , client和server之间并不直接连接 , 因此 , 与RPC所支持的单纯的Client/Server结构相比 , ORB可以支持更加复杂的结构 。
事务处理监控
事务处理监控(Transaction processing monitors)最早出现在大型机上 , 为其提供支持大规模事务处理的可靠运行环境 。随着分布计算技术的发展 , 分布应用系统对大规模的事务处理提出了需求 , 比如商业活动中大量的关键事务处理 。事务处理监控界于client和server之间 , 进行事务管理与协调、负载平衡、失败恢复等 , 以提高系统的整体性能 。它可以被看作是事务处理应用程序的”操作系统” 。总体上来说 , 事务处理监控有以下功能:
进程管理 , 包括启动server进程、为其分配任务、监控其执行并对负载进行平衡 。