Klient-server
Inden for datalogi er klient-server en softwarearkitekturmodel, der består af to dele, klientsystemer og serversystemer, der begge kommunikerer via et computernetværk eller på den samme computer. En klient-server-applikation er et distribueret system, der består af både klient- og serversoftware. Klient-server-applikation giver en bedre måde at dele arbejdsbyrden på: klientprocessen starter altid en forbindelse til serveren, mens serverprocessen altid venter på anmodninger fra en klient.
Når både klientprocessen og serverprocessen kører på den samme computer, kaldes dette en enkeltopsætning.
En anden type beslægtet softwarearkitektur er kendt som peer-to-peer, fordi hver vært eller programinstans samtidig kan fungere som både klient og server (i modsætning til centraliserede servere i klient-server-modellen), og fordi de hver især har tilsvarende ansvar og status. Peer-to-peer-arkitekturer forkortes ofte med forkortelsen P2P.
Klient-server-forholdet beskriver forholdet mellem klienten, og hvordan den sender en tjenesteanmodning til serveren, og hvordan serveren kan acceptere disse anmodninger, behandle dem og returnere de ønskede oplysninger til klienten. Interaktionen mellem klient og server beskrives ofte ved hjælp af sekvensdiagrammer. Sekvensdiagrammer er standardiseret i Unified Modeling Language.
Både klient-server- og P2P-arkitekturer er meget udbredt i dag.
Den grundlæggende type klient-server-softwarearkitektur anvender kun to typer værter: klienter og servere. Denne type arkitektur kaldes undertiden for to-niveau arkitektur. To-lags arkitektur betyder, at klienten fungerer som det ene lag og serverprocessen som det andet lag.
Klient-server-softwarearkitekturen er blevet en af de grundlæggende modeller for netværkscomputere. Der er blevet skrevet mange typer applikationer ved hjælp af klient-server-modellen. Standardnetværksfunktioner som f.eks. e-mailudveksling, webadgang og databaseadgang er baseret på klient-server-modellen. F.eks. er en webbrowser et klientprogram på brugerens computer, som kan få adgang til oplysninger på en hvilken som helst webserver i verden.
Et peer-to-peer-baseret netværk.
Et netværk baseret på én server.
Kundernes egenskaber
- Initierer altid anmodninger til servere.
- Venter på svar.
- Modtager svar.
- Opretter normalt forbindelse til et lille antal servere ad gangen.
- Interagerer normalt direkte med slutbrugerne ved hjælp af en brugergrænseflade som f.eks. en grafisk brugergrænseflade.
Serveregenskaber
- Du skal altid vente på en anmodning fra en af kunderne.
- Betjener klienternes anmodninger og svarer derefter klienterne med de ønskede data.
- En server kan kommunikere med andre servere med henblik på at betjene en klientanmodning.
- Hvis der er behov for yderligere oplysninger for at behandle en anmodning (eller hvis der er indført sikkerhed), kan en server anmode om yderligere data (adgangskoder) fra en klient, før den behandler en anmodning.
- Slutbrugere interagerer typisk ikke direkte med en server, men bruger en klient.
Fordele
- I de fleste tilfælde gør en klient-server-arkitektur det muligt at fordele et computersystems roller og ansvarsområder på flere uafhængige computere, som kun er kendt af hinanden via et netværk, så en af fordelene ved denne model er, at den er lettere at vedligeholde. Det er f.eks. muligt at udskifte, reparere, opgradere eller endog flytte en server, mens klienterne ikke er klar over og ikke påvirkes af denne ændring. Denne uafhængighed af ændringer kaldes også for indkapsling.
- Alle data gemmes på serverne, som generelt har bedre sikkerhedskontrol end de fleste klienter. Serverne kan bedre kontrollere adgang og ressourcer for at sikre, at kun klienter med de rette tilladelser kan få adgang til og ændre data.
- Da datalagring er centraliseret, er det meget lettere at administrere opdateringer af dataene, end det ville være muligt i en P2P-arkitektur. I en P2P-arkitektur kan det være nødvendigt at distribuere og anvende dataopdateringer til hver enkelt "peer" i netværket, hvilket er både tidskrævende og fejlbehæftet, da der kan være tusindvis eller endog millioner af peers.
- Der findes allerede mange avancerede klient-server-teknologier, som er udviklet med henblik på at sikre sikkerhed, brugervenlige grænseflader og brugervenlighed.
- Den fungerer med flere forskellige klienter med forskellige specifikationer.
Ulemper
- Blokering af netværkstrafik er et af problemerne i forbindelse med klient-server-modellen. Efterhånden som antallet af samtidige klientforespørgsler til en given server stiger, kan serveren blive overbelastet. Dette kan sammenlignes med et P2P-netværk, hvor båndbredden faktisk øges, efterhånden som der tilføjes flere knuder, da P2P-netværkets samlede båndbredde kan beregnes som summen af båndbredderne for hver enkelt knude i netværket.
- Hvis man sammenligner klient-server-modellen med Peer to Peer-modellen, kan klienternes anmodninger ikke imødekommes, hvis en server fejler, men i P2P-netværk er serverne normalt fordelt på mange knudepunkter. Selv hvis en eller flere knudepunkter svigter, f.eks. hvis en knudepunkt ikke kan downloade en fil, bør de resterende knudepunkter stadig have de data, der er nødvendige for at fuldføre downloadingen.
Eksempler
- Specifikke typer klienter omfatter: webbrowsere, e-mail-klienter og online chat-klienter.
- Specifikke typer af servere omfatter: webservere, FTP-servere, databaseservere, e-mail-servere, filservere, printservere. De fleste webtjenester er også typer af servere.
Spørgsmål og svar
Spørgsmål: Hvad er klient-server softwarearkitektur?
Svar: Klient-server-softwarearkitektur er en model, der består af to dele, klientsystemer og serversystemer, der begge kommunikerer via et computernetværk eller på den samme computer.
Spørgsmål: Hvordan fungerer en klient-server-applikation?
Svar: En klient-server-applikation er et distribueret system, der består af både klient- og serversoftware. Klientprocessen starter altid en forbindelse til serveren, mens serverprocessen altid venter på anmodninger fra en klient.
Spørgsmål: Hvad sker der, når både klient- og serverprocessen kører på den samme computer?
Svar: Når både klient- og serverprocessen kører på den samme computer, kaldes dette for en single seat-opsætning.
Spørgsmål: Hvilke fordele giver det at bruge en klient-serverapplikation?
Svar: Ved at bruge et klient-serverprogram kan arbejdsbyrder deles bedre mellem flere computere eller brugere.
Spørgsmål: Hvem initierer forbindelser i klientserverapplikationer?
Svar: Det er altid klientprocessen, der starter forbindelserne i klientserverapplikationer.
Spørgsmål: Hvem venter på anmodninger i klientserverprogrammer?
Svar: Serverprocessen venter altid på anmodninger i klientserverapplikationer.
Spørgsmål: Hvordan kan flere computere eller brugere dele arbejdsbyrder med hinanden?
Svar: Flere computere eller brugere kan dele arbejdsbyrder ved hjælp af et distribueret system som f.eks. et klientserverprogram.