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