Brain Storm sobre utilização de serviço CGI partindo de uma aplicação java

8 respostas
J

Boa noite a todos.
Preciso argumentar algumas coisas em meu projeto e gostaria de um “brain-storm virtual” com relação a utilização de um serviço cgi.
o cenário é o seguinte.
1- faço uma chamada http passando dados a um serviço.
2- esse serviço é um cgi que executa uma dll em C e faz alguns calculos em um programa cobol (não me perguntem xobre essa parte!! Ela graças a Deus é transparente pra mim!)
3- o serviço me retorna um string de informações do cálculo.

as minhas questões são.
1- O quanto os cgis são rápidos, se possível uma avaliação do cgi X web-service padrão SOAP.
2- Segurança dos CGIs, mais uma vez comparanda aos web-services no padrão SOAP.
3- probabilidade de dar problemas imaginando que serão milhares de solicitações…e coloque milhares aí!..rs o cgi aguenta?

A idéia é entender os riscos de utilizarmos algo existente ou construir algo novo. Programo em java, mas na verdade sou analista e estou buscando experiências com vocês, para que meus programadores aqui tenham pelo menos algo mais confiável para desenvolver.

muito obrigado a todos.

8 Respostas

E

a) No seu caso, você só está limitado pela sua aplicação Cobol. Você precisa comparar sua aplicação Cobol com a aplicação Java equivalente.
b) Quanto a segurança, ela depende muito de quem escreveu a CGI, que deve saber C e segurança suficientemente para saber que é necessário testar todas as entradas e saídas contra valores indesejados. Pode ser que a CGI seja robusta e pode ser que ela seja muito frágil…
c) Só fazendo um teste de carga. Como eu disse no item a), só depende da aplicação Cobol.

B

Depender da implementação desse CGI. Uma das diferenças principais entre servlets Java e CGIs é que as servlets ficam carregadas em memória, e servidor cria uma thread para atender a requisição, e manda os dados para as servlets. Nos CGIs antigos, o servidor realizava um fork, criando um processo para atender a requisição. Como processos são bem mais pesados que threads, o servidor CGI não aguentava o peso tratando de muitas conexões.

E

Isso se for uma CGI rodando em Windows (.exe).

Se for uma FastCGI (uma DLL) ou então uma CGI normal em Linux/Unix (onde criar um novo processo é muito mais rápido e econômico que no Windows) então não há grandes problemas com números grandes de requisições a CGIs.

J

Certo é no windows…
Porém não sei se é uma FastDLL…
ponto pra discussão…
O meu método é começar a transmitir por essa dll e ela capotar. tem redundancia, porém não é a idéia ficar usando redundancia como se fosse fluxo alternativo…´é só se der pau mesmo…
Mais algumas informações…

Essa dll que o cgi executa é a mesma que vai na versão offline do software…ou seja hoje ela está acostumada a fazer algumas poucas requisições por pc…
Como o software vai virar web, o parceiro disponibilizou esse serviço e precisamos validar isso…

J

Muito obrigado a todos.
As informações levantadas me auxiliaram a levantar um possivel problema!!!

valeu

B

entanglement:
Isso se for uma CGI rodando em Windows (.exe).

Se for uma FastCGI (uma DLL) ou então uma CGI normal em Linux/Unix (onde criar um novo processo é muito mais rápido e econômico que no Windows) então não há grandes problemas com números grandes de requisições a CGIs.

Essa de criação de processos ser melhor no Linux é verdade mesmo ou é mito? E nas versões mais atuais do Windows?

Estou procurando algo falando disse mas não encontro.

E

Espero que você ainda esteja acompanhando o tópico.
Que eu saiba, se for o que estou pensando (simplesmente portar algo em Cobol para Web usando CGI), acho que não vai dar certo, porque você terá algum problema do tipo “ficar abrindo e fechando conexões com o banco a toda hora” (exceto se o Cobol usar algum esquema de “connection pooling” que use, por exemplo, algum driver especial do ODBC, ou sei lá o que, já que não conheço o Cobol para Windows).
É melhor você dar mais uma examinada e uma estudada antes de dizer que “manda bala, pode fazer assim”.

J

Pode crer…
to estudando ainda isso…
Na verdade as questões discutidas aqui eu enviei aos meus parceiros responsáveis pelo cgi.
Esse lance de abrir um processo toda hora ligou um alerta aqui…rs
Não estou muito confortavel com isso pois tanto a performance quanto o resultado dele em alguns casos influenciam nos nossos aqui…

Se alguém tiver mais experiências com a utilização do CGI meu cenário é o seguinte.

1- tenho uma palicação JAVA Web.
2- Determinado momento essa aplicação chama um serviço de um parceiro.
3- esse serviço é um cgi chamado via http que executa um .exe responsável por chamar uma dll em C que faz calculos e retorna ou manda pro Cobol para dar entrada em alguns processos de gravação.
4- o serviço me retorna uma string http que minha aplicação fica esperando.
5- os meus cálculos em Alguns momentos dependem do dele, ou seja, para retornar uma resposta, eu preciso esperar a resposta desse serviço.

Tenho algumas premissas com relação a esses cálculos, mas a principal é a velocidade e capacidade de processar rapidamente diversas chamadas ao cálculo.

é isso, muito obrigado pela ajuda até aqui…minha reunião para discutir isso é as 16:00 hs…rs até lá da pra amadurecer bem essa idéia…

Criado 29 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 8
Participantes 3