Skillnad mellan CGI och Servlet

CGI vs Servlet

CGI (Common Gateway Interface) är det första försöket att ge användarna dynamiskt innehåll. Det låter användare utföra ett program som finns i servern för att bearbeta data och till och med åtkomstdatabaser för att producera relevanta innehåll. Eftersom dessa är program skrivs de i det ursprungliga operativsystemet och lagras sedan i en specifik katalog. En servlet är ett genomförande av Java som syftar till att tillhandahålla samma tjänst som CGI gör, men istället för program som sammanställts i det inbyggda operativsystemet kompilerar den i Java bytecode som körs sedan i den virtuella Java-maskinen. Även om Java-program kan kompileras i den ursprungliga koden föredrar de fortfarande att kompilera i Java bytecode.

Den första fördelen med servlets över CGI ligger i plattformens oberoende. Servlets kan köras på alla operativsystem lika länge som en JVM är installerad, vilket innebär att du inte skulle ha några problem även om du väljer att byta operativsystem. Med CGI är byte av operativsystem en svår och mödosam process eftersom du skulle behöva kompilera programmen i det nya operativsystemet.

Eftersom du kör oberoende program i CGI skapar de sin egen process när de körs, något som inte händer med servlets som de bara delar i minnesutrymmet i JVM. Detta kan leda till problem med överhead, särskilt när du ökar antalet användare exponentiellt. Det skapar också problem med sårbarheten eftersom programmet inte styrs på något sätt när det körs på servern.

Senare är den vanligaste metoden när man använder CGI via skript. Detta minskar den tid som krävs för att skapa program och är i allmänhet säkrare. Med CGI kan du köra skript direkt, medan servlets, du skulle behöva översätta skriptet till Java och kompilera det i en servlet som lägger lite till laddningstiden.

Sammanfattning:
1.CGI är vanligtvis exekverbara som är inbyggda i serverns operativsystem, men servlets kan också kompileras till det inbyggda operativsystemet det kan kompileras till Java bytecode som sedan körs på en JVM
2.CGI-program är plattformberoende medan servlets är plattformoberoende
3.CGI-program körs som separata processer på datorn medan servlets körs på JVM
4.CGI kan vara mer utsatt för attacker än servlets
5.CGI kan direkt behandla skript medan det behöver översättas och sammanställas till innan det kan köras som servlet