下面考虑一下可以提供IPC所需的最低抽象层的基本API。在这样的API中需要提供以下4种基本操作。
● 发送(send)。该操作由发送进程发起,旨在向接收进程传输数据。操作必须允许发送进程识别接收进程和定义待传数据。
● 接收(receive)。该操作由接收进程发起,旨在接收发送进程发来的数据,操作必须允许接收进程识别发送进程和定义保存数据的内存空间,该内存随后被接收者访问。
● 连接(connect)。对面向连接的IPC,必须有允许在发起进程和指定进程间建立逻辑连接的操作:其中一个进程发出请求连接操作,而另一进程发出接收连接操作。
● 断开连接(disconnect)。对面向连接的IPC,该操作允许通信的双方关闭先前建立起来的某一逻辑连接。
参与IPC的进程将按照某种预先定义的顺序发起这些操作。每个操作的发起都会引发一个事件。例如,发送进程的发送操作引发一个把数据传送到接收进程的事件,而接收进程发出的接收操作导致数据被传送到进程中。注意,参与进程独立发起请求,每个进程都无法知道其他进程的状态。
HTTP是一种超文本传输协议,已被广泛应用于WWW。在该协议中,Web服务器进程发起accept connection,然后,一个进程(浏览器)通过发出make connection操作,建立与另一进程(Web服务器)的逻辑连接,随后向Web服务器发送send操作来传输数据请求。接着,Web服务器进程发出一个send操作来传输Web浏览器进程所请求的数据。通信结束时,每个进程都发出一个disconnect操作来终止连接。图2-3给出了HTTP的IPC基本操作流程,基于HTTP的分布式计算应按照这个流程进行开发。
图2-3 HTTP协议的IPC基本操作流程