
Сравнительная таблица
Основа для сравнения | CGI | Servlet |
---|---|---|
основной | Программы написаны на родной ОС. | Программы, работающие с использованием Java. |
Зависимость от платформы | Зависит от платформы | Не полагается на платформу |
Создание процесса | Каждый клиентский запрос создает свой собственный процесс. | Процессы создаются в зависимости от типа клиентского запроса. |
Конвертация скрипта | Присутствует в виде исполняемых файлов (родных для серверной ОС). | Скомпилировано в байт-код Java. |
Работает на | Отдельный процесс | JVM |
Безопасность | Более уязвимы для атак. | Может противостоять атакам. |
скорость | Помедленнее | Быстрее |
Обработка скрипта | непосредственный | Перед запуском скриптов он переводится и компилируется. |
портативность | Не может быть перенесен | портативный |
Определение CGI
CGI (Common Gateway Interface) - это интерфейс, который обрабатывает внешние программы (скрипты CGI) на веб-сервере, чтобы обеспечить выполнение интерактивных веб-страниц. CGI был разработан NCSA (Национальный центр приложений суперкомпьютеров) в 1993 году. Он находится на стороне сервера и позволяет веб-браузерам взаимодействовать с программами на веб-сервере. Например, если веб-страница запрашивает базу данных или пользователь отправляет информацию о форме на сервер в то время, когда вызываются сценарии CGI. Сервер передает эту информацию в приложение двумя способами: GET или POST, затем приложение отправляет ответ серверу обратно в браузер. Таким образом, браузеры получают некоторые результаты для пользователя.
CGI является условием для описания метода запуска сценариев CGI и предоставления результатов обратно на сервер для этих конкретных программ. Функция CGI заключается в сканировании информации, полученной из браузера, и получении правильного ответа, после завершения задачи сценарий CGI завершается. В общем интерфейсе шлюза, общее означает, что он может нормально работать в любой операционной системе или языке программирования.
Раньше для написания CGI-программ использовались сценарии оболочки UNIX и PERL, поэтому его и называли «CGI- сценариями» . Но теперь можно использовать любой из языков, таких как C, C ++, Perl, Visual Basic или Python. Хотя CGI может привести к потенциальным проблемам с безопасностью, поскольку веб-сервер также может обрабатывать исполняемые файлы как программы CGI в некоторых конкретных каталогах. CGI обрабатывает каждый клиентский запрос отдельным процессом, который увеличивает нагрузку на сервер, делая его медленнее.
Определение сервлета
Сервлет - это веб-компонент на основе Java, выполняющий роль промежуточной программы, которая облегчает взаимодействие между веб-браузером или HTTP-клиентом и HTTP-сервером. Подобно CGI, сервлеты также можно использовать для сбора информации с помощью форм веб-страниц, отображения записей из базы данных и создания динамических веб-страниц с помощью контейнера. Servlet - это класс Java, который не зависит от платформы и далее компилируется в байт-код, который не зависит от платформы. Независимый от платформы байт-код может динамически храниться и выполняться веб-сервером Java. Сервлет использует сокет и механизм RMI для установления соединения между апплетами, базами данных или другими программами баз данных.
Контейнер сервлетов является частью веб-сервера, который поддерживает протоколы HTTP и HTTPS . Он использует метод запроса / ответа, используя протоколы HTTP и HTTPS для обеспечения взаимодействия с веб-клиентами. В отличие от CGI, сервлет работает внутри адресного пространства веб-сервера, где каждый клиент не обязательно обрабатывается отдельно. В сервлете на сервере применяется набор ограничений для защиты ресурсов на сервере.
Ключевые различия между CGI и сервлетом
- CGI-скрипты написаны на родной ОС и хранятся в определенной директории. С другой стороны, программы сервлетов обычно пишутся на Java, который компилируется в байт-код Java и выполняется в JVM.
- CGI зависит от платформы, что затрудняет переключение между операционными системами. В отличие от этого, сервлеты могут выполняться в любой операционной системе, в которой установлена JVM, поэтому он не зависит от платформы.
- В CGI каждый поступающий клиентский запрос может генерировать отдельный процесс, в то время как сервлет не создает ненужных процессов и разделяет пространство памяти JVM.
- CGI-скрипты - это исполняемые программы, написанные на собственной ОС сервера. Напротив, сервлеты компилируются в байт-код Java, который работает на JVM.
- Сервлет более безопасен, чем CGI, так как использует Java.
- Скорость, производительность и эффективность сервлета лучше, чем у CGI.
- CGI-скрипты могут быть обработаны напрямую. Напротив, сервлет сначала переводит и компилирует программу, а затем обрабатывает ее.
- Когда дело доходит до переносимости сервлет является переносимым, а CGI - нет.
Заключение
CGI и Servlet работают одинаково, но использование сервлета имеет преимущество перед CGI, так как сервлет быстрый, безопасный, независимый от платформы, легко разрабатывается, доступен через несколько API и поддерживается различными веб-серверами.