Introduction
La programmation répartie permet de construire des applications
fonctionnant sur plusieurs machines reliées ensemble sur un réseau et
communiquant entre elles pour accomplir une tâche. Le modèle
sous-jacent est celui de la programmation parallèle à mémoire
répartie. Les programmes locaux ou distants communiquent via un média
qui correspond à un protocole réseau. Le plus connu et le plus
utilisé d'entre eux est IP (Internet protocol) et ses
surcouches TCP et UDP. À partir de ces
communications de bas niveau, de nombreux services sont bâtis sur le
modèle client-serveur où un serveur attend des requêtes de
différents clients, les traite et envoie les réponses à ces
demandes. On peut citer le protocole HTTP permettant la
communication entre navigateur et serveur Web. La répartition
des tâches entre clients et serveurs correspond à différentes
architectures logicielles.
Le langage Objective CAML offre, via sa bibliothèque Unix,
différentes possibilités de communication entre programmes. Les prises
de communication (sockets en anglais) permettent la
communication selon le protocole TCP/IP et
UDP/IP. Cette partie de la bibliothèque Unix est
portée sous Windows. La possibilité de dupliquer des processus
<<lourds>> (Unix.fork) ou de créer des processus légers
(Thread.create) permet de réaliser des serveurs acceptant
plusieurs requêtes en même temps. À partir de ces couches de bas
niveau, il est aisé de construire des client-serveur universels
paramétrés par une fonction de traitement. Enfin, un point important
pour la création de nouveaux services est la définition d'un protocole
propre à l'application.