CGI ja Servleti erinevus

CGI vs Servlet

CGI (Common Gateway Interface) on esimene katse pakkuda kasutajatele dünaamilist sisu. See võimaldab kasutajatel käivitada serveris asuvat programmi andmete töötlemiseks ja isegi andmebaasidele juurde pääsemiseks, et toota asjakohast sisu. Kuna need on programmid, kirjutatakse need natiivsesse opsüsteemi ja salvestatakse seejärel konkreetsesse kataloogi. Servlett on Java rakendus, mille eesmärk on pakkuda sama teenust nagu CGI, kuid loomulikus opsüsteemis kompileeritud programmide asemel kompileeritakse see Java baitkoodiks, mida seejärel käivitatakse Java virtuaalmasinas. Ehkki Java-programme saab kompileerida omakoodidesse, eelistavad nad siiski Java-baidikoodis kompileerida.

Servlettide esimene eelis CGI ees on selle platvormi sõltumatus. Servletid võivad töötada ükskõik millises opsüsteemis nii kaua, kui JVM on installitud, mis tähendab, et isegi siis, kui otsustate operatsioonisüsteemid vahetada, poleks teil probleeme. CGI puhul on opsüsteemi vahetamine keeruline ja vaevarikas protsess, kuna peate programme uude operatsioonisüsteemi ümber kompileerima.

Kuna käitate CGI-s sõltumatuid programme, loovad nad täitmisel oma protsessi, mida aga ei juhtu servletitega, kuna nad jagavad lihtsalt JVM-i mäluruumi. See võib põhjustada üldkuludega seotud probleeme, eriti kui suurendate plahvatuslikult kasutajate arvu. See tekitab ka haavatavuse probleeme, kuna programmi ei kontrollita serveril käivitamisel mingil viisil.

Hiljem on CGI kasutamisel tavalisem meetod skriptide kaudu. See vähendab programmide loomiseks kuluvat aega ja on üldiselt turvalisem. CGI-ga saate skripte kohe käivitada, samal ajal kui servletid, peate skripti tõlkima Java-sse ja kompileerima see servletiks, mis lisab laadimisaega natuke.

Kokkuvõte:
1.CGI on tavaliselt serveri opsüsteemi natiivsed käivitatavad failid, ehkki servereid saab kompileerida ka natiivse OS-i jaoks, seda saab kompileerida Java baitkoodiks, mida seejärel käivitatakse JVM-is
2.CGI programmid on platvormist sõltuvad, samas kui servletid on platvormist sõltumatud
3.CGI-programmid töötavad arvutis eraldi protsessidena, samal ajal kui servletid töötavad JVM-is
4.CGI võib olla rünnakute suhtes haavatavam kui servletid
5.CGI saab skripte otse töödelda, enne kui seda tuleb servletina käitada, enne kui see tuleb tõlkida ja kompileerida