Grafico comparativo
Base per il confronto | CGI | servlet |
---|---|---|
Di base | I programmi sono scritti nel sistema operativo nativo. | Programmi utilizzati con Java. |
Dipendenza dalla piattaforma | Piattaforma dipendente | Non si basa sulla piattaforma |
Creazione del processo | Ogni richiesta del cliente crea il proprio processo. | I processi vengono creati in base al tipo di richiesta del client. |
Conversione della sceneggiatura | Presente sotto forma di eseguibili (nativi del sistema operativo del server). | Compilato in codice Bytecode Java. |
Gira su | Processo separato | JVM |
Sicurezza | Più vulnerabile agli attacchi. | Può resistere agli attacchi. |
Velocità | Più lentamente | Più veloce |
Elaborazione di script | Diretto | Prima di eseguire gli script è tradotto e compilato. |
portabilità | Impossibile eseguire il porting | Portatile |
Definizione di CGI
La CGI (Common Gateway Interface) è un'interfaccia che gestisce programmi esterni (script CGI) su un server Web per consentire l'esecuzione delle pagine Web interattive. CGI è stato sviluppato da NCSA (National Center for Supercomputing Applications) nel 1993. Si trova sul lato server e consente ai browser Web di interagire con i programmi sul server web. Ad esempio, se una pagina Web invia una query a un database o un utente sta inviando le informazioni del modulo al server in quel momento, gli script CGI vengono richiamati. Il server trasmette tali informazioni a un'applicazione in due modi GET o POST, quindi l'applicazione risponde al server di nuovo al browser. In questo modo, i browser ottengono alcuni risultati per l'utente.
CGI è una clausola, per descrivere un metodo per eseguire script CGI e fornire i risultati al server per quei particolari programmi. La funzione di un CGI è di scansionare le informazioni ricevute dal browser e produrre una risposta adeguata, dopo il completamento dell'attività, lo script CGI viene terminato. In Common Gateway Interface, il comune significa che può funzionare bene in qualsiasi sistema operativo o linguaggio di programmazione.
Precedentemente, gli script di shell UNIX e PERL sono stati usati per scrivere i programmi CGI, che è il motivo per cui è stato chiamato "script" CGI. Ma ora è possibile utilizzare qualsiasi linguaggio come C, C ++, Perl, Visual Basic o Python. Sebbene CGI possa portare a potenziali problemi di sicurezza, il web server può anche trattare i file eseguibili come programmi CGI in alcune directory specifiche. CGI gestisce ogni richiesta del client da un processo separato che aumenta il carico del server rendendolo più lento.
Definizione di Servlet
Un servlet è un componente Web basato su Java che funge da programma intermedio che facilita l'interazione tra il browser Web o il client HTTP e il server HTTP. Analogamente a CGI, le servlet possono anche essere utilizzate per raccogliere le informazioni dai moduli delle pagine Web, mostrare i record dal database e generare pagine Web dinamiche con l'aiuto di un contenitore. Servlet è una classe Java che non si affida alla piattaforma e viene ulteriormente compilata nel bytecode, che è indipendente dalla piattaforma. Il bytecode indipendente dalla piattaforma può essere memorizzato ed eseguito dinamicamente dal server Web Java. Servlet utilizza il socket e il meccanismo RMI per stabilire la connessione tra applet, database o altri programmi di database.
Il contenitore servlet è una parte del server Web che supporta i protocolli HTTP e HTTPS . Impiega il metodo richiesta / risposta utilizzando il protocollo HTTP e HTTPS per consentire l'interazione con i client Web. A differenza di CGI, servlet viene eseguito all'interno dello spazio degli indirizzi del server Web, dove ciascun client non viene necessariamente trattato separatamente. Nel servlet, una serie di vincoli viene applicata al server per proteggere le risorse sul server.
Differenze chiave tra CGI e Servlet
- Gli script CGI sono scritti nel sistema operativo nativo e memorizzati nella directory specifica. D'altra parte, i programmi servlet sono solitamente scritti in Java, che è compilato in bytecode Java ed eseguito in JVM.
- CGI è specifico per piattaforma che rende difficile passare da un sistema operativo all'altro. Come contro, Servlet può essere eseguito in qualsiasi sistema operativo che abbia installato JVM, quindi è indipendente dalla piattaforma.
- In CGI ogni richiesta del client in arrivo può generare un processo separato mentre servlet, i processi non vengono creati inutilmente e condividono lo spazio di memoria della JVM.
- Gli script CGI sono programmi eseguibili scritti nel sistema operativo nativo del server. Al contrario, le servlet sono compilate in bytecode Java eseguito su JVM.
- Servlet è più sicuro di CGI poiché usa Java.
- La velocità, le prestazioni e l'efficienza del servlet sono migliori di CGI.
- Gli script CGI possono essere elaborati direttamente. Al contrario, la servlet prima traduce e compila il programma, quindi lo elabora.
- Quando si tratta di portabilità, il servlet è portatile mentre CGI no.
Conclusione
CGI e Servlet funzionano allo stesso modo ma l'utilizzo di servlet è vantaggioso rispetto a CGI in quanto il servlet è veloce, sicuro, indipendente dalla piattaforma, facilmente sviluppabile, accessibile tramite diverse API e supportato da vari server web.