Introduction
With distributed programming, you can build applications running
on several machines that work together through a network
to accomplish a task. The computation model described here
is parallel programming with distributed memory. Local and remote
programs communicate using a network protocol. The best-known
and most widely-used of these is IP (Internet protocol)
and its TCP and UDP layers. Beginning with
these low-level layers, many services are built on the
client-server model, where a server waits for requests
from different clients, processes those requests, and sends responses.
As an example, the HTTP protocol allows communication
between Web browsers and Web servers. The distribution
of tasks between clients and servers is suitable for many different
software architectures.
The Objective CAML language offers, through its Unix library,
various means of communication between programs.
Sockets allow communication through the TCP/IP and
UDP/IP protocols. This part of the Unix library
has been ported to Windows. Because you can create
``heavyweight'' processes with Unix.fork as well as
lightweight processes with Thread.create, you can create
servers that accept many requests at once. Finally,
an important point when creating a new service is the definition
of a protocol appropriate to the application.