Modeli Klient-Server

parapamje|djathtas|Diagrami i rrjetës kompjuterike gjatë komunikimit të klientit me server nëpërmjet internetit.|253x253pxRrjetat në të cilat kompjuterët kanë disa detyra të veçanta, duke ofruar shërbime për kompjuterë e tjerë (në rrjet) quhen rrjeta klient-server.

Modeli
klient-server në kompjuterik është një struktur aplikacioni shpërndarse që ndan
detyra ose ngarkes pune mes ofruesve së burimit apo shërbimit, të quajtur
serverë, dhe server kërkuesve të quajtur klient.Shpesh
klientët dhe serverët komunikojnë në një rrjet kompjuterik në harduera të ndar,
por prap klienti dhe serveri mund të qëndrojnë edhe në të njejtin sistem.Serveri
host(nikoqir) ekzekuton një ose më shumë programe serverike të cilat ndajnë
shërbime për klientët, nga ana tjetër klientët nuk ofrojnë burime të resurseve apo
nuk shërbejn, por vetem bëjnë kërkesa tek serverët. Pikërisht janë këta
(klientët) që nisin komunikimin me serverët që presin gjatë gjithë kohes

Shembuj të aplikimeve kompjuterike që përdorin modelin klient-server janë email,  rrjeti i printerit, dhe world wide web(webi mbarë botëror).

## Rolet e Klientit dhe Serverit 
Karakteristika klient-server përshkruan marrëdhënien e programeve bashkëpunuese në një aplikim.Komponenti server ofron një funksion apo shërbim për një apo më shumë klientë, të cilët iniciojnë kërkesa për shërbime të tilla.

Serverat klasifikohen nga shërbimet që ato ofrojnë. Për shembull, një web server shërben web faqet  dhe një fajll server shërben dosjet kompjuterike. Një resurs i përbashkët mund të jetë ndonjë nga softuerët dhe komponentët elektronik  të kompjuterit server, nga programet dhe të dhënat në procesor dhe pajisje ruajtse(storage device).Ndarja e resurseve të serverit përbën një shërbim.

Klientët janë komponentët individualë të cilat janë të lidhur në një rrjet. Ata kanë një konfigurim themelor. Klienti dërgon një kërkesë / pyetje për server dhe serveri përgjigjet në përputhje me rrethanat. Ju lutem vini re se klienti nuk ndanë ndonjë nga resurset e tij. Ata janë vartësit e serverave, dhe të drejtat e qasjes së tyre përcaktohen vetëm nga serverat. Ata kanë bazë të të dhënave të lokalizuar .

Në qoftë se një kompjuter është klient, server, ose që të dyja, përcaktohet nga natyra e aplikimit që kërkojnë funksionet e shërbimit. Për shembull, një kompjuter i vetëm mund ti udhëheqë web serverin dhe software serverin në të njëjtën kohë për tiu shërbyer të dhëna të ndryshme klientëve duke bërë të kërkesa të ndryshme . Software klienti gjithashtu mund të komunikojë me softuer server brenda të njëjtit kompjuter. Komunikimi në mes serverëve, i tillë  për të sinkronizuar të dhëna, quhet ndonjëherë inter-server apo server-to-server komunikim.

## Komunikimet Klient-Server 
Në përgjithësi, një shërbim është një abstraksion i resurseve të kompjuterit dhe  klienti nuk duhet që të ketë lidhje me mënyrën se si serveri perfermon përderisa  përmbush kërkesën dhe jep përgjigjen. Klienti ka për detyrë që vetëm të kuptojë përgjigjen në bazë të protokollit të njohur të aplikimit, pra përmbajtjen dhe formatimin e të dhënave për shërbimin e kërkuar

Klientët dhe serverët  skëmbejnë mesazhet në një  model mesazhi kërkesë-përgjigje. Klient i dërgon një kërkesë, dhe server i kthen përgjigje. Ky shkëmbim i mesazheve është një shembull i komunikimit inter-process(ndër-proces). Për të komunikuar, kompjuterët duhet të kenë një gjuhë të përbashkët, dhe duhet që ti ndjekin rregullat në mënyrë që të dy edhe klienti edhe serveri ta dinë se çfarë të presin.Gjuha dhe rregullat e komunikimit përcaktohen në një protokoll të komunikimit. Të gjitha protokollet klient-server veprojnë në shtresën e aplikimit.Protokolli shtresë-aplikacioni përcakton modelet themelore të dialogut. Për të formalizuar shkëmbimin e të dhënave edhe më tej, serveri mund të implementojë një API-application Program Interface (të tilla si web shërbimi).  API është një shtresë abstraksioni për resurse të tilla si bazat e të dhënave dhe custom software. Duke kufizuar komunikimin në një format të veçantë të përmbajtjes,lehtëson analizimin. Duke abstraktuar qasjen, lehtëson shkëmbimin cross-platform  të të dhënave.

Një server mund të marrë kërkesa nga klientë të ndryshëm për një periudhë shumë të shkurtër kohore. Për shkak se kompjuteri mund të kryejë një numër të kufizuar të detyrave në një moment të caktuar, mbështetet në një sistem planifikimi për të përcaktuar përparësitë e kërkesave që vijnë nga klientët në mënyrë që ti akomdoj që të gjitha me rradhë. Për të parandaluar abuzimin dhe  për të maksimizuar uptime(uptime:kohë gjatë së cilës  një makinë , veçanërisht kompjuteri është në veprim) ,softuerit i serverit kufizon përdorimin e resurseve së serverit nga klienti. Edhe kështu, një server nuk është i liruar nga shpërdorimi. Mohimi i sulmit së shërbimit shfrytëzon obligimin  e serverit për të përpunuar kërkesat duke e  bombarduar atë me kërkesa vazhdimisht. Kjo pengon aftësinë e serverit për tu përgjigjur  ndaj kërkesave së pranueshme .

