Srovnávací graf
Základ pro srovnání | CGI | Servlet |
---|---|---|
Základní | Programy jsou napsány v nativním OS. | Programy využívající Javu. |
Závislost platformy | Platforma závisí | Nezávisí na platformě |
Tvorba procesu | Každý požadavek klienta vytvoří svůj vlastní proces. | Procesy jsou vytvořeny v závislosti na typu požadavku klienta. |
Převod skriptu | Přítomné ve formě spustitelných souborů (nativní pro server OS). | Zkompilovaný do Java Bytecode. |
Běží dál | Samostatný proces | JVM |
Bezpečnostní | Náchylnější k útokům. | Odolává útokům. |
Rychlost | Pomaleji | Rychlejší |
Zpracování skriptu | Přímo | Před spuštěním skriptů je přeložen a zkompilován. |
Přenosnost | Nelze portovat | Přenosný |
Definice CGI
CGI (Common Gateway Interface) je rozhraní, které zpracovává externí programy (CGI skripty) na webovém serveru, aby umožnilo provádění interaktivních webových stránek. CGI byl vyvinut NCSA (National Center for Supercomputing Applications) v roce 1993. Sídlí na straně serveru a umožňuje webovým prohlížečům komunikovat s programy na webovém serveru. Pokud například webová stránka dotazuje databázi nebo uživatel odesílá informace o formuláři serveru v té době, jsou vyvolány skripty CGI. Server předá tyto informace aplikaci dvěma způsoby GET nebo POST, pak aplikace odpoví na server zpět do prohlížeče. Tímto způsobem získají prohlížeče pro uživatele určité výsledky.
CGI je podmínkou pro popis metody pro spouštění CGI skriptů a poskytování výsledků zpět serveru pro tyto konkrétní programy. Funkce CGI je skenování informací přijatých z prohlížeče a vytvoření správné odpovědi, po dokončení úlohy je skript CGI ukončen. V rozhraní Common Gateway (Common Gateway Interface) společný znamená, že může fungovat v jakémkoli operačním systému nebo programovacím jazyce.
Skorší, UNIX shell skripty a PERL byl používán psát CGI programy, to je důvod, proč to pojmenované jako CGI "skripty" . Nyní však může být použit jakýkoliv z jazyků jako C, C ++, Perl, Visual Basic nebo Python. Ačkoli CGI může vést potenciální bezpečnostní problémy, protože webový server může také zpracovávat spustitelné soubory jako programy CGI v některých specifických adresářích. CGI zpracovává každý požadavek klienta samostatným procesem, který zvyšuje zátěž serveru, čímž je pomalejší.
Definice Servletu
Servlet je webová komponenta založená na jazyku Java, která slouží jako prostřední program, který usnadňuje interakci mezi webovým prohlížečem nebo klientem HTTP a serverem HTTP. Podobně jako u CGI mohou být servlety také použity pro shromažďování informací pomocí formulářů webové stránky, zobrazování záznamů z databáze a generování dynamických webových stránek pomocí kontejneru. Servlet je třída Java, která nespoléhá na platformu a dále je kompilována do bytecode, který je nezávislý na platformě. Platformově neutrální bytecode může být dynamicky uložen a spuštěn webovým serverem Java. Servlet používá mechanismus socket a RMI k navázání spojení mezi applety, databázemi nebo jinými databázovými programy.
Kontejner Servlet je součástí webového serveru, který podporuje protokoly HTTP a HTTPS . Využívá metodu požadavku / odezvy pomocí protokolu HTTP a HTTPS pro umožnění interakce s webovými klienty. Na rozdíl od CGI běží servlet uvnitř adresního prostoru webového serveru, kde se s každým klientem nemusí zacházet samostatně. V servletu je na serveru vynucena kolekce omezení, která chrání prostředky na serveru.
Klíčové rozdíly mezi CGI a Servletem
- CGI skripty jsou napsány v nativním OS a uloženy v určitém adresáři. Na druhé straně jsou programy servletů obvykle psány v jazyce Java, který je zkompilován do bajtového kódu v jazyce Java a spuštěn v JVM.
- CGI je platformově specifické, což ztěžuje přepínání mezi operačními systémy. Servlety mohou být oproti tomu spuštěny v jakémkoli operačním systému, který má nainstalovaný JVM, takže je nezávislý na platformě.
- V CGI může každý přicházející klientský požadavek generovat samostatný proces, zatímco servlet, procesy nejsou zbytečně vytvářeny a sdílí paměťový prostor JVM.
- CGI skripty jsou spustitelné programy napsané v nativním OS serveru. Naproti tomu servlety jsou kompilovány do bajtového kódu Java, který běží na JVM.
- Servlet je bezpečnější než CGI, protože používá Javu.
- Rychlost, výkon a účinnost servletu je lepší než CGI.
- Skripty CGI lze zpracovávat přímo. Naproti tomu servlet nejprve překládá a zkompilovává program a poté jej zpracovává.
- Pokud jde o přenositelnost servlet je přenosný, zatímco CGI není.
Závěr
CGI a Servlet fungují stejným způsobem, ale použití servletu je výhodnější než CGI, protože servlet je rychlý, bezpečný, nezávislý na platformě, snadno vyvinutý, dostupný prostřednictvím několika API a podporovaný různými webovými servery.