Kliënt-bediener argitektuur

duimnael
Die **Kliënt-bedienermodel** is 'n benadering in sagteware-ingenieurswese waarmee die werkslas tipies tussen twee rekenaars verdeel word. Een rekenaar, die bediener, bied 'n diens aan 'n ander een, die kliënt. Die kliënt het dikwels 'n gebruikerskoppelvlak wat direkte interaksie met 'n menslike gebruiker moontlik maak, maar ander opstellings is ook moontlik. Die kliënt deel geen hulpbronne met die bediener nie, maar vra 'n hulpbron (soos 'n dokument of 'n diens) aan vanaf die bediener, en inisieer dus ook die kommunikasie.

Alhoewel hierdie idee toegepas word op 'n verskeidenheid maniere op 'n groot verskeidenheid programmatuur, is 'n bekende voorbeeld die huidige gebruik van webbladsye op die wêreldwye web. As mens byvoorbeeld 'n artikel op Wikipedia lees, is die webblaaier (soos Firefox) die *kliënt* en die sagteware op die rekenaar by af.wikipedia.org die *bediener*.  Wanneer die blaaier 'n spesifieke bladsy vanaf Wikipedia versoek, spoor die Wikipedia-bediener al die inligting op uit die databasis wat benodig word om die bladsy te vertoon, stel dit saam in 'n webblad en stuur dit na die webblaaier terug sodat dit vertoon kan word aan die gebruiker.

Die kliënt-bedienerargitektuur is dus 'n stelselargitektuur waar die werkslas so verdeel word dat die kliënt sekere hulpbronne en/of dienste van die bediener kan aanvra, maar die omgekeerde selde die geval is.

Vanuit 'n konseptuele oogpunt dui die terme *kliënt* en *bediener* slegs op die rol van twee komponente in 'n spesifieke kommmunikasiesituasie. Hierdie terme word egter ook gereeld gebruik om na die relevante programme of rekenaars te verwys waar die betrokke rol vervul word. Die term kliënt word gevolglik geassosieer met eenvoudiger eindgebruikersagteware en -hardeware (soos persoonlike rekenaars en selfone), en die term bediener word met kragtige rekenaars in datasentrums geassosieer — sogenaamde bedienerklasrekenaars.

'n Eweknienetwerk volg 'n ander model waarin elke nodus of program gelyktydig 'n kliënt en 'n bediener is; elkeen met gelykwaardige verantwoordelikhede. Beide argitekturele moontlikhede is in wye gebruik.

## Eienskappe 
'n Kliënt-bedienerargitektuur verskaf een moontlike manier om op groter skaal te kan werk. 'n Rekenaar of program kan spesialiseer in 'n enkele taak as dit slegs 'n kliënt of 'n bediener is. Kliënte kan moontlik dele van die sagteware met aansienlike vereistes afstaan aan die bediener sodat die kliënt ander take kan uitvoer. Die rol van die bediener kan ook geïmplementeer word met meer as een rekenaar en/of program waardeur werking op selfs groter skaal moontlik word.

Eienskappe van 'n bediener:
* Passief
* Wag vir versoeke
* Reageer op versoeke, voer hulle uit en stuur 'n antwoord

Eienskappe van 'n kliënt:
* Aktief
* Stuur versoeke
* Wag tot 'n antwoord ontvang word

Bedieners kan wat hulle kommunikasie met kliënte betref, toestand hou of toestandloos wees. 'n Bediener wat toestandloos werk, hou nie inligting tussen versoeke nie. 'n Voorbeeld hiervan is 'n HTTP-bediener vir statiese HTML-bladsye. Die bediener hanteer elke versoek vir 'n bladsy afsonderlik en geen vorige versoek het 'n invloed op daaropvolgende versoeke nie. 'n Bediener wat toestand hou, kan inligting onthou tussen versoeke. Die omvang van hierdie inligting kan globaal oor die toepassing wees, of per sessie wees. 'n Voorbeeld hiervan is die SSH-protokol waarmee by 'n bediener aangemeld word en 'n langdurende interaktiewe aanmeldsessie deur die gebruiker met 'n SSH-kliënt moontlik is. Die gebruiker kan veranderinge aan die stelsel aanbring wat permanent is. In die geval van die HTTP-protokol wat inherent nié toestand hou nie, kan 'n toestandhoudende sessie geïmplementeer word met behulp van 'n koekie, waarmee afsonderlike versoeke met die sessie en dus met mekaar geassosieer kan word. Dit word algemeen in die ontwikkeling van webtoepassings gebruik.

