Differenza tra CGI e Servlet Differenza tra

Anonim

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 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