Разница между CGI и сервлетом

CGI против сервлетов

CGI (Common Gateway Interface) - это самая первая попытка предоставить пользователям динамический контент. Это позволяет пользователям выполнять программу, находящуюся на сервере, для обработки данных и даже для доступа к базам данных для создания соответствующего контента. Поскольку это программы, они пишутся в собственной операционной системе и затем сохраняются в определенном каталоге. Сервлет - это реализация Java, целью которой является предоставление того же сервиса, что и CGI, но вместо программ, скомпилированных в собственной операционной системе, он компилируется в байт-код Java, который затем запускается на виртуальной машине Java. Хотя Java-программы могут быть скомпилированы в нативный код, они все же предпочитают компилировать в байт-код Java.

Первое преимущество сервлетов над CGI - независимость от платформы. Сервлеты могут работать в любой операционной системе, если установлена ​​JVM, а это означает, что у вас не возникнет никаких проблем, даже если вы решите переключать операционные системы. С CGI переключение операционной системы является сложным и трудоемким процессом, так как вам нужно будет перекомпилировать программы в новой операционной системе.

Поскольку вы выполняете независимые программы в CGI, они создают свой собственный процесс при выполнении, чего не происходит с сервлетами, поскольку они просто разделяют пространство памяти JVM. Это может привести к проблемам, связанным с накладными расходами, особенно когда вы увеличиваете количество пользователей в геометрической прогрессии. Это также создает проблемы уязвимости, поскольку программа не контролируется каким-либо образом после запуска на сервере..

Позже, более распространенным методом при использовании CGI является использование скриптов. Это сокращает время, необходимое для создания программ, и, как правило, является более безопасным. С CGI вы можете запускать сценарии сразу, в то время как сервлетам вам нужно будет перевести сценарий на Java и скомпилировать его в сервлет, который немного увеличивает время загрузки..

Резюме:
1.CGI, как правило, являются исполняемыми файлами, которые являются родными для операционной системы сервера, хотя сервлеты также могут быть скомпилированы в нативную ОС, их можно скомпилировать в байт-код Java, который затем запускается на JVM.
2. Программы CGI зависят от платформы, а сервлеты не зависят от платформы
3.CGI-программы выполняются как отдельные процессы на компьютере, а сервлеты - на JVM.
4. CGI может быть более уязвим для атак, чем сервлеты
5. CGI может напрямую обрабатывать скрипты, в то время как они должны быть переведены и скомпилированы до того, как они могут быть запущены как сервлет