CGI, Fast CGI e Servlets

6 respostas
denisspitfire

Alguem sabe a diferença entre CGI, Fast CGI e Servlets. Procurei algumas materias, mas na pratica qual a diferença?

6 Respostas

J

Explicação bem superficial…

CGI = Common Gateway Interface
basicamente (explicação bem superficial), é uma forma de o servidor web acionar um programa externo que irá fazer um processamento dinâmico e retornar o resultado.
Existem padrões e bibliotecas prontas para trabalhar com diversas tecnologias, mas basicamente você pode fazer um executavel em C que verá que o webserver irá passar o request como se fosse um parâmetro para seu programa e o resultado gerado será devolvido ao servidor web que montará o response com ele.
Fast CGI é uma extensão de cgi com mais recursos
http://www.fastcgi.com

Servlet, diferente de CGI já é uma forma de trabalhar direto com o request / response e processada não como um programa a parte e sim dentro de um webcontainer.

Você pode fazer um aplicativo em Java sem utilizar Servlet (através de cgi e do executável java), mas a vantagem do servlet é uma séria de implementações que já existem no webcontainer responsáveis por diversas melhorias/otimizações/facilidades/etc.

denisspitfire

e o modo como ela se “duplica” é a mesma maneira que o cgi?

rodrigo.ferreira

Oi, boa tarde.

Basicamente o CGI é um programa que cria novos processos a cada requisição a ele (pode ser desenvolvido em várias linguagens)… levando o servidor a queda e lentidão total rapidamente…

Enquanto o Servlet cria Threads e tem muito mais recursos providos pelo Servidor Web/Aplicações Java EE.

Dê uma olhada nestes textos:

http://www.differencebetween.net/technology/difference-between-cgi-and-servlet/

http://c2.com/cgi/wiki?CgiVsServlet

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.7471&rep=rep1&type=pdf

Abraço,

J

Não entendi direito sua duvida, mas eu conheço CGI somente de forma superficial (fiz alguns cgis bem bobinhos em C na época em que se acessava internet com 486 e dei manutenção em alguns CGIS também ja prontos)…

então não sei se consigo ajudar muito a fundo!

denisspitfire

rodrigo.ferreira:
Oi, boa tarde.

Basicamente o CGI é um programa que cria novos processos a cada requisição a ele (pode ser desenvolvido em várias linguagens)… levando o servidor a queda e lentidão total rapidamente…

Enquanto o Servlet cria Threads e tem muito mais recursos providos pelo Servidor Web/Aplicações Java EE.

Dê uma olhada nestes textos:

http://www.differencebetween.net/technology/difference-between-cgi-and-servlet/

http://c2.com/cgi/wiki?CgiVsServlet

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.7471&rep=rep1&type=pdf

Abraço,

Mas pq quando voce faz varias threads é mais rapido que um processo? a thread nao seria um processo também?

rodrigo.ferreira

Olá, boa tarde.

A cada requisição a um CGI, este cria um processo no servidor, então, se houverem 100 mil acessos simultâneos, serão 100 mil processos criados no servidor… imagine?

Outra desvantagem do CGI é que os servidores de hospedagem não costumam aceitá-lo bem, porque scripts mal feitos podem danificar seriamente o servidor todo.

No caso dos Servlets, a infra estrutura é toda mantida pelo servidor web/aplicação Java EE. Neste caso, o servidor criará algumas instâncias do Servlet e usará uma técnica chamada “pool de instâncias” para servir milhares de requisições com algumas instâncias carregadas na memória e controlará esta demanda automaticamente. Ele pode usar a mesma instância para servir milhares de requisições… Caso não haja instâncias, a requisição aguarda até que haja uma… Se a demanda aumentar muito, o servidor cria mais… se diminuir, ele destrói várias instâncias… e por aí vai…

Leia este artigo (http://citeseerx.ist.psu.edu/viewdoc/download?doi=…1.1.19.7471&rep=rep1&type=pdf). Ele faz uma comparação muito boa e explica o que cada um faz e como se comportam.

Abraço,

Criado 14 de junho de 2012
Ultima resposta 14 de jun. de 2012
Respostas 6
Participantes 3