APIMessagingAPI,Inter-Application
应用程序间的消息传递 API Messaging API,Inter-Application
Messaging API,Inter-Application 应用程序间的消息传递 API 虽然消息传递在对等层环境也可以实现,应用程序间的消息传递则是一种在前端应用和后端服务器间的客户机/服务器环境下实现的典型技术。虽然也可以使用实时模式,但消息传递使得应用以非实时、先存储再传送的方式交换命令和信息。首先创建一个消息,然后将它传送到目的地,在目的地对它进行处理之前,它可能会先存储。另外,消息可能存储在能够处理过程间消息传递的一个独立的地方,不要将消息传递与电子函件系统混淆。虽然它们有相似之处,但电子函件系统是为在用户间交换消息而设计的。
一种面向消息的事务,是使用存储再转发技术的无连接事务。一个应用程序以消息的方式发送一个请求或命令,然后等待回答。在这两个系统之间没有同步,发送方可以将消息广播给任意多的其他系统。它的一个重要特色是,在客户机和服务器之间没有通信“会话”或连接。服务器可以在很长时间之后再有反应。由于消息传递系统不是实时工作的,所以对于实时任务关键的应用程序使用它是不现实的。然而,对于较慢传输率的广域网连接的分散系统,采用消息传递系统的工作却是很合适的。首先,广域网链路的延迟就使实时应用不合适。
相反,远程过程调用(RPC)是用于进程间通信的面向连接的机制。在客户和服务器间建立了一个会话,它保持到进程或事务处理完毕。这种连接需要一个建立期,具有一定开销,但提供了请求回答式的可靠、有效的传输。
一个消息传递模式需要在数据交换的两端都有队列管理。一个消息在源端创建,再分送到和目的地相关的队列中。管理队列通常是异步的,在另一个事件出现之前,前一个必须处理完毕。然而,消息可以被分配到多个处理器,这样它们每个都能并行处理一个任务。通常采用双向队列,这样两个系统就可以同时发送消息了。
消息传递系统可以对应用程序隐藏下面的通信协议,这样,一个在网络间分组交换(IPX)环境运行的应用程序,就可以和一个在传输控制协议/Internet协议(TCP/IP)环境运行的应用传递消息了。由于应用程序只需简单地识别消息格式和命令,所以应用程序接口间的差异也就很小。和此相对,信报传送系统是一种“中间件(middleware)”。中间件产品是程序员和开发人员在制作应用产品时隐藏下面的操作系统、通信协议和多厂商产品的复杂性时使用的工具。它使得无需开发人员将大量时间花在使应用程序产品适应它可以运行的每一种系统。中间件提供它们的全部互联,开发人员只需简单地实现应用程序产品和中间件间的接口。
在不同的网络操作系统上,已经安装了许多著名的消息转发系统,但必须牢记,这些系统并没有考虑中间件产品,因为它们的设计没有为多厂商和多协议提供接口。它们依赖于操作系统内置的服务和通信协议。
Microsoft的邮件传递系统 是Microsoft LAN管理器和IBM LAN服务器环境的一种消息传递接口,它是OS/2的网络扩充版本。邮件传递系统是一种存储再转发消息系统,它允许网络结点共享数据,而无需与其他结点同步(建立联系)。与此相反,命名管道(named pipe)在两个网络结点间同步交换。
Novell的信报处理服务(MHS)是一种开始只用于电子函件的消息转发系统,但也具有在应用程序间转发消息的能力。Novell最近通过增加对OSI协议、IBM SNA和TCP/IP的支持,改进了MHS的协同工作能力。
IBM的消息排队接口(MQI) 是一种能观测不同平台上应用程序间转发消息的基于消息的应用程序接口。它在IBM联网方案中定义。
一些厂商正在推进面向消息的中间件。下面作为例子讨论两种消息转发系统。有些能与SQL或非SQL数据库一起工作。
通信集成器由Covia技术公司(Rosemout,Illinois)提供。这种消息转发系统在IBM、DEC、UNIX、OS/2、DOS和Windows环境下工作。而服务器和主机通过面向连接的链路通信。对消息进行优先分级以保证时间敏感性信息通过。
DECmessage Q由数字设备公司DEC(Maynard,Massachusetts)提供。这个系统是DECnet结构的一部分,它在客户机/服务器和对等层环境下工作。它支持VAX/VMS、ULTRISI、OS/2、DOS、Windows和Macintosh。DECmessage Q在许多不同类型的前端和后端应用程序之间充当消息总线的角色。应用程序可以建立一些优先的和正常的消息队列。
消息传递技术在面向对象领域也是很重要的。在一个面向对象的系统中,对象请求代理(ORB)为在应用、服务和系统的其他设备之间进行消息分布提供了一种关键通信设备。可以将一个ORB想象成一种软件总线、支柱,它提供了一种通用的消息转发接口,通过这个接口许多不同类的对象可以以对等层策略进行通信。一个对象提出一个请求,并将它送到ORB,然后,ORB放置一个对象用于为这个请求服务、格式化消息,并将它发到对象。然后,这个响应通过ORB送回原来的请求者。在这种模式中,对象只需简单地描述要操作的任务。它们并不需要知道细节和能够为这个任务服务的对象在那里。ORB处理所有的放置对象、格式化消息并分发这些消息的细节。ORB是所有分布式环境的一种通用接口。
相关条目:Common Object Request Broker Architecture 公用对象请求代管器结构;Connectionless andConnection-Oriented Transactions无连接和面向连接的事务;IBM Networking Blueprint IBM联网方案;Mail Slots 邮件传递系统;Message Handling System 信报处理系统;Middleware 中间件;Object Request Broker 对象请求代管器;Remote Procedure Call远程过程调用。