Den gesamten Datenverkehr zwischen Tools, den VDM Klienten als auch dem VDM Server regeln Kommunikationsprotokolle, die verbindlich die Art der ausgetauschen Daten vorschreiben und auch die Flußkontrolle regeln.
Die Kommunikation zwischen Bibliotheksbrowser und -manager war Gegenstand der ersten Analysearbeiten. Bereits hier war eine verbindliche Art des Datenaustausches definiert. Der Datenbankmanager arbeitet als Filter, akzeptiert Befehle über die Standardeingabe und gibt das Resultat über die Standardausgabe zurück. Die Flußsteuerung legt bei der Ausagbe die Größe der Daten fest, die vom Klienten gelesen werden müssen, da das System ansonsten ,,hängt``. Die Kommunikation ist in den TCL-Dateien commdbm.tcl und communicate.tcl programmiert, und wurde unverändert gelassen.
Das Protokoll besteht aus insgesamt drei Kommandos für das Absetzen von Befehlen an den Datenbankmanager. Diese sind:
evalCmd <arg1> <arg2> <...>
evalMessage <arg1> <arg2> <...>
evalMessageToFile <file> <arg1> <arg2> <...>
exit
Das Kommando evalMessageToFile erwartet als ersten Parameter einen Dateinamen, in welche die durch den Befehl erzeugte Ausgabe geleitet wird.Wärend für evalCmd keine Antwort und lediglich die stillsschweigende Ausführung des Kommandos erwartet wird, geben evalMessage und evalMessageToFile eine Antwort in folgendem Format zurück:
error | ok <nl>
length <nl>
message <nl>
Die erste Zeile gibt an, ob das Kommando erfolgreich ausgeführt wurde, und besteht entweder aus error oder ok aus. Es folgt in der nächsten Zeile die Länge der Nachricht, die übermittelt wird, einschließlich aller Zeilenumbrüche. Anschließend wird die Nachricht empfangen, die mit einem Zeilenumbruch abgeschlossen ist.
Wenn der vdmdbm oder vdmhelp beendet werden, wird das Kommando exit an den Datenbankmanager abgesetzt, um diesen zu beenden.
Da sich der VDM Client im kompatiblen Modus genauso verhält wie der Datenbankmanager, versteht dieser das gleiche Protokoll, das in [*] dargestellt ist. Der
evalMessageToFile
Befehl wird durch den Client in das Kommando
evalMessage
verwandelt und an den Server weitergereicht. Das Resultat wird anschließend vom Client in die angegebene Datei geschrieben. Das Kommando
exit
wird vom VDM Client abgefangen und führt nicht zur Beendigung des VDM Servers. Vielmehr meldet sich der Client vom Server ab und terminiert anschließend.
Der VDM Client verständigt sich mit dem VDM Server ausschließlich über Remote Procedure Calls, die auf der Sitzungschicht basieren. Da von der Sitzungsschicht abstrahiert werden kann, ist es letzendlich belanglos, wie das Protokoll der Sitzungsschicht im einzelnen implementiert sind. Die Funktionalität ändert sich durch die Implementierung des Protokolls nicht, da die Dienstelemente vom Modell vorgegeben werden. Dies gilt auch für die Implementierung der RPCs selbst, dessen einfaches Protokoll unter [*] dargestellt ist.