Diferența dintre CGI și Servlet

CGI vs Servlet

CGI (Common Gateway Interface) este prima încercare de a oferi utilizatorilor conținut dinamic. Acesta permite utilizatorilor să execute un program care se află în server pentru a procesa date și chiar accesa baze de date pentru a produce conținutul relevant. Deoarece acestea sunt programe, acestea sunt scrise în sistemul de operare nativ și apoi stocate într-un anumit director. Un servlet este o implementare a Java care are ca scop furnizarea aceluiași serviciu ca și CGI, dar în loc de programe compilate în sistemul de operare nativ, acesta se compilează în Java bytecode care se execută apoi în mașina virtuală Java. Deși programele Java pot fi compilate în codul nativ, ei încă preferă să compileze în Java bytecode.

Primul avantaj al servlet-urilor față de CGI este independența platformei. Servlet-urile pot rula pe orice sistem de operare atâta timp cât este instalat un JVM, ceea ce înseamnă că nu veți avea nici o problemă chiar dacă alegeți să schimbați sistemele de operare. Cu CGI, schimbarea sistemului de operare este un proces dificil și laborios pe măsură ce va trebui să recompilați programele din noul sistem de operare.

Din moment ce executați programe independente în CGI, ei își creează propriul proces atunci când sunt executați, ceea ce nu se întâmplă cu servlet-urile, deoarece aceștia împărtășesc doar spațiul de memorie al JVM. Acest lucru poate duce la probleme legate de cheltuieli generale, în special atunci când creșteți numărul utilizatorilor exponențial. Se creează, de asemenea, probleme de vulnerabilitate, deoarece programul nu este controlat în nici un fel odată ce este rulat pe server.

Mai târziu, metoda mai frecventă când se utilizează CGI este prin intermediul scripturilor. Acest lucru reduce timpul necesar creării programelor și, în general, este mai sigur. Cu CGI, puteți rula imediat scripturi, în timp ce servlet-uri, va trebui să traduceți scriptul în Java și să îl compilați într-un servlet care adaugă un pic la timpul de încărcare.

Rezumat:
1.CGI sunt, de obicei, executabile care sunt originale sistemului de operare al serverului, deși servlet-urile pot fi de asemenea compilate în sistemul nativ care poate fi compilat la Java bytecode care este apoi executat pe un JVM
2.Programele CGI sunt dependente de platformă, în timp ce servlet-urile sunt independente de platformă
Programele 3.CGI rulează ca procese separate pe computer în timp ce servlet-urile rulează pe JVM
4.CGI pot fi mai vulnerabile la atacuri decât la servlet
5.CGI poate procesa direct scripturi în timp ce trebuie să fie tradus și compilat înainte de a putea fi rulat ca un servlet