CGI vs Servlet
CGI (Common Gateway Interface) to pierwsza próba dostarczenia użytkownikom treści dynamicznych. Pozwala użytkownikom na uruchomienie programu znajdującego się na serwerze w celu przetwarzania danych, a nawet dostępu do baz danych w celu wytworzenia odpowiedniej zawartości. Ponieważ są to programy, są one zapisywane w rodzimym systemie operacyjnym, a następnie przechowywane w określonym katalogu. Serwlet jest implementacją Java, która ma na celu zapewnienie tej samej usługi co CGI, ale zamiast programów skompilowanych w natywnym systemie operacyjnym, kompiluje się do kodu bajtowego Java, który jest następnie uruchamiany na maszynie wirtualnej Java. Chociaż programy Java można skompilować w natywnym kodzie, nadal wolą kompilować w bajtowym kodzie Java.
Pierwszą przewagą serwletów nad CGI jest niezależność platformy. Serwlety mogą działać w dowolnym systemie operacyjnym, o ile zainstalowana jest JVM, co oznacza, że nie będzie problemu, nawet jeśli zdecydujesz się na zmianę systemu operacyjnego. W przypadku CGI zmiana systemu operacyjnego jest trudnym i pracochłonnym procesem, ponieważ trzeba będzie ponownie skompilować programy w nowym systemie operacyjnym.
Ponieważ uruchamiasz niezależne programy w CGI, tworzą one własny proces po ich uruchomieniu, co nie dzieje się w przypadku serwletów, ponieważ po prostu współużytkują one w przestrzeni pamięci JVM. Może to prowadzić do problemów związanych z kosztami ogólnymi, szczególnie gdy wykładniczo zwiększasz liczbę użytkowników. Powoduje to również problemy z podatnością, ponieważ program nie jest w żaden sposób kontrolowany po uruchomieniu na serwerze.
Później bardziej powszechną metodą korzystania z CGI są skrypty. Zmniejsza to czas potrzebny na tworzenie programów i jest na ogół bardziej bezpieczne. Dzięki CGI możesz od razu uruchamiać skrypty, podczas gdy serwlety musiałybyśmy przetłumaczyć skrypt na Javę i skompilować go w serwlet, który nieco wydłuża czas ładowania.
Streszczenie:
1.CGI są zwykle plikami wykonywalnymi natywnymi dla systemu operacyjnego serwera, chociaż serwlety można również skompilować do natywnego systemu operacyjnego, można też skompilować je do kodu bajtowego Java, który jest następnie uruchamiany na maszynie JVM
2. Programy CGI zależą od platformy, a serwlety są niezależne od platformy
3. Programy CGI działają jako osobne procesy na komputerze, podczas gdy serwlety działają na JVM
4.CGI może być bardziej podatny na ataki niż serwlety
5.CGI może bezpośrednio przetwarzać skrypty, podczas gdy musi zostać przetłumaczone i skompilowane, zanim będzie można je uruchomić jako serwlet