Proci, kliens, szerver

Ha a programozó programot akar írni (ha nem akar, akkor nem programozó), azt mostanában háromféleképpen teheti. Írhat processzorra, kliensre vagy szerverre.
  A régi időkben, a net elterjedése előtt – és egy ideig még azután is – csak egyféle programozás létezett: a processzor programozása. A számítógépben van egy processzor, ennek adunk utasításokat. Hardver, szoftver című Bloglexikon-cikkem a processzor programozásáról szól. Amikor az olvasó bekapcsolja számítógépét, annak processzorán futtat programokat, például a Windowst, a böngészőt és hasonlókat. Időnként bizonyára le is tölt programokat olyan helyekről, mint a Letöltés.com vagy a Download.com, hogy a számítógépén (annak processzorán) futtassa őket.

A kliensoldali programozás csak évtizedekkel a processzoron futó programok után, a kilencvenes években jelent meg – először is kellett hozzá a net, természetesen. Kliensnek a felhasználó böngészőjét hívjuk, azt a Netscape-et, Internet Explorert, Operát, Firefoxot, Blazert vagy egyéb programot, amivel e pillanatban a LAttilaD.orgot olvassa. Kliensoldali programozásnál a következő történik:
  1. A felhasználó jelzi, hogy le akar tölteni egy honlapot.
  2. A kliens elküldi a címet a szervernek.
  3. A szerver visszaküldi a honlapot, amely programot is tartalmaz.
  4. A kliens feldolgozza a honlapot. Eközben észleli, hogy programmal van dolga, felismeri, hogy milyen nyelven íródott, és lefuttatja.
  A böngésző futtatja le, ez nagyon fontos körülmény. Nézzük, milyen előnyei és hátrányai vannak ennek a módszernek.
  A program maga a szerveren van, tehát mindig a legfrissebb verzió töltődik le – ellentétben a processzoron futó programokkal, amiknél a felhasználónak tevőlegesen le kell töltenie a legfrissebb verziót.
  Viszont a felhasználó böngészőjében fut le, tehermentesítve a szervert. Amikor a program letöltődött, a szervernek már nincsen dolga, foglalkozhat a többi felhasználóval.
  Ezzel szemben a programot magát le kell tölteni, ami gyakran nem kevés időbe telik. Nézze meg például az olvasó az Avonlea.hu intróját, ami a belépésre kattintva megjelenik; idő, amíg letöltődik.
  Így a programot gyakorlatilag közkinccsé tettük; egyes nyelveknél a lefordított programot, másoknál magát a forráskódot tölti le a felhasználó a gépére, ahol elteheti és tetszése szerint felhasználhatja engedélyünk nélkül.
  Viszont folyamatos programfuttatást tesz lehetővé. Ezen az oldalon például Macromedia Flashben írt óraprogramok vannak összegyűjtve, némelyik nagyon aranyos, érdemes végignézni őket, sőt rájuk is kattintgatni, funkcióik is vannak. Óraprogramot csak úgy van értelme írni, ha a felhasználó gépén fut, mert állandóan csinálni kell valamit.
  Csakhogy – ami a legnagyobb baj – nem minden böngésző ismeri az összes programnyelvet. Ha az olvasó gépén nem jelent meg Ed Mullen óragyűjteménye, akkor érti a problémát. Ha megjelent, akkor az olvasó böngészőjében van Flash – de nem biztos, hogy egy másik Flash-verzióban írt honlap is megjelenik, nem beszélve a Javáról és Javascriptről, a VBS-ről és a többi kliensoldali nyelvről. Amiket ráadásul időnként frissíteni kell, különben a legújabb verziókban írt programok már nem futnak.

