Rozdiel medzi CGI a Servlet

CGI vs Servlet

CGI (Common Gateway Interface) je prvým pokusom poskytnúť používateľom dynamický obsah. Umožňuje používateľom spúšťať program, ktorý sa nachádza na serveri, na spracovanie údajov a dokonca prístup do databáz za účelom vytvorenia relevantného obsahu. Pretože sa jedná o programy, sú napísané v natívnom operačnom systéme a potom uložené v špecifickom adresári. Servlet je implementácia Java, ktorej cieľom je poskytovať rovnakú službu ako CGI, ale namiesto programov zostavených v natívnom operačnom systéme kompiluje do bajtkódu Java, ktorý sa potom spustí vo virtuálnom stroji Java. Aj keď programy Java môžu byť zostavené do natívneho kódu, stále uprednostňujú kompiláciu v bajtovom kóde Java.

Prvou výhodou servletov oproti CGI je nezávislosť platformy. Servlety môžu bežať na akomkoľvek operačnom systéme, iba ak je nainštalovaný JVM, čo znamená, že by ste nemali problém, aj keď sa rozhodnete prepnúť operačné systémy. S CGI je prepínanie operačného systému náročným a pracným procesom, pretože by ste museli prekompilovať programy v novom operačnom systéme..

Pretože v CGI prevádzkujete nezávislé programy, pri spustení vytvoria svoj vlastný proces, čo sa nestane so servletmi, pretože iba zdieľajú pamäťový priestor JVM. To môže viesť k problémom týkajúcim sa režijných nákladov, najmä ak exponenciálne zvýšite počet používateľov. Vytvára tiež problémy so zraniteľnosťou, pretože program nie je po spustení na serveri nijakým spôsobom kontrolovaný.

Neskôr je bežnejšou metódou pri použití CGI skript. Znižuje sa tým čas potrebný na vytváranie programov a vo všeobecnosti sú bezpečnejšie. S CGI môžete spúšťať skripty ihneď, zatiaľ čo servlety budete musieť preložiť skript do Java a skompilovať ho do servletu, ktorý trochu pridá čas načítania.

Zhrnutie:
1.CGI sú zvyčajne spustiteľné súbory, ktoré sú natívne pre operačný systém servera, hoci servlety sa môžu kompilovať aj do natívneho OS, ale môžu sa skompilovať do bajtkódu Java, ktorý sa potom spustí na JVM.
2.CGI programy závisia od platformy, zatiaľ čo servlety sú nezávislé od platformy
3.CGI programy bežia na počítači ako samostatné procesy, zatiaľ čo servlety bežia na JVM
4.CGI môžu byť zraniteľnejšie voči útokom ako servlety
5.CGI môže priamo spracovať skripty, kým je potrebné ho preložiť a skompilovať, aby sa dal spustiť ako servlet