CGI и сервлеты

Anonim

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 может напрямую обрабатывать скрипты, пока их необходимо перевести и скомпилировать до того, как он будет запущен как сервлет