Diferença Entre CGI e Servlet Diferença entre
CGI (Common Gateway Interface) é a primeira tentativa de fornecer conteúdo dinâmico aos usuários. Permite aos usuários executar um programa que reside no servidor para processar dados e até acessar bancos de dados de acesso para produzir o conteúdo relevante. Uma vez que estes são programas, eles são escritos no sistema operacional nativo e depois armazenados em um diretório específico. Um servlet é uma implementação do Java que visa fornecer o mesmo serviço que o CGI, mas, em vez de programas compilados no sistema operacional nativo, compila no bytecode Java que é executado na máquina virtual Java. Embora os programas Java possam ser compilados no código nativo, eles ainda preferem compilar no bytecode Java.
A primeira vantagem dos servlets sobre o CGI está em sua independência de plataforma. Servlets pode ser executado em qualquer sistema operacional apenas enquanto uma JVM estiver instalada, o que significa que você não teria nenhum problema mesmo se você optar por mudar os sistemas operacionais. Com o CGI, o sistema operacional de comutação é um processo difícil e laborioso, pois você precisaria recompilar os programas no novo sistema operacional.
Como você está executando programas independentes no CGI, eles criam seu próprio processo quando são executados, algo que não acontece com servlets, pois eles apenas compartilham o espaço de memória da JVM. Isso pode levar a problemas relacionados a despesas gerais, especialmente quando você aumenta o número de usuários exponencialmente. Ele também cria problemas de vulnerabilidade, pois o programa não é controlado de qualquer maneira, uma vez que ele é executado no servidor.
Mais tarde, o método mais comum ao usar o CGI é através de scripts. Isso reduz o tempo necessário para criar programas e geralmente é mais seguro. Com o CGI, você pode executar scripts imediatamente, enquanto servlets, você precisaria traduzir o script em Java e compilá-lo em um servlet que adiciona um pouco ao tempo de carregamento.
Resumo:
1. CGI geralmente são executáveis que são originais do sistema operacional do servidor, embora os servlets também possam ser compilados para o sistema operacional nativo, ele pode ser compilado no bytecode Java que é executado em uma JVM
2. Os programas CGI dependem da plataforma, enquanto os servlets são independentes da plataforma
3. Os programas CGI são executados como processos separados no computador enquanto os servlets são executados na JVM
4. CGI pode ser mais vulnerável a ataques do que servlets
5. O CGI pode processar scripts diretamente enquanto ele precisa ser traduzido e compilado antes que ele possa ser executado como um servlet