Web Service x Socket

8 respostas
T

Bom Dia colegas,

aqui na empresa nós realizamos transações de sistema de credito atraves de socket…temos um socket server que abre o uma porta 3000 e 3001 (por exemplo) os clients de outra empresa enviado um pacote de Strings seguindo a ISO 8583 para o nosso server, nos quebramos a String, formamos os campos e realizamos a consulta…respondemos a solicitacao e se chegou tudo ok para o client o mesmo nos responde uma terceira perna dizendo q está tudo ok ou solicitando novamente caso chegou faltando dados…agora a questao é…com web service, eu consigo ter a seguranca dessas tres pernas e também a mesma velocidade de resposta nas transacoes/autorizacoes?

obrigado colegas.abraços.

8 Respostas

P

tap_pedroso:
Bom Dia colegas,

aqui na empresa nós realizamos transações de sistema de credito atraves de socket…temos um socket server que abre o uma porta 3000 e 3001 (por exemplo) os clients de outra empresa enviado um pacote de Strings seguindo a ISO 8583 para o nosso server, nos quebramos a String, formamos os campos e realizamos a consulta…respondemos a solicitacao e se chegou tudo ok para o client o mesmo nos responde uma terceira perna dizendo q está tudo ok ou solicitando novamente caso chegou faltando dados…agora a questao é…com web service, eu consigo ter a seguranca dessas tres pernas e também a mesma velocidade de resposta nas transacoes/autorizacoes?

obrigado colegas.abraços.

Tome cuidado com alguns aspectos desta migração:

  1. ISO-8583 trabalha com modelo assíncrono. WebServices podem ser assíncronos, mas normalmente que consome espera um modelo síncrono. Se este for o caso, talvez seja necessário usar um servidor HTTP que suporte o uso de NIO, como o do Apache MINA.

  2. Vc. pode implementar a 3a perna como um método adicional do WebService. Lembre-se no entanto, de especificar que o consumidor deve tambem implementar um WebService que vc. irá chamar no caso de não receber a chamada do método que corresponde à 3a perna. (0600, se não me engano)

T

E o que vc me diz em relacao a performance? com a ISO o trafego de bytes pode ser ate 80% menor que o WebService…pelo menos de acordo com a nossa necessidade chegamos a esse percentual…isso tem algum impacto, seria um motivo para dizer que com a ISO posso transacionar mais rápido que o WebService?

P

Sim, vc. tem razão neste aspecto. O WebService é bem “perdulário” em termos de utilização de banda, mas isto pode ser mitigado via compressão de dados. De toda forma, em ambientes ISO o gargalo costuma ser o processamento das transações em si, e não a transmissão de dados.

Pelas experiências que tive, o fator que acaba permitindo uma maior performance no caso ISO via Socket é o modelo inerentemente assíncrono, contra as implementações tipicas de WebService, que são síncronas.

L

Olá

Meu pitaco…

Philipe, o ISO 8583 não trabalha preferencialmente do modo assíncrono. O protocolo não tem nenhum restrição quanto a isto. Em todas as aplicações que trabalhei com ISO na área bancária e na área de cartões de crédito, foram usadas transações síncronas.

Pedroso, nunca vi ninguém usar web services para isto. Nem sei qual seria a vantagem. Em termos de velocidade de resposta só terá vantagens se o servidor que usa atualmente for muito ruim. O que usa no servidor? Mina? Grizzly? Threads na raça?

[]s
Luca

P

Luca:
Olá

Meu pitaco…

Philipe, o ISO 8583 não trabalha preferencialmente do modo assíncrono. O protocolo não tem nenhum restrição quanto a isto. Em todas as aplicações que trabalhei com ISO na área bancária e na área de cartões de crédito, foram usadas transações síncronas.

[]s
Luca

Vc. está se referindo ao back-end? Aí ok, em algum momento existe alguem (uma transação CICS, uma stored procedure, ou algo assim) que acaba operando de forma síncrona.

No entando, pelo que entendi da pergunta, trata-se de uma espécie de um roteador de mensagens. Neste caso os que já implementei e/ou trabalhei funcionavam de forma assíncrona.

L

Olá

psevestre:
Vc. está se referindo ao back-end? Aí ok, em algum momento existe alguem (uma transação CICS, uma stored procedure, ou algo assim) que acaba operando de forma síncrona.

No entando, pelo que entendi da pergunta, trata-se de uma espécie de um roteador de mensagens. Neste caso os que já implementei e/ou trabalhei funcionavam de forma assíncrona.

Trabalhei com aplicações Java que conversavam com switchers ou com outras aplicações Java. Sempre síncronas, ou seja, cada thread ficava esperando a resposta.

[]s
Luca

S

tap_pedroso:
Bom Dia colegas,

aqui na empresa nós realizamos transações de sistema de credito atraves de socket…temos um socket server que abre o uma porta 3000 e 3001 (por exemplo) os clients de outra empresa enviado um pacote de Strings seguindo a ISO 8583 para o nosso server, nos quebramos a String, formamos os campos e realizamos a consulta…respondemos a solicitacao e se chegou tudo ok para o client o mesmo nos responde uma terceira perna dizendo q está tudo ok ou solicitando novamente caso chegou faltando dados…agora a questao é…com web service, eu consigo ter a seguranca dessas tres pernas e também a mesma velocidade de resposta nas transacoes/autorizacoes?

Um serviço é como uma interface. foque nos métodos e dados o WS fará a comunicação.
O WS é XML e pode ser prolixo e portanto consumir mais bytes, mas isso se usar SOAP.

No seu caso REST poderia ser bem mais prático. Vc pode utilizar o formato que quiser e não apenas XML.
Bacisamente um metodo = POST que é enviado com dados. O servidor processa e retorna. Como é tudo String vc pode incluir um algorithmo zip do texto. Isso reduzirá o trafego ( embora são sei se o overhead de (des)compressão compensa. Depende do tamanho da mensagem> Normalmente quando maior, mais compensa).
Ou seja, crie seu ppr protocolo com HTTP. Isso simplifica o uso de sokects.
Se precisa encriptar tb pode. Vc determina o protocolo como quiser.

WS não são sobre rapidez e diminuição de consumo de banda ou dados. São sobre integração. Facilidade de um programa comunicar com o seu do dia-para-a-noite. São sobre padronização, não velocidade. Mas é claro que vc pode otimizar todos os componentes do processo para ganhar essa velocidade.

Na real, sockets é coisa do século passado, mas se o seu sistema funciona bem com eles continue.

T

Respondendo o colega Luca, vou utilizar Threads mesmo na unha rs…a aplicação é exatamente para cartão de crédito (como disse que ja trabalhou)…pretendo criar uma aplicação que recebe o pacote de dados e redireciona para uma classe de thread processar e responder a informação e assim tentar não criar filas de espera na porta do autorizador.

obrigado a todos os colegas pelos esclarecimentos.

Criado 10 de outubro de 2008
Ultima resposta 20 de out. de 2008
Respostas 8
Participantes 4