Forskjellen mellom CGI og Servlet

CGI vs Servlet

CGI (Common Gateway Interface) er det aller første forsøket på å gi brukerne dynamisk innhold. Det tillater brukere å utføre et program som ligger i serveren for å behandle data og til og med tilgang databaser for å produsere det relevante innholdet. Siden disse er programmer, er de skrevet i det opprinnelige operativsystemet og deretter lagret i en bestemt katalog. En servlet er en implementering av Java som har som mål å gi den samme tjenesten som CGI gjør, men i stedet for programmer kompilert i det opprinnelige operativsystemet, kompilerer det seg inn i Java bytecode som deretter kjøres i den virtuelle Java-maskinen. Selv om Java-programmer kan kompileres i den opprinnelige koden, foretrekker de fortsatt å kompilere i Java bytecode.

Den første fordelen med servletter over CGI er i plattformens uavhengighet. Servlets kan kjøre på alle operativsystem like lenge som en JVM er installert, noe som betyr at du ikke ville ha noe problem, selv om du velger å bytte operativsystem. Med CGI er bytte operativsystem en vanskelig og arbeidskrevende prosess som du vil trenge å kompilere programmene i det nye operativsystemet.

Siden du kjører uavhengige programmer i CGI, oppretter de sin egen prosess når de utføres, noe som ikke skjer med servlets som de bare deler i minneplassen til JVM. Dette kan føre til problemer knyttet til overhead, spesielt når du øker antall brukere eksponentielt. Det skaper også sårbarhetsproblemer da programmet ikke er kontrollert på noen måte når det kjøres på serveren.

Senere er den mer vanlige metoden når du bruker CGI via skript. Dette reduserer tiden som trengs for å lage programmer og er generelt sikrere. Med CGI kan du kjøre skript med en gang, mens servlets, må du oversette skriptet til Java og kompilere det til en servlet som legger litt til lastetiden.

Sammendrag:
1.CGI er vanligvis kjørbare som er innfødt til serverens operativsystem, men servlets kan også kompileres til det native OS det kan kompileres til Java bytecode som deretter kjøres på en JVM
2.CGI-programmer er plattformavhengige mens servlets er plattformuavhengige
3.CGI-programmer kjører som separate prosesser på datamaskinen mens servlets kjører på JVM
4.CGI kan være mer utsatt for angrep enn servlets
5.CGI kan direkte behandle skript mens den må oversettes og kompileres til før den kan kjøres som en servlet