Mijn eerste artikelen over de revolutionaire gevolgen van de client/server-architectuur dateren uit 1991. Ik kon toen gemakkelijk voorspellen dat het ‘gemeenschappelijke communicatiesysteem’ daarin een grote rol zou gaan spelen. Intussen is wel duidelijk dat die rol wordt toebedeeld aan Internet en intranet.
Laatst liep ik iemand tegen het lijf die dacht dat ik inmiddels wel uitgekeken zou zijn op het client/server-concept en dat ik me daarom op de ontwikkelingen rondom Internet had gestort. Die heeft het dus bij het verkeerde eind. Helaas kom ik onder informatici nog hele volksstammen tegen die me niet helemaal kunnen volgen als ik beweer dat Internet weliswaar één van de meest fascinerende client/server- omgevingen is, maar dat daarin nog een heleboel ontwikkelingen zullen moeten plaatsvinden, voordat het ook een echte client/server-omgeving genoemd kan worden. Client/server schijnt voor menigeen nog een groot mysterie te zijn, vooral voor degenen die zich afvragen wat zij zich nu precies bij de begrippen ‘client’ en ‘server’ moeten voorstellen. Misschien komt dat doordat leveranciers van hard- en software-zijde hen met diverse soorten en maten clients en servers bestoken. Deze dienen echter beschouwd te worden als speciale vormen van de meer algemene begrippen ‘client’ en ‘server’. Ook de vele publikaties verschaffen maar weinig duidelijkheid over die kwestie. Toch zou iedere auteur op dat gebied op zijn minst moeten weten wat de grondleggers van de client/server-technologie voor ogen hadden. Ik leg het hier nog maar eens in het kort uit.
Onder het begrip ‘server’ verstaan de oorspronkelijke grondleggers een proces dat in een autonome procesomgeving als een ‘service’ wordt uitgevoerd op verzoek van een a-priori onbekende ‘client’. Een ‘client’ is een proces in een andere procesomgeving, dat van de service gebruik maakt. Een server kan zelf ook weer een client van een andere server zijn. Daardoor kan een heel ingewikkelde keten van client/server-relaties ontstaan. De hard- en softwareprodukten die gewoonlijk als ‘servers’ op de markt worden gebracht, moeten dus eigenlijk als zeer complexe procesomgevingen worden opgevat waarin een groot aantal specifieke processen (services) vrijwel tegelijkertijd kunnen worden uitgevoerd. In de moderne en toekomstige client/server-systemen worden die services steeds vaker geleverd door min of meer autonome, specifieke software-modules. Deze kunnen vanuit de gehele infrastructuur worden aangeroepen en in sommige gevallen zelfs in de eigen procesomgeving van de client worden uitgevoerd. Eén van de meest kenmerkende voordelen van een echte client/server-omgeving is dat de client niet meer hoeft te weten waar en door welke ‘server’ de service wordt uitgevoerd. De client van de service hoeft alleen de ‘message’ te kennen waarmee deze kan worden opgeroepen. De rest van het ingewikkelde proces zoeken de ‘services’ van de middleware wel uit. Een echte ‘server’ kan in een echte client/server-omgeving dan ook op ieder moment worden verplaatst, gekopieerd of vervangen door een geheel andere technische uitvoering daarvan, zonder dat de client daarvan iets hoeft te weten. Aan de ene kant leidt dat op den duur tot een gigantische vereenvoudiging in het totale proces van ontwikkeling en onderhoud van informatiesystemen. Aan de andere kant kan de complexiteit in sommige client/server-systemen daardoor zo exponentieel toenemen, dat de onderlinge samenhang tussen die verschillende werkprocessen – vooral als er iets fout gaat – voor de doorsnee ontwikkelaar niet meer valt te overzien. Een proces is pas een server als daarvan gebruik te maken is door a-priori onbekende clients. Net zo goed als men voor een spreadsheetmodel gebruik kan maken van een uitgelezen aantal generieke functies. Voor het ontwerpen van echte client/server-applicaties zal men dan ook gaandeweg meer de kunst moeten verstaan om met de principes van hergebruik en object-oriëntatie om te gaan. De informatica-industrie is daar al druk mee bezig bij de ontwikkeling van moderne softwarepakketten. Op den duur zullen de client/server-omgevingen zelfs geheel worden opgebouwd uit vrijwel autonome, algemene applicatiemodulen in de vorm van objecten. Daarom is wat er momenteel met de programmeertaal Java op Internet en intranet gebeurt, ook van groot belang voor mensen die zijn geïnteresseerd in de verdere ontwikkeling van gedistribueerde client/server-systemen.