Diagramă de comparație
Bazele de comparație | CGI | servlet |
---|---|---|
De bază | Programele sunt scrise în sistemul nativ. | Programe utilizate folosind Java. |
Platforma de dependență | Platformă dependentă | Nu se bazează pe platformă |
Crearea procesului | Fiecare cerere client creează propriul proces. | Procesele sunt create în funcție de tipul solicitării clientului. |
Conversia scenariului | Prezent sub formă de executabile (originale pentru sistemul de operare server). | Compilat la Java Bytecode. |
Se execută | Proces separat | JVM |
Securitate | Mai vulnerabile la atacuri. | Poate rezista atacurilor. |
Viteză | Mai lent | Mai repede |
Procesarea scenariului | Direct | Înainte de a rula scripturile, este tradus și compilat. |
portabilitate | Nu pot fi portate | Portabil |
Definiția CGI
CGI (Common Gateway Interface) este o interfață care gestionează programe externe (scripturi CGI) pe un server web pentru a permite executarea paginilor web interactive. CGI a fost dezvoltat de către NCSA (Centrul Național pentru Aplicații Supercomputing) în 1993. Acesta se află pe partea de server și permite browserelor web să interacționeze cu programele de pe serverul web. De exemplu, în cazul în care o pagină web interoghează o bază de date sau un utilizator trimite informații despre formular la serverul respectiv, atunci sunt invocate scripturile CGI. Serverul transmite aceste informații unei aplicații în două moduri GET sau POST, apoi aplicația răspunde la server înapoi în browser. În acest fel, browserele obțin rezultate pentru utilizator.
CGI este o prevedere pentru descrierea unei metode de rulare a script-urilor CGI și furnizarea rezultatelor către server pentru programele respective. Funcția unui CGI este de a scana informațiile primite de la browser și de a produce un răspuns adecvat, după terminarea sarcinii, scriptul CGI este terminat. În interfața Common Gateway, comun înseamnă că poate funcționa bine în orice sistem de operare sau limbaj de programare.
Anterior, scripturile de shell UNIX și PERL au fost folosite pentru a scrie programele CGI, acesta fiind motivul pentru care a fost numit "scripturi" CGI. Dar, acum pot fi utilizate oricare limbi precum C, C ++, Perl, Visual Basic sau Python. Deși CGI poate conduce potențialele probleme de securitate, deoarece serverul web poate trata, de asemenea, fișiere executabile ca programe CGI în anumite directoare. CGI gestionează fiecare cerere de client printr-un proces separat, ceea ce crește sarcina serverului făcând-o mai lentă.
Definiția Servlet
Un Servlet este o componentă Web bazată pe Java, care funcționează ca un program intermediar care facilitează interacțiunea dintre browserul web sau clientul HTTP și serverul HTTP. Similar cu CGI, servlet-urile pot fi de asemenea folosite pentru a aduna informațiile prin paginile web, pentru a afișa înregistrările din baza de date și pentru a genera pagini web dinamice cu ajutorul unui container. Servlet este o clasă Java care nu se bazează pe platformă și este compilată ulterior la bytecode care este independent de platformă. Bicazul neutru de platformă poate fi stocat și executat dinamic de către serverul Web Java. Servlet utilizează mufa și mecanismul RMI pentru a stabili conexiunea între applet-uri, baze de date sau alte programe de baze de date.
Servlet container este o parte a serverului web care acceptă protocoale HTTP și HTTPS . Acesta utilizează metoda de solicitare / răspuns utilizând protocolul HTTP și HTTPS pentru a permite interacțiunea cu clienții web. Spre deosebire de CGI, servletul rulează în spațiul de adrese al serverului web, unde fiecare client nu este tratat în mod necesar separat. În servlet, o serie de constrângeri sunt impuse pe server pentru a proteja resursele de pe server.
Diferențe cheie între CGI și Servlet
- Scripturile CGI sunt scrise în sistem nativ și stocate în directorul respectiv. Pe de altă parte, programele de servlet sunt de obicei scrise în Java, care este compilat în Java bytecode și executat în JVM.
- CGI este specifică platformei, ceea ce face dificilă schimbarea între sistemele de operare. Spre deosebire de acestea, servlets pot fi executate în orice sistem de operare care a instalat JVM, deci este independent de platformă.
- În CGI, fiecare cerere de client care sosește poate genera un proces separat în timp ce servletul, procesele nu sunt create în mod inutil și partajarea spațiului de memorie al JVM.
- Scripturile CGI sunt programe executabile scrise în sistemul de operare nativ al serverului. În schimb, servlet-urile sunt compilate în Java bytecode care rulează pe JVM.
- Servlet este mai sigur decât CGI, deoarece utilizează Java.
- Viteza, performanța și eficiența servletului sunt mai bune decât CGI.
- Scripturile CGI pot fi procesate direct. Din contră, servletul mai întâi traduce și compilează programul, apoi o procesează.
- Când vine vorba de portabilitatea servletul este portabil în timp ce CGI nu este.
Concluzie
CGI și Servlet lucrează în același mod, dar utilizarea servletului este avantajoasă față de CGI deoarece servletul este rapid, sigur, independent de platformă, ușor de dezvoltat, accesibil prin intermediul mai multor API-uri și acceptat de diverse servere web.