Die interaksie tussen kliënt en bediener word dikwels beskryf met behulp van volgordediagramme. Volgordediagramme word gestandaardiseer in UML (Unified Modeling Language).

## N-vlakargitekture. 
'n Generiese kliënt-bedienerargitektuur het twee tipes nodusse op die netwerk: kliënte en bedieners. Gevolglik word daar soms na hierdie generiese argitektuur verwys as 'n tweevlakargitektuur.

Sommige stelselargitekture sal bestaan uit drie verskillende soorte nodusse: kliënte, toepassingsbedieners wat data verwerk vir die kliënte, en databasisbedieners wat data vir die toepassingsbedieners stoor. Dit word 'n drievlakargitektuur genoem. As die verhouding met die toepassingsbediener en die databasisbediener op sy eie beskou word, sou mens in so 'n geval kon sê dat die toepassingsbediener 'n kliënt van die databasisbediener is.

Oor die algemeen kan 'n n-vlak- of multivlakargitektuur die werkslas verdeel in enige aantal afsonderlike dienste komponente wat kommunikeer. Drievlakargitekture is egter baie algemeen. Hierin fokus die drie vlakke tipies op aanbieding, besigheidslogika, en data.

Die voordeel van 'n n-vlakargitektuur in vergelyking met 'n tweevlakargitektuur (of 'n drievlak met 'n tweevlak) is dat dit die verwerking wat plaasvind, skei om die las op die verskillende bedieners beter te verdeel. Dit maak bewerking op groter skaal makliker. Die nadele van n-vlak argitektuur is:

# Dit plaas 'n groter las op die netwerk.
# Dit kan die wagtyd verhoog omdat meer kommunikasie plaasvind.
# Dit kan moeiliker wees om programme te programmeer en te toets as in 'n tweevlakargitektuur omdat meer toestelle moet kommunikeer om 'n gebruiker se transaksie te voltooi.

## Voorbeelde 
'n Gewilde kliënt in wydverspreide gebruik vandag is die webblaaier wat kommunikeer met webbedieners oor die internet om webblaaie te verkry en te vertoon. E-poskliënte (toegewyde programme vir die ontvang en versending van e-pos) kontak e-posbedieners vir die ontvang en versending van e-pos. Waar e-pos deur 'n webgebaseerde stelsel hanteer word, is die poskliënte op die webstelsel en dus nie so voor die hand liggend sigbaar nie.

Die X-vensterstelsel ("X Window System") is 'n stelsel met 'n kliënt-bedienerargitektuur met 'n ongewone eienskap. Die bediener is altyd plaaslik (naby die gebruiker) en die kliënt kan plaaslik op die selfde rekenaar of afgeleë wees. Hierdie ongewone eienskap maak sin as mens aan die bediener dink as 'n stelsel wat hulpbronne beskikbaar stel ('n vertoonarea, sleutelbord en muis) en die kliënt as 'n grafiese program wat daardie hulpbronne aanvra en daarvan gebruik maak.

Nog 'n buitengewone voorbeeld is die lêeroordragprotokol FTP. In die tradisionele gebruiksopset kan die bediener die kliënt kontak op 'n aparte kommunikasiekanaal (TCP-poort) en 'n versoek aan die *kliënt* rig aan om sekere take te voltooi wat die kliënt aangevra het. Weens die komplikasies met brandmure is hierdie manier later aangevul met 'n meer konvensionele stelsel waarmee die FTP-bediener nooit kontak met die kliënt sal inisieer nie.

## Sien ook 
* Diensgeoriënteerde argitektuur

## Eksterne skakels