Differenza tra CGI e Servlet Differenza tra
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 esegui programmi indipendenti in CGI, essi creano il loro 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.
Successivamente, 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 'di tempo al caricamento.
Riepilogo:
1. I 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 un bytecode Java che viene quindi eseguito su una JVM
2. I programmi CGI sono dipendenti dalla piattaforma mentre i servlet sono indipendenti dalla piattaforma
3. I programmi CGI vengono eseguiti come processi separati sul computer mentre i servlet vengono eseguiti sulla JVM
4. CGI può essere più vulnerabile agli attacchi rispetto ai servlet
5. CGI può elaborare direttamente gli script mentre deve essere tradotto e compilato prima di poter essere eseguito come servlet