Forskel mellem CGI og Servlet Forskellen mellem

Anonim

CGI vs Servlet

CGI (Common Gateway Interface) er det første forsøg på at give brugerne dynamisk indhold. Det giver brugerne mulighed for at udføre et program, der befinder sig i serveren, for at behandle data og endda adgangsdata til at producere det relevante indhold. Da disse er programmer, er de skrevet i det oprindelige operativsystem og derefter gemt i en bestemt mappe. En servlet er en implementering af Java, der sigter mod at levere den samme tjeneste som CGI gør, men i stedet for programmer compiled i det native operativsystem, kompilerer den i Java bytecode, som derefter køres i den virtuelle Java-maskine. Selvom Java-programmer kan kompileres i den indbyggede kode, foretrækker de stadig at kompilere i Java bytecode.

Den første fordel ved servietter over CGI er i sin platform uafhængighed. Servlets kan køre på ethvert operativsystem lige 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 skift operativsystem en vanskelig og arbejdskrævende proces, som du skal genopbygge 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, som de bare deler i JVM's hukommelsesrum. Dette kan medføre problemer med overhead, især når du øger antallet af brugere eksponentielt. Det skaber også sårbarhedsproblemer, da programmet ikke styres 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 tid, der er nødvendig for at oprette programmer og er generelt mere sikker. Med CGI kan du køre scripts med det samme, mens servlets, skal du oversætte scriptet til Java og kompilere det i en servlet, der tilføjer lidt til læsningstiden.

Sammendrag:

1. CGI er normalt eksekverbare, der er indbygget i serverens operativsystem, selvom servlets også kan kompileres til det native OS, kan det kompileres til Java bytecode, som derefter køres på en JVM

2. CGI-programmer er platformafhængige, mens servlets er platformafhæ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 den skal oversættes og kompileres til, før den kan køres som servlet