= Shembull =
Kur një klient banke përdor shërbimet bankare online me web shfletues (klienti), klienti fillon një kërkesë në web server të bankës. Kredencialet login  të konsumatorit mund të ruhen në një bazë të dhënash, dhe web serveri i qaset serverit së bazës së të dhënave si një klient.Një server aplikacioni interpreton të dhënat e kthyera duke aplikuar logjikën e biznesit së bankës, dhe siguron dalje në web server. Së fundi, web serveri kthen rezultatin në web shfletuesin klient për shfaqje.

Në çdo hap të kësaj sekuence të shkëmbimit së mesazheve klient-server, një kompjuter përpunon një kërkesë dhe kthen të dhëna. Ky është model i mesazhit kërkesë-përgjigje. Kur të gjitha kërkesat plotësohen, sekuenca ka plotësuar dhe web browseri  ia paraqet të dhënat konsumatorit.

Ky shembull ilustron një model të projektimit të zbatueshëm së modelit klient-server: ndarja e punëve.

= Historia e hershme =
Përderisa  formulonin modelin klient-server në vitet 1960 dhe 1970, shkencëtarët e fushës kompjuterike në Xerox dhe Xerox PARC përdornin termet server-host (ose serving host) dhe përdorues-host (ose using-host).

Një kontekst në të cilin studiuesit përdornin këto terma ishte projektimi i një gjuhe programuese
për rrjetat kompjuterike  e quajtur Decode-Encode Language (DEL).Qëllimi i kësaj gjuhe ishte që të pranonte urdhrat nga një kompjuter (user-host), i cili do të kthehente raportet e statusit te përdoruesi(user) përderisa i kodonte komandat në paketën e rrjetit. Një tjetër kompjuter DEL-i aftë, server-host, pranoi paketat,i deshifroi ato, dhe ktheu të dhënat e formatuara te user-host-i. Një program DEL në user-host pranoi rezultatet për tia prezantuar përdoruesit. Ky është një transaksion
klient-server. Zhvillimi i DEL ishte vetëm duke filluar në vitin1969, viti kur Departamenti i Mbrojtjes sëShteteve së Bashkuara  themeloi  ARPANET -Advanced Research Projects Agency Network (paraardhësin e Internetit).

### Client-host dhe server-host 
Client-host dhe server-host kanë kuptime të ndryshme nga klienti dhe serveri.Host është çdo kompjuter i lidhur në një rrjet. Ndërsa  fjalët server dhe klienti mund t'i referohen ose një kompjuteri ose një programi kompjuterik, server-host dhe user-host gjithmonë u referohen kompjuterave.Host-i është një kompjuter i gjithanshëm,  multifunksional; klientët dhe serverët janë vetëm programe që ekzekutohen në host. Në modelin klient-server, serveri ka më shumë gjasa që ti përkushtohet detyrës së shërbimit.

Përdorimi i hershëm i fjalës klient haset në "Ndarja e të dhënave nga funksioni në një sistem shpërndarësh fajllash", një dokument i vitit 1978 nga shkencëtarët e fushës kompjuterike të  Xerox Parc :Howard Sturgis, James Mitchell, dhe Jay Israel. Autorët janë përkujdesur për definimin e termit dhe shpjegojnë se  e përdorin atë term për ta dalluar në mes përdoruesit dhe nyjes së rrjetit të përdoruesit (klientit).(Që nga 1992,  fjala server hyri në mënyrën e të foluri së përgjithshëm.)

## Kompjuterika e centralizuar 
Modeli klient-server nuk këshilllon që server-hostat të kenë më shumë resurse se sa klient-hostat.Përkundrazi, mundëson që çdo kompjuter me qëllim të përgjithshëm të zgjerojë  kapacitetet e tij, duke përdorur resurset e përbashkëta nga hostet e tjera. Kompjuterika e centralizuar, megjithatë, në mënyrë të veçantë shpërndan një sasi të madhe të resurseve në një numër të vogël të kompjuterëve.Sa më shumë operaccione komjuterike të shkarkohen nga klient-hosti te kompjuterët qendror, aq më i thjeshtë mund të bëhet klient-hosti. Një klient i dobët ka më pak resurse përveç pajisjeve input dhe pajisjeve output.Mbështetet kryesisht në resurse të rrjetit (serverave dhe infrastrukturës) për kryerjen e operacioneve kompjuterike dhe ruajtjen. Një nyje disku të vogël fut në memorie edhe sistemin operativ nga rrjeti, dhe një terminal kompjuteri nuk ka sistem operativ në përgjithë; është vetëm një ndërfaqe input / output për serverin. Në të kundërt, një klient i plotë,i tillë si kompjuteri personal, ka shumë resurse, dhe nuk mbështetet në një server për funksionet esenciale.

Përderisa mikrokompjuterave  u ra çmimi dhe iu
rritë aftësia që nga vitet e 1980-ta deri në fund të viteve të 1990-ta, shumë organizata tranzicionuan kompjuterikën nga serverat e centralizuar, të tillë si mainframes-at dhe minikompjuterat, në klientë të plotë.Kjo ofroi dominim më të madh, më të individualizuar mbi resurset kompjuterike, por komplikoi menaxhimin e teknologjisë së informacionit.Gjatë viteve të 2000-ta, web aplikacionet u perfeksionuan mjaftueshëm për të konkurruar me softuerët aplikativ të krijuar për një mikroarkitekturë të veçantë. Ky perfeksionim, që ofron më shumë masë ruajtjeje, dhe ardhja e arkitekturës service-oriented ishin ndër faktorët që ngjitën lartë trendin e cloud computing të viteve të 2010-ta.