Személyes eszközök
Keresés

 

A InfoWiki wikiből


Dinamikus WEB és CGI

Az Internet jelenlegi alapjait az ARPANET alapjaiból kinőtt, mindent átfogó számítógépes hálózat teremti. Az internet nem csak a WEB-ről szól, mivel a számítógépeket összekötő vezetékes és egyéb kapcsolatokon a számítógépek nem csak weblapokat és képeket cserélnek egymással, és nem csak a HTTP protokoll van használatban. Jelen esetben azonban csak a weblapok fejlesztéséről, azon belül is a web-es űrlapok feldolgozásáról lesz szó.

A weblapok jelenleg a HTML vagy XHTML leíró nyelveken készülnek. Ennek alapjait a CERN-ben vetették meg, mikor is a tudósok valamilyen dokumentum leíró nyelvet kívántak fejleszteni, melyen leírhatták gondolataikat, ötleteiket, és megoszthatták azt egymással. Kezdetben a HTML lapokat karakteres felületen jelenítették meg, de elterjedésével a grafikus felületű megjelenítők, ún. böngészők is megjelentek, melyek a HTML leírást képesek voltak megjeleníteni, és az interakciókat, a linkek aktiválását egérműveletekkel is támogatták.

A HTML lapok kezdetben jellemzően statikusak voltak. Ez azt jelenti, hogy a megjelenített tartalom egy text fájlhoz hasonló, html fájlban egyszerűen le volt gépelve, le volt írva, el volt mentve. A webszervertől a böngésző a fájlt lekérte, a tartalmát elolvasta, értelmezte, és megjelenítette. Amíg a dokumentum tulajdonosa a fájlhoz nem írt hozzá, nem nyúlt bele, minden lekérés ugyanazt a fájlt eredményezte, a böngésző minden egyes alkalommal ugyanazt mutatta a kliens oldalon.

Felmerült az igény, hogy a dokumentum tartalma időben automatikusan kövesse az változásokat. Legegyszerűbb példa: ha a html leírás elején ki volt írva a készítés dátuma, akkor jelenjen meg annak öregsége, legyen kiírva hány nappal (héttel, hónappal) korábban készült az a dokumentum. Ehhez ne kelljen a szerkesztőnek minden nap megnyitni a dokumentumot, és átírni ezt az értéket, hanem ezen módosítás történjen meg automatikusan. Az adatbázisok elterjedésével megjelet az igény a tartalom adatbázisadatok alapján történő generálására is. Ekkor a dokumentumban esetleg szereplő pénzügyi adatok több valuta aktuális értéke alapján is kiszámíthatóak.

A dinamikusan generált weblapokat a webszerveren futtatott programok állították elő. Ezek egyszerű kis programok voltak, amelyek futásuk során a standard kimenetre (Std Out) írták ki a html kimenetet. A webszerver ezen kis programokat a kliens oldali lekéréskor lefuttatta, és a kimenetet összegyűjtve elküldte azt a kliens oldalra. A kliens oldali böngészőt ehhez nem kellett módosítani, ugyanúgy webkérést küld statikus és dinamikus weblap lekérés esetén is, a visszaérkező html válaszon nem érezhető, hogy az statikus vagy dinamikus előállítású-e.

Ezzel meg is született a CGI programozás alapjai. A korábban leírt kis programok, melyek html output előállítására képesek - a CGI programok jellemzőit hordozzák.

Ezzel egyidőben merült fel igényként az is, hogy az adatbázisban tárolt értékeket web-es felületen lehessen megváltoztatni, ne kelljen minden egyes alkalommal adatbáziskezelő programot igénybe venni pl. a valuta-árfolyamok átírásához, lehessen ezt a webes html felület segítségével is megtenni. Ehhez szükséges volt, hogy a html segítségével ne csak információkat lehessen leírni, hanem adatokat is bekérni. A probléma azonban még csak most kezdődik: a bekért adatokat vissza kell tudni juttatni a webszerverre, és ott fel kell tudni dolgozni. A HTTP protokoll egyszerű bővítésével az adatok visszaküldése szerencsére megoldható volt. A feldolgozás a webszerveren szintén megoldható vált - az előzőekben említett egyszerű CGI programok nem csak a dinamikus html lapok generálását tudják elvégezni, hanem a webszerverre érkező adatokat elolvasva azokat ellenőrízni, feldolgozni, menteni adatbázisba. Ezen képességű programokat nevezzük ma CGI programoknak.