A szerveroldali programozás teljesen másképpen működik. A program itt is a weboldal részét képezi, de ez az egyetlen hasonlóság. A folyamat:
  1. A felhasználó jelzi, hogy le akar tölteni egy honlapot.
  2. A kliens elküldi a címet a szervernek.
  3. A szerver észleli, hogy a kért honlap programot tartalmaz. Lefuttatja, és eredményül egy másik honlapot kap, amit elküld a kliensnek.
  4. A kliens feldolgozza a honlapot, ami most már semmiféle programot nem tartalmaz.
  A program most is a szerveren van, tehát így is mindig a legfrissebb verzió fut le.
  A szerver most nem mentesül a teher alól, keményen meg kell dolgoznia minden egyes oldalletöltésnél.
  Viszont magát a programot nem kell letölteni, ami időt takarít meg és megakadályozza a felhasználót abban, hogy kedve szerint másolja alkotásunkat.
  Folyamatos programfutás azonban nem lehetséges. Kapunk egy kérést, hogy adjunk vissza egy honlapot; visszaadjuk a honlapot; és amíg a következő kérés meg nem érkezik, addig semmit nem tudunk csinálni. Például óraprogramot se lehet így írni. Ez a legnagyobb hátránya.
  Ami viszont a legnagyobb előnye: minden géptípus minden böngészőjével működik. Hiszen csak közönséges HTML oldalakat és képeket adunk vissza, amiket minden böngészőnek meg kell értenie.

A LAttilaD.org szerveroldali programozással működik: az egész birtok PHP-ben van írva. Nézzük, mit csinál. A szöveg egyes részeit be fogom színezni, s majd a végén mondom el, hogy melyik szín mit jelent.
  1. Az olvasó beírja böngészőjébe például ennek a cikknek a címét: 1194.lattilad.org. Ez megérkezik a LAttilaD.org „központi vezérlőtermébe”.
  2. A vezérlő részeire bontja a címet, megállapítja, hogy a .lattilad.org előtti rész (az aldomain) egy szám, márpedig a számok blogcikkeket szoktak azonosítani, ezért átadja a vezérlést a blogcikkeket megjelenítő programnak; de előbb a találatokat nyilvántartó adatbázisba beírja az új találatot.
  3. A cikkmegjelenítő beolvas egy szövegfile-t, azt, amelyik ennek a cikknek a szövegét tartalmazza Autorban, és meghívja az Autort, hogy dolgozza föl a szöveget.
  4. Az Autor végigolvassa a szöveget, keresve a saját speciális jeleit, és azok alapján mindenféle változtatásokat csinál. Ehhez különböző adatbázisokat dolgoz fel és esetleg bonyolult matematikai műveleteket is elvégez. Az eredmény egy teljesen új szöveg, amit az Autor visszaad a cikkmegjelenítőnek.
  5. A cikkmegjelenítő további adatbázisokból olvassa ki a találatszámot, az osztályzatokat és a hozzászólások számát, és ezek alapján elkészíti az ezeket megjelenítő szövegrészeket. Végül mindezt átadja a vezérlőnek: tessék, elkészültem.
  6. A vezérlő meghívja a képernyő tetején és alján levő csíkot előállító programot.
  7. A program adatbázisokból veszi a felső sor menüpontjait és az alsó sorban levő találatszámokat, a legfrissebb cikk címét és a névnapot, a naptáradatokat pedig kiszámítja. Mindezt összeállítja a kívánt formára, és visszaadja a vezérlőnek.
  8. A vezérlő összerakja a különböző programoktól kapott weboldalrészleteket, és a végeredményt visszaküldi a felhasználó böngészőjének.
  9. A felhasználó böngészője egy weboldalt kap, ami kizárólag szöveget és a megjelenés formáját meghatározó HTML-kódokat tartalmaz, program egy betű sincs már benne. Ezt tehát elemi HTML-ismereteivel fel tudja dolgozni és meg tudja jeleníteni.

