Razlika između CGI i Servlet

CGI vs Servlet

CGI (Common Gateway Interface) je prvi pokušaj pružanja dinamičnog sadržaja korisnicima. Korisnicima omogućuje izvršavanje programa koji se nalazi na poslužitelju za obradu podataka, pa čak i pristup bazama podataka kako bi proizveli relevantni sadržaj. Budući da se radi o programima, oni se zapisuju u nativni operativni sustav, a zatim pohranjuju u određenu mapu. Servlet je implementacija Jave koja ima za cilj pružiti istu uslugu kao i CGI, ali umjesto programa sastavljenih u matičnom operativnom sustavu on se sastavlja u Java bajt kod koji se zatim pokreće u Java virtualnom stroju. Iako se Java programi mogu sastaviti u nativni kod, oni ipak radije kompiliraju u Java bajt kodu.

Prva prednost servleta nad CGI-om je u njegovoj neovisnosti od platforme. Servleti se mogu pokrenuti na bilo kojem operacijskom sustavu sve dok je JVM instaliran, što znači da ne biste imali problema čak i da odaberete prebacivanje operativnih sustava. Kod CGI-a, prebacivanje operativnog sustava je težak i mukotrpan proces jer biste trebali prekompolirati programe u novi operativni sustav.

Budući da u CGI-u pokrećete neovisne programe, oni kreiraju vlastiti proces kad se izvršavaju, što se ne događa s servletima, jer oni samo dijele u memorijskom prostoru JVM-a. To može dovesti do problema vezanih uz režijske troškove, osobito kada eksponencijalno povećavate broj korisnika. Također stvara probleme s ranjivošću jer program nije nadziran na bilo koji način nakon što se pokrene na poslužitelju.

Kasnije, češća metoda korištenja CGI-ja je putem skripti. To smanjuje vrijeme potrebno za stvaranje programa i općenito su sigurnije. Sa CGI možete pokrenuti skripte odmah, dok servleti trebate prevesti skriptu u Javu i sastaviti je u servlet što malo pridonosi vremenu učitavanja.

Sažetak:
1.CGI su obično izvršne datoteke koje su izvorne za operativni sustav poslužitelja, mada se servleti također mogu sastaviti u matični OS, mogu se sastaviti u Java bajt kod koji se tada izvodi na JVM
2.CGI programi ovise o platformi dok su servleti neovisni o platformi
3.CGI programi pokreću se kao zasebni procesi na računalu dok se servleti pokreću na JVM
4.CGI može biti osjetljiviji na napade od servleta
5.CGI može izravno obraditi skripte dok ih treba prevesti i sastaviti prije nego što se može pokrenuti kao servlet