前言
目前,分布式系统的应用领域越来越广泛,包括多层体系架构、多服务系统(SOA)、Web Service、网格(Grid)甚至目前最流行的云计算等,都属于分布式应用的范畴。如何设计与实现分布式系统,也是软件开发技术的重要内容。国内目前熟练掌握该项技术的软件开发人员远远要比掌握如JSF/Spring/Hibernate或SSH(Struts/Spring/Hibernate)等多层门户网站开发技术的人员要少得多。
最早的分布式开发,都是基于网络通信底层接口(如套接口、RPC等)直接进行的,而到了今天,绝大多数的分布式开发都是在成熟的协议或产品基础上开展的,包括CORBA/IIOP、RMI、JNDI/EJB、JMS、SOAP以及各种消息中间件,如IBM MQ、TIBCO、TUXEDO等。但即使是那些为数不多的熟练掌握这些开发技术的人,其中多数也只是会使用它们提供的API来制作应用系统,而对其内在原理和详细实现机制,则很少有人真正了解与问津。
让我们仔细想一想,在CORBA、RMI或JMS中,从一台计算机上的服务程序远程调用另一台计算机上服务程序中的函数是如何实现的?以消息对象形式组织的各种复杂数据类型如何从一台计算机传送到另一台计算机?如何在两个不同体系的软、硬件环境中实现分布式交流?多种不同类型的消息如何有效管理?发送与接收的消息队列如何管理?多任务并发如何控制?多任务并发时如何保证网络不会在某一点阻塞而影响对其他消息的处理?JMS和SOAP的机制有什么区别与联系?
所有以上问题,其实都牵扯到了一个很重要的领域,那就是:消息技术。目前,无论是在国内,还是在国外,介绍消息技术的技术资料都很少,这些资料大都存在于一些先进的分布式应用开发组织或者分布式开发支撑技术提供组织内部的源代码中或内部技术资料中,没有机会参与这些项目的软件技术人员是没有机会了解并掌握该项技术的。
消息技术的实现非常复杂,远不止一般技术人员想象的如流化(序列化)、发送与接收那么简单(像这样做个小例子还可以,要用于像JMS那样能支持开发大型分布式系统就完全不可能了),一般就算亲自参与该项技术的设计与开发,也需要最少两三年的时间才能完全掌握。而作者根据自身的经验体会到,对消息体系的深入理解会大大提高软件人员的设计能力与开发技能,并且在很多牵扯较深层次的软件开发中,了解甚至自己开发消息体系非常关键。因此,拥有一本介绍消息技术的书是很有意义的。
本书会体系化地详细介绍分布式应用开发的核心技术——消息机制,作者希望能达到这样一种效果:即读者参阅本书后,不仅能对消息技术的内在原理与实现机制全面地了解与深入学习,更重要的是,一个技能熟练的开发人员,能够根据书中足够详细的介绍(包括一些示例代码),自行开发出一套完全可以运作的消息平台来,这便是本书编写的原则与目标。
本书错误之处在所难免,敬请各位读者批评指正。
何小朝
ageneral_he@hotmail.com
2011年6月