Võrdluskaart
Võrdluse alus | CGI | Servlet |
---|---|---|
Põhiline | Programmid on kirjutatud emakeeles. | Java-rakendused. |
Platvormi sõltuvus | Platvorm sõltub | Ei tugine platvormile |
Protsessi loomine | Iga kliendi taotlus loob oma protsessi. | Protsessid luuakse sõltuvalt kliendi taotluse tüübist. |
Skripti teisendamine | Esitatakse käivitatavate failidena (serveri operatsioonisüsteemile). | Koostatud Java Bytecode'i. |
Töötab | Eraldi protsess | JVM |
Turvalisus | Rünnakutele tundlikumad. | Võib vastu panna rünnakutele. |
Kiirus | Aeglasemalt | Kiirem |
Skripti töötlemine | Otsene | Enne skriptide käivitamist tõlgitakse ja kompileeritakse. |
Kaasaskantavus | Ei saa teisaldada | Kaasaskantav |
CGI määratlus
CGI (Common Gateway Interface) on liides, mis haldab veebiserveri väliseid programme (CGI skripte), et võimaldada interaktiivsete veebilehtede täitmist. CGI on välja töötanud NCSA (National Supercomputing Applications Center) 1993. aastal. See asub serveri poolel ja võimaldab veebibrauseritel suhelda veebiserveri programmidega. Näiteks, kui veebileht pärsib andmebaasi või kasutaja esitab vormi informatsiooni serverile sel ajal, kutsutakse CGI-skripte. Server edastab selle teabe rakendusele kahel viisil: GET või POST, siis vastab rakendus serverile brauserisse. Sel viisil saavad brauserid kasutajale mõningaid tulemusi.
CGI on tingimus, mille abil kirjeldatakse meetodit CGI-skriptide käivitamiseks ja tulemuste tagastamiseks nende serverite jaoks. CGI funktsioon on brauserilt saadud teabe skaneerimine ja õige vastuse saamine, pärast ülesande täitmist lõpetatakse CGI-skript. Common Gateway liideses tähistab tavaline, et see võib toimida trahvi igas operatsioonisüsteemis või programmeerimiskeeles.
Varem kasutati CGI programmide kirjutamiseks UNIX-i skripte ja PERL-i, mis on põhjus, miks seda nimetati CGI- skriptideks . Kuid nüüd võib kasutada mõnda sellist keelt nagu C, C ++, Perl, Visual Basic või Python. Kuigi CGI võib juhtida potentsiaalseid turvaküsimusi, võib veebiserver mõnda konkreetset kataloogi käsitleda ka käivitatavaid faile CGI programmidena. CGI haldab iga kliendi soovi eraldi protsessiga, mis suurendab serveri koormust, muutes selle aeglasemaks.
Servleti määratlus
Servlet on Java-põhine veebikomponent, mis toimib vaheprogrammina, mis hõlbustab veebibrauseri või HTTP-kliendi ja HTTP-serveri vahelist suhtlemist. Sarnaselt CGI-le saab servletit kasutada ka teabe kogumiseks veebilehe vormide abil, andmete salvestamiseks andmebaasist ja dünaamiliste veebilehtede loomiseks konteineri abil. Servlet on Java-klass, mis ei tugine platvormile ja kompileeritakse edasi bytekoodiks, mis on platvormist sõltumatu. Java-veebiserver võib dünaamiliselt salvestada ja teostada platvormi-neutraalse baitekoodi. Servlet kasutab pesade ja RMI mehhanismi, et luua ühendus applettide, andmebaaside või muude andmebaasi programmide vahel.
Servlet konteiner on osa veebiserverist, mis toetab HTTP ja HTTPS protokolle . Ta kasutab päringu / vastuse meetodit, kasutades HTTP ja HTTPS protokolli, et võimaldada suhtlemist veebiklientidega. Erinevalt CGI-st töötab servlet veebiserveri aadressiruumis, kus iga klienti ei pea tingimata eraldi käsitlema. Servetis serveris rakendatakse ressursside kaitseks serveris piirangute kogumit.
Peamised erinevused CGI ja Servlet'i vahel
- CGI-skriptid on kirjutatud emakeeles ja salvestatud kindlasse kataloogi. Teisest küljest on servletiprogrammid tavaliselt kirjutatud Java, mis on kompileeritud Java bytecode ja täidetakse JVM.
- CGI on platvormipõhine, mis muudab operatsioonisüsteemide vahetamise raskeks. Vastupidi, servletid saab teostada mis tahes operatsioonisüsteemis, mis on installinud JVM, seega on see platvormist sõltumatu.
- CGI-s võib iga saabuv klienditaotlus genereerida eraldi protsessi, samas kui servlet, protsessid ei looda asjatult ja jagavad JVM-i mäluruumi.
- CGI skriptid on käivitatavad programmid, mis on kirjutatud serveri emakeeles. Seevastu servletid kompileeritakse Java bytecode'i, mis töötab JVM-il.
- Servlet on turvalisem kui CGI, kuna kasutab Java.
- Serveti kiirus, jõudlus ja tõhusus on parem kui CGI.
- CGI skripte saab otse töödelda. Vastupidi, servlet tõlgib ja kompileerib kõigepealt programmi, seejärel töötleb seda.
- Kui tegemist on kaasaskantavusega, on servlet kaasaskantav, samas kui CGI ei ole.
Järeldus
CGI ja Servlet toimivad samal viisil, kuid servleti kasutamine on CGI-le kasulik, kuna servlet on kiire, turvaline, platvormist sõltumatu, kergesti arendatav, kättesaadav mitmete API-de kaudu ning seda toetavad erinevad veebiserverid.