Різниця між CGI і Servlet

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