Razlika med CGI in Servletom

CGI proti Servletu

CGI (Common Gateway Interface) je prvi poskus, kako uporabnikom zagotoviti dinamično vsebino. Uporabnikom omogoča izvajanje programa, ki je na strežniku, za obdelavo podatkov in celo dostop do baz podatkov, da bi ustvarili ustrezno vsebino. Ker gre za programe, so zapisani v izvornem operacijskem sistemu in nato shranjeni v določenem imeniku. Servlet je implementacija Jave, katere cilj je zagotoviti enako storitev kot CGI, vendar namesto programov, sestavljenih v domačem operacijskem sistemu, se sestavi v bajt kodo Java, ki se nato zažene v Java virtualnem stroju. Čeprav se programi Java lahko sestavijo v izvorno kodo, se še vedno raje sestavijo v Java bajt kodo.

Prva prednost servletov pred CGI je v njegovi neodvisnosti od platforme. Servleti se lahko izvajajo v katerem koli operacijskem sistemu, dokler je nameščen JVM, kar pomeni, da ne bi imeli težav, tudi če bi se odločili za preklop operacijskih sistemov. Pri CGI je preklapljanje operacijskega sistema težaven in naporen postopek, saj bi morali prekomponirati programe v novem operacijskem sistemu.

Ker v CGI izvajate neodvisne programe, ustvarijo lasten postopek, ko se izvajajo, kar se ne zgodi pri servletih, saj le delijo v pomnilniški prostor JVM. To lahko privede do težav, povezanih z režijskimi stroški, še posebej, če povečujete število uporabnikov. Prav tako ustvarja težave z ranljivostjo, saj program ni nikakor nadzorovan, ko se zažene na strežniku.

Kasneje je bolj pogosta metoda pri uporabi CGI prek skriptov. To zmanjša čas, potreben za ustvarjanje programov in so na splošno bolj varni. S CGI lahko skripte zaženete takoj, medtem ko morate servlete prevesti skript v Javo in jih sestaviti v servlet, kar malce doda čas nalaganja.

Povzetek:
1.CGI so ponavadi izvršljive datoteke, ki so izvorne za strežnikov operacijski sistem, čeprav se servleti lahko zbirajo tudi v izvornem operacijskem sistemu, lahko pa jih sestavi v bajt kodo Java, ki se nato zažene v JVM
2.CGI programi so odvisni od platforme, medtem ko so servleti neodvisno od platforme
3.CGI programi tečejo kot ločeni procesi v računalniku, medtem ko servleti tečejo na JVM
4.CGI je lahko bolj ranljiv za napade kot servleti
5.CGI lahko neposredno obdela skripte, medtem ko jih je treba prevesti in sestaviti, preden se lahko zažene kot servlet