Alguem sabe a diferença entre CGI, Fast CGI e Servlets. Procurei algumas materias, mas na pratica qual a diferença?
CGI, Fast CGI e Servlets
6 Respostas
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.
e o modo como ela se “duplica” é a mesma maneira que o cgi?
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,
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!
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?
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,