Személyes eszközök
Keresés

 

A InfoWiki wikiből

(Változatok közti eltérés)
(uploaded)
(uploaded)
10. sor: 10. sor:
<path l1="cgi-ea/Nyitolap|Előadás"  l2="cgi-ea/Tematika|Vizsga"  l3="cgi-ea/Foliak|Fóliák"  lx="-"  
<path l1="cgi-ea/Nyitolap|Előadás"  l2="cgi-ea/Tematika|Vizsga"  l3="cgi-ea/Foliak|Fóliák"  lx="-"  
       l4="cgi-gy/Nyitolap|Gyakorlat"/>
       l4="cgi-gy/Nyitolap|Gyakorlat"/>
 +
 +
== 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 kimenet''re (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.
 +
 +
<box type="info">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.</box>
 +
 +
== 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: [http://www.szerver.hu/arfolyam.php?datum1=1999-01-01&datum2=2001-12-31 á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.
 +
 +
* [http://en.wikipedia.org/wiki/FastCGI WikiPédia oldal a CGI-ről és FastCGI-ről]
 +
* [http://www.fastcgi.com/devkit/doc/fcgi-spec.html FastCGI specifikáció]
 +
* [http://www.fastcgi.com/ egyéb leírás a FastCGI-ről]

A lap 2009. június 26., 19:18-kori változata


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_3.134.102.182 cikk