A CGI programok tehát a webszerveren futnak. A webszervertől képesek adatokat átvenni (standard inputról leolvasni), majd kiírni egy komplett html kimenetet (standard outputra) - ezáltal a webről fogadott űrlap adatokat feldolgozni, és dinamikus módon választ generálni.


CGI

A CGI a Common Gateway Interface rövidítése:

  • NCSA által fejlesztett protokollszabvány (NCSA:National Center for Supercomputing Applications)
  • az alkalmazások a web szerveren futnak
  • jellemző programozási nyelvei a C, PERL, PhP, stb...
  • A webszerver aki képes CGI alkalmazásokat futtatni
    • IIS (Internet Information Services) szerver Windows környezetben
    • APACHE szerver windows és linux környezetben
  • Ha a kliens kérése egy futtatható file-ra mutat, akkor a web szerver futtatja ezt a programot, átadja neki a web kérést. A program a bejövő adatokat elsősorban a standard inputról olvassa be (illetve adatbázisból), a kimenetet pedig standard outputra írja, melyet a webszerver fogad, és válaszként visszaadja a kliensnek mint generált weblapot.

A CGI előnye: A web szerver statikus tartalom visszaadására van alapvetően képezve: előre megírt statikus HTML lap vagy KÉP vagy egyéb file visszaadása a kliens felé. A CGI technológia segítségével aktuális, friss tartalom dinamikusan generálható (pl. árfolyamok aktuális értékei), illetve a kérés aktuális paramétereiben foglaltak alapján generált tartalom (pl. árfolyamok alakulása adott időintervallumban). Példa: árfolyam értékek.

A CGI hátránya: A web szerver minden egyes ilyen jellegű kérés esetén processzt (folyamat) indít a szerver gépen. A web szervert üzemeltető operációs rendszer (windows, linux) ezt lassan teszi, így egy időben sok kliens kérés beesése a szerver gépet ez túlterhelheti.

Ennek megoldására dolgozták ki a FastCGI módszert, mely esetén az alkalmazás a feldolgozás után nem lép ki, hanem újra várakozni kezd a következő feldolgozásra. Így egymás után több kérés esetén a CGI alkalmazást csak egyszer (első esetben) kell indítani, a további esetekben már az alkalmazás indítása felesleges. A FastCGI nem úgy dolgozik, hogy a kéréseket sorban egymás után dolgozza fel, hanem egy időben, párhuzamosan több kérést is. Ehhez szálindításokat végez az alkalmazás. A szál indítása kevésbé terheli az operációs rendszert, mint a processz indítása, így a feldolgozás indítása jóval gyorsabb. Ugyanakkor a többszálú programozás problémás és veszélyekkel teli, így ezen modell fejlesztése és tesztelése időigényesebb feladat. A FastCGI programok nem standard inputon és outputon keresztül kommunikálnak a webszerverrel, mivel ez esetben nem tudnának egy időben több kérést is feldolgozni. Helyette vagy TCP/IP porton, vagy linux esetén domain socketen keresztül. A portot a feldolgozás végén a web szerver és a FastCGI alkalmazás lezárhatja, de a futásuk nem szakad meg, újabb portnyitás révén újabb feldolgozást beszélhetnek meg egymással.

A FastCGI vitathatatlan előnye, hogy a feldolgozó alkalmazás módosítása esetén a webszerver leállítása és újraindítása nem szükséges - csak a FastCGI alkalmazást kell leállítani, lecserélni az újabb verzióra, és engedni a webszervernek, hogy újraindítsa.

A CGI alkalmazások fejlesztéséhez használható nyelvek (C, C++, Java, Perl, PhP) alkalmasak a FastCGI alkalmazások fejlesztésére is.

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Cgi-ea/page001
Nézetek
nincs sb_54.237.183.249 cikk