Klient–server
Inom datavetenskap är klient-server en modell för mjukvaruarkitektur som består av två delar, klientsystem och serversystem, som båda kommunicerar via ett datornätverk eller på samma dator. En klient-server-applikation är ett distribuerat system som består av både klient- och serverprogramvara. Klient-server-applikationer ger ett bättre sätt att dela upp arbetsbelastningen.Klientprocessen initierar alltid en anslutning till servern, medan serverprocessen alltid väntar på förfrågningar från någon klient.
När både klientprocessen och serverprocessen körs på samma dator kallas detta för en installation med en enda plats.
En annan typ av relaterad mjukvaruarkitektur kallas peer-to-peer, eftersom varje värd eller programinstans samtidigt kan agera både som klient och server (till skillnad från centraliserade servrar i klient-servermodellen) och eftersom alla har samma ansvar och status. Peer-to-peer-arkitekturer förkortas ofta med akronymen P2P.
Relationen mellan klient och server beskriver förhållandet mellan klienten och hur den gör en begäran om tjänster till servern och hur servern kan ta emot dessa begäranden, behandla dem och returnera den begärda informationen till klienten. Interaktionen mellan klient och server beskrivs ofta med hjälp av sekvensdiagram. Sekvensdiagram är standardiserade i Unified Modeling Language.
Både klient-server- och P2P-arkitekturer används ofta idag.
Den grundläggande typen av klient-serverprogramvaruarkitektur använder endast två typer av värdar: klienter och servrar. Denna typ av arkitektur kallas ibland för tvåstegsarkitektur. En arkitektur med två nivåer innebär att klienten fungerar som en nivå och att serverprocessen fungerar som den andra nivån.
Programvaruarkitekturen klient-server har blivit en av de grundläggande modellerna för nätverksdatorer. Många typer av program har skrivits med hjälp av klient-server-modellen. Standardfunktioner i nätverk, t.ex. e-postutbyte, webbåtkomst och databasåtkomst, bygger på klient-servermodellen. En webbläsare är till exempel ett klientprogram på användardatorn som kan få tillgång till information från vilken webbserver som helst i världen.
Ett serverbaserat nätverk.
Ett peer-to-peer-baserat nätverk.
Kundernas egenskaper
Serveregenskaper
- Vänta alltid på en begäran från en av klienterna.
- Svarar på klienternas förfrågningar och svarar sedan på klienterna med de begärda uppgifterna.
- En server kan kommunicera med andra servrar för att betjäna en klientförfrågan.
- Om ytterligare information krävs för att behandla en begäran (eller om säkerhet införs) kan en server begära ytterligare uppgifter (lösenord) från en klient innan en begäran behandlas.
- Slutanvändare interagerar vanligtvis inte direkt med en server utan använder en klient.
Fördelar
- I de flesta fall gör en klient-server-arkitektur det möjligt att fördela de allt svårare rollerna och ansvarsområdena i ett datorsystem på flera oberoende datorer som endast är kända för varandra via ett nätverk, så en av fördelarna med denna modell är att den är lättare att underhålla. Det är till exempel möjligt att byta ut, reparera, uppgradera eller till och med flytta en server medan klienterna inte är medvetna om och inte påverkas av förändringen. Detta oberoende av förändringar kallas också för inkapsling.
- All data lagras på servrarna, som i allmänhet har bättre säkerhetskontroller än de flesta klienter. Servrar kan bättre kontrollera åtkomst och resurser för att garantera att endast de klienter som har rätt behörighet kan få tillgång till och ändra data.
- Eftersom datalagringen är centraliserad är det mycket lättare att administrera uppdateringar av data än vad som skulle vara möjligt i en P2P-arkitektur. I en P2P-arkitektur kan uppdateringar av data behöva distribueras och tillämpas på varje "peer" i nätverket, vilket är både tidskrävande och felbenäget, eftersom det kan finnas tusentals eller till och med miljontals "peers".
- Det finns redan många avancerade klient-server-tekniker som utformats för att garantera säkerhet, användarvänliga gränssnitt och användarvänlighet.
- Det fungerar med flera olika klienter med olika specifikationer.
Nackdelar
- Blockering av nätverkstrafik är ett av de problem som hänger samman med klient-server-modellen. När antalet samtidiga klientförfrågningar till en viss server ökar kan servern bli överbelastad. Detta kan jämföras med ett P2P-nätverk, där bandbredden faktiskt ökar när fler noder läggs till, eftersom P2P-nätverkets totala bandbredd i stort sett kan beräknas som summan av bandbredderna för varje nod i nätverket.
- Om man jämför klient-server-modellen med Peer to Peer-modellen kan klienternas förfrågningar inte tillgodoses om en server inte fungerar, men när det gäller P2P-nätverk är servrarna vanligtvis fördelade på många noder. Även om en eller flera noder misslyckas, t.ex. om en nod misslyckas med att ladda ner en fil, bör de återstående noderna fortfarande ha de uppgifter som behövs för att slutföra nedladdningen.
Exempel
- Särskilda typer av klienter är webbläsare, e-postklienter och klienter för onlinechatt.
- Specifika typer av servrar är: webbservrar, FTP-servrar, databasservrar, e-postservrar, filservrar och utskriftsservrar. De flesta webbtjänster är också typer av servrar.
Frågor och svar
F: Vad är klient-serverprogramvaruarkitektur?
S: Klient-serverprogramvaruarkitektur är en modell som består av två delar, klientsystem och serversystem, som båda kommunicerar via ett datornätverk eller på samma dator.
F: Hur fungerar en klient-server-applikation?
S: En klient-server-applikation är ett distribuerat system som består av både klient- och serverprogramvara. Klientprocessen initierar alltid en anslutning till servern, medan serverprocessen alltid väntar på förfrågningar från någon klient.
F: Vad händer när både klientprocessen och serverprocessen körs på samma dator?
S: När både klientprocessen och serverprocessen körs på samma dator kallas detta för en installation med en enda plats.
F: Vilka fördelar ger användningen av en klient-serverapplikation?
S: Med hjälp av ett klient-serverprogram kan arbetsbelastningen delas på ett bättre sätt mellan flera datorer eller användare.
F: Vem initierar anslutningar i klientserverprogram?
S: Det är alltid klientprocessen som initierar anslutningar i klientservertillämpningar.
F: Vem väntar på förfrågningar i klientserverprogram?
S: Serverprocessen väntar alltid på förfrågningar i klientservertillämpningar.
F: Hur kan flera datorer eller användare dela arbetsbelastning med varandra?
S: Flera datorer eller användare kan dela arbetsbelastning genom att använda ett distribuerat system, t.ex. ett klientserverprogram.