Forskellen mellem CGI og Servlet

CGI vs Servlet

CGI (Common Gateway Interface) er det allerførste forsøg på at give brugerne dynamisk indhold. Det giver brugerne mulighed for at udføre et program, der er bosat på serveren til at behandle data og endda få adgang til databaser for at producere det relevante indhold. Da dette er programmer, skrives de i det oprindelige operativsystem og gemmes derefter i en bestemt mappe. En servlet er en implementering af Java, der sigter mod at levere den samme service, som CGI gør, men i stedet for programmer, der er kompileret i det oprindelige operativsystem, samles den til Java-bytekoden, som derefter køres i den virtuelle Java-maskine. Selvom Java-programmer kan kompileres til den oprindelige kode, foretrækker de stadig at kompilere i Java-bytekoden.

Den første fordel ved servlets i forhold til CGI er i platformens uafhængighed. Servlets kan køre på ethvert operativsystem, så længe en JVM er installeret, hvilket betyder, at du ikke ville have noget problem, selvom du vælger at skifte operativsystemer. Med CGI er det at skifte operativsystem en vanskelig og mødelig proces, da du ville have brug for at kompilere programmerne i det nye operativsystem.

Da du kører uafhængige programmer i CGI, opretter de deres egen proces, når de udføres, noget der ikke sker med servlets, da de bare deler i hukommelsesområdet til JVM. Dette kan føre til problemer i forbindelse med omkostninger, især når du øger antallet af brugere eksponentielt. Det skaber også sårbarhedsproblemer, da programmet ikke kontrolleres på nogen måde, når det køres på serveren.

Senere er den mere almindelige metode ved brug af CGI via scripts. Dette reducerer den nødvendige tid til oprettelse af programmer og er generelt mere sikker. Med CGI kan du køre scripts med det samme, mens servlets, er du nødt til at oversætte scriptet til Java og kompilere det til en servlet, der tilføjer en lille smule til indlæsningstiden.

Resumé:
1.CGI er normalt eksekverbare filer, der er hjemmehørende i serverens operativsystem, selvom servlets også kan kompileres til det oprindelige operativsystem, kan det kompileres til Java-bytecode, som derefter køres på en JVM
2.CGI-programmer er platformafhængige, mens servlets er platformuafhængige
3.CGI-programmer kører som separate processer på computeren, mens servlets kører på JVM
4.CGI kan være mere sårbar over for angreb end servlets
5.CGI kan direkte behandle scripts, mens det skal oversættes og kompileres til, før det kan køres som en servlet