1.2 什么是消息
在对TCP/IP的基础知识作以简单介绍之后,让我们正式进入本书的主题:消息。如果说上面的内容对很多读者来讲已经是常识了,那么,从本节起,相信大部分读者会进入一个以前并不熟悉却又非常重要的编程领域。
应该说消息这个词用途非常广泛,分布式应用只是其中之一,但至今为止还没有见到有资料对消息作严格明确的定义,因此这里让我们先对消息的概念作以定义。本书试图这样来定义消息:
消息是分布式应用开发中,网络上两个逻辑实体之间进行通信时,在编程层面的最小单元。
对以上定义,有以下几点说明。
(1)消息的概念存在于开发工作中,位于编程层面。在系统运行时,对应用用户是透明的。
(2)网络上的两个逻辑实体,是指两个可独立运行的程序,它们可以部署于网络中两个不同的物理设备上,也可以部署于同一个物理设备上,但一般是两个没有父子关系的独立进程(这一点与IPC编程中最基本的消息概念不同)。
(3)消息是分布式通信时编程层面的最小单元,即无论参与通信的数据量是多还是少,程序代码中都通过发送与接收一个或多个消息来实现。
(4)网络上两个应用之间的通信,包括数据流传输与远程过程(函数)调用两种类型。
(5)利用消息可以实现分布式应用之间的结构化数据通信。也就是说,编程人员在通信层面面对的不再是实际字节流,而是可以由多种数据类型组合而成的结构化数据单元。
其实,这种结构化数据单元本身就是“消息”,它对外可以表现为结构或者类。
因此,当基于以上定义的消息机制建立起来以后,程序员在编码过程中,当需要进行分布式通信时,只需要生成相应的消息,然后调用相应的发送与接收接口方便地实现即可,而不需要了解TCP/IP知识,不需要掌握socket编程的基本技能,也不需要考虑串行消息过多、并发消息过多、网络流量控制等其他多方面的问题,从而才能真正地将分布式应用开发的精力集中到业务实现上来,极大地提高了分布式系统的开发效率与质量,特别是大型分布式系统。
关于消息的存在形式,在传统C语言中,可以是一个结构struct;在面
向对象语言中(C++或Java),则可以是一个类class。