Differenza tra CGI e Servlet

CGI vs Servlet

CGI (Common Gateway Interface) è il primo tentativo di fornire agli utenti contenuti dinamici. Consente agli utenti di eseguire un programma che risiede nel server per elaborare i dati e persino accedere ai database per produrre il contenuto pertinente. Poiché si tratta di programmi, vengono scritti nel sistema operativo nativo e quindi archiviati in una directory specifica. Un servlet è un'implementazione di Java che mira a fornire lo stesso servizio di CGI, ma invece di programmi compilati nel sistema operativo nativo, compila nel bytecode Java che viene quindi eseguito nella Java virtual machine. Sebbene i programmi Java possano essere compilati nel codice nativo, continuano a preferire la compilazione nel bytecode Java.

Il primo vantaggio dei servlet su CGI è nella sua indipendenza dalla piattaforma. Le servlet possono essere eseguite su qualsiasi sistema operativo purché sia ​​installata una JVM, il che significa che non si verificheranno problemi anche se si sceglie di cambiare i sistemi operativi. Con CGI, la commutazione del sistema operativo è un processo difficile e laborioso in quanto è necessario ricompilare i programmi nel nuovo sistema operativo.

Dato che stai eseguendo programmi indipendenti in CGI, essi creano il proprio processo quando vengono eseguiti, cosa che non succede con i servlet che condividono lo spazio di memoria della JVM. Questo può portare a problemi relativi al sovraccarico, soprattutto quando si aumenta il numero di utenti in modo esponenziale. Inoltre crea problemi di vulnerabilità in quanto il programma non è controllato in alcun modo una volta eseguito sul server.

In seguito, il metodo più comune quando si utilizza CGI è tramite script. Ciò riduce il tempo necessario per creare programmi e in genere è più sicuro. Con CGI, puoi eseguire gli script subito, mentre servlet, dovresti tradurre lo script in Java e compilarlo in un servlet che aggiunge un po 'al tempo di caricamento.

Sommario:
1.CGI sono in genere eseguibili nativi del sistema operativo del server, sebbene i servlet possano essere compilati anche nel sistema operativo nativo che può essere compilato in bytecode Java che viene quindi eseguito su una JVM
2. I programmi CGI sono dipendenti dalla piattaforma mentre i servlet sono indipendenti dalla piattaforma
I programmi 3.CGI vengono eseguiti come processi separati sul computer mentre i servlet vengono eseguiti sulla JVM
4.CGI può essere più vulnerabile agli attacchi dei servlet
5.CGI può elaborare direttamente gli script mentre deve essere tradotto e compilato prima che possa essere eseguito come un servlet