Nézzük a színes részeket.
  Szövegfeldolgozás. Szöveg felvágása részekre, összerakása részekből, szövegrész keresése szövegben, kicserélése más szövegre, és így tovább.
  Döntéshozatal. Számok vagy szövegek összehasonlítása, az eredménytől függően különböző tevékenységek végrehajtása.
  Vezérlésátadás. Másik program vagy programrész meghívása, hogy az hajtson végre részműveleteket, illetve visszatérés a főprogramba, miután a részműveletet végrehajtottuk. Ehhez a programrészeknek kommunikálniuk is kell egymással: átadni a feldolgozandó és visszaadni a feldolgozott adatokat.
  File-kezelés. Szövegek, adatbázisok beolvasása, illetve felírása.
  Számítások. Matematikai műveletek az összeadás-kivonástól a gyökvonásig és a szögfüggvényekig, sőt akár bonyolultabbak is.

Az olvasó böngészője nagy valószínűséggel meg tudja mutatni a látott oldal forráskódját. Ez valami ilyesmi:
   <html><pre class="code" style="word-wrap: break-word;"></html><table width="100%" border="1" cellspacing="0" cellpadding="0"><tr><td><font face="sans-serif" size="2" style="font-size: 10pt"><b> <a href=http://blog.lattilad.org style="color: #80ff00; text-decoration: none">Blog</a><html></pre></html>
  És így tovább. Kizárólag < > jelek közötti HTML-kódok és szöveg. A HTML-kódok csak arra alkalmasak, hogy a szöveg küllemét meghatározzák; a példában a

<table width="100%" border="1" cellspacing="0" cellpadding="0">

táblázatot csinál, ami a képernyő egész szélességét kitölti, be van keretezve és nem tartalmaz üres helyet a táblázat tartalma körül; ez a felső csík. A

<tr>

a táblázat első (és egyetlen) sorát kezdi meg, a

<td>

a sor első mezőjét. A font a betűtípust állítja be, a b félkövér betűt csinál, az a pedig linket.
  Ha nem lenne szerveroldali programozás, akkor a szerveren is így kellene elhelyezni, ahogy az olvasó látja. Akkor minden blogcikkben a teljes külalakot le kellene írni, a felső és alsó csíkkal együtt, illetve az alsó csíknak nem is lenne értelme, mert annak az a lényege, hogy mindig a legfrissebb adatokat mutatja. A felső sorban se írhatnám ki a mai nap dátumát. Szerveroldali programozás nélkül a blog tartalomjegyzékét nem lehetne tetszés szerint ide-oda lapozni, megfordítani az irányát és megváltoztatni a kiírt sorok számát, mert ez rengetegféle lehetséges oldalt jelent, és mindegyiket külön-külön, kézzel meg kellene írni. Nem lehetne mutatni az osztályzatok, hozzászólások és találatok számát, sőt ezeket nem is lehetne feldolgozni, még rögzíteni se.
  Szerveroldali programozás nélkül tehát csak rengeteg munkával létrehozott, unalmas weboldalaink lennének. S mivel bizonyos elemi dolgokra – például a találatszám rögzítésére – a legtöbb honlaptulajdonos igényt tart, a legtöbb szerveren szükség van szerveroldali programozásra. Az ingyenes honlapszolgáltatók persze nem adnak ilyet, ezért tömegével jöttek létre találatszámláló szolgáltatások: az ember betesz a honlapjára egy képet, ami egy másik szerverről töltődik le, és minden alkalommal más, a találatok számát mutatja – mert a másik szerveren, ahonnan letöltődik, van szerveroldali programozás.

Az igazi luxust a kétoldali programozás jelenti: a weboldalakat szerveroldali programozással állítjuk elő, de azok tartalmaznak kliensoldali programokat is. Így működik például az Online Antikvárium, ahol PHP-ben állítják elő a különféle listákat, és kliensoldali programokat is küldenek a böngészőnek, amely mozgó szövegeket, sétálgató gombokat csinál belőlük. Ilyen apparátussal már tényleg bármit megcsinálhatunk – ha működik. Palmon például nem működik!

»»»»»»