| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/08/2004 17:45:24
|
Alexandre
JavaEvangelist
![[Avatar]](/images/avatar/3416a75f4cea9109507cacd8e2f2aefc.jpg)
Membro desde: 05/09/2002 23:25:11
Mensagens: 431
Localização: Sydney - Australia
Offline
|
Olá pessoal,
estou desenvolvendo um projeto e-commerce em que um pedido deve ser
processado de forma rápida, quase que simultaneamente à sua requisição.
O pedido deve ser processado e entregue em cerca de 30 a 40 minutos.
Para obter essa velocidade, como a mensagem com o pedido deve ser
transmitida? Via e-mail? Ou existe algum tipo de arquitetura ou tecnologia que
me permita fazer esta tranmissão de forma bastante rápida?
Obrigado pela atenção.
|
amartinsn [at] gmail.com
http://flickr.com/photos/alexmartins
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/08/2004 19:58:50
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Oi,
E-mail é besteira se você rpecisa de confiabilidade.
O seu sistema de pedidos precisa conversar com o outro ou apenas ter um setor de 'adminsitração'? Se precisar conversar, procure sobre WebServices e SOAP, se apenas uma parte de adminsitração, guarde tudo no banco de dados mesmo e mostre ao seu adminsitrador
[]s
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/08/2004 23:31:13
|
Alexandre
JavaEvangelist
![[Avatar]](/images/avatar/3416a75f4cea9109507cacd8e2f2aefc.jpg)
Membro desde: 05/09/2002 23:25:11
Mensagens: 431
Localização: Sydney - Australia
Offline
|
Eu escolhendo a segunda opção, de guardar os meus pedidos em banco,
como faria para sempre ficar atualizando a lista de pedidos no meu setor de
administração? Ficaria fazendo consulta ao banco periodicamente?
E como implementar utilizando webservices? Tem algum material? Sou meio
leigo com webservices....
Obrigado!
|
amartinsn [at] gmail.com
http://flickr.com/photos/alexmartins
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 09:15:41
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
SOAP - http://www.w3schools.com/soap/default.asp
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 09:36:06
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Alexandre, nao esqueca de dar uma olhada na JMS e nos servidores de filas disponiveis por ai - ActiveMQ, IBM MQSeries, BEA ____ (esqueci o nome), Microsoft MSMQ e tal. Vale a pena, caso vc precise de confiabilidade e tenha uma boa grana pra gastar em infra-estrutura (ActiveMQ eh opensource, mas ainda assim...)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 09:49:37
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
cv wrote:BEA ____ (esqueci o nome),
Bea MessageQ, brr...
Mas sim, a sugestão é boa.
Se você guardar seus pedidos em um banco de dados ou coisa que o valha, você vai ter uma tela, página, sei lá... que exibe os pedidos para ele. Para avisar que existem pedidos novos é que o bicho pega, você pdoe usar o e-mail, mas cai no problema do não poder confiar.
De repente é melhor você manter um aplicativo cliente rodando no computador do adminsitrador, que checa periodicamente sobre novos pedidos, fica escondido numa tray ou coisa assim.
[]s
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 10:11:17
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Se não estou perdendo alguma coisa, seu problema é simples:
a) java dos 2 lados, isto é, java para fazer a requisição do pedido e java para processar o pedido
Envie o pedido zipado como mensagem http com URLConnection. Se não tem problemas com firewall, use sockets (SSL com JSSE). Se quer enviar logo o objeto todo use RMI (ou mesmo o zip do ObjectOutputStream). Importante: use transient para o campos que não precisam ser transmitidos.
b) java na requisição do pedido e qualquer outra coisa do outro lado
Chame um cara que conheça bem WebServices. Se vc não conhece nada, poderá levar uma boa surra até fazer funcionar com desempenho adequado.
Nos 2 casos persista as mensagens (além dos pedidos é claro) em uma base de dados para servir de log em caso de erro. Crie um mecanismo de reenvio de mensagem no caso de falha. Algo mais ou menos assim:
Protocolo de 3 pernas:
1 - envia a mensagem número tal
2 - recebe a confirmação
3 - envia ACK do recebimento da confirmação para o outro lado efetivar o pedido
Em caso de falhar alguma perna, reenvie a mensagem. Você precisará sequenciar as mensagens para saber exatamente qual falhou e que precisará ser reenviada.
É possível criar um protocolo de apenas 2 pernas. No Banco Postal fizemos assim. Mas em geral o de 3 pernas é mais comum.
A solução usando JMS é boa, inclusive pode contar com ajuda de Message Driven Beans que é o lado fácil dos EJBs. O outro lado pode também acessar o serviço de mensageria. Bem, a escolha vai depender dos recursos e do ambiente. Na base do cada caso é um caso.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 10:53:16
|
Alexandre
JavaEvangelist
![[Avatar]](/images/avatar/3416a75f4cea9109507cacd8e2f2aefc.jpg)
Membro desde: 05/09/2002 23:25:11
Mensagens: 431
Localização: Sydney - Australia
Offline
|
cv wrote:Vale a pena, caso vc precise de confiabilidade e tenha uma boa
grana pra gastar em infra-estrutura (ActiveMQ eh opensource, mas ainda
assim...)
CV, para este projeto, por enquanto não tenho grana não, mas e quanto a
esse ActiveMQ? É bom? Estável?
Valew!
|
amartinsn [at] gmail.com
http://flickr.com/photos/alexmartins
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 10:58:55
|
Alexandre
JavaEvangelist
![[Avatar]](/images/avatar/3416a75f4cea9109507cacd8e2f2aefc.jpg)
Membro desde: 05/09/2002 23:25:11
Mensagens: 431
Localização: Sydney - Australia
Offline
|
pcalcado wrote:De repente é melhor você manter um aplicativo cliente
rodando no computador do adminsitrador, que checa periodicamente sobre
novos pedidos, fica escondido numa tray ou coisa assim.
Esta era a minha opção, pois realmente eu terei um ambiente no lado
administrativo, que será feita a listagem dos pedidos que são feitos, para
serem processados, e estava pensando em algo do tipo.......fazer a consulta
por novos pedidos de tempo em tempo(tipo, de 3 em 3 minutos).....
Gostaria de saber se essa é a melhor prática. Dessas citadas, qual vocês me
indicam com o melhor desempenho e performance? Quanto a aprender a tecnologia, no
caso de SOAP, tamos aki pra isso né não.....
Obrigado.
Abraços!
|
amartinsn [at] gmail.com
http://flickr.com/photos/alexmartins
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:04:49
|
rborges
Entusiasta Java
![[Avatar]](/images/avatar/c8d6df01410fa2c25282b.gif)
Membro desde: 26/04/2004 14:39:26
Mensagens: 23
Localização: Rio de janeiro
Offline
|
Uma opção bem simples é construir uma pagina com JSP/Servlet ou Applet que verificasse isso no banco de dados, atraves da web mesmo. Voce manteria as maquinas numa mesma estrutura fisica e poderia apenas ter uma regra de IPFW para esse acesso ao banco de dados.
A solução com JMS é boa quando vc tem muitos servers ou estrutura complexa. Mas no seu caso vai ser apenas uma ponte desnecessaria para a consulta no banco.
Lembre-se.... K.I.S.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:07:28
|
rborges
Entusiasta Java
![[Avatar]](/images/avatar/c8d6df01410fa2c25282b.gif)
Membro desde: 26/04/2004 14:39:26
Mensagens: 23
Localização: Rio de janeiro
Offline
|
Luca...
A sua solução é boa, mas acho que é muito dependente de infra. Isso é bom quando voce tem um fluxo de dados e um cenario que justifique toda essa programação. Lembre-se... É um sistema de e-commerce B2C e nao B2B.
[ ]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:34:21
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
rborges wrote:Uma opção bem simples é construir uma pagina com JSP/Servlet ou Applet que verificasse isso no banco de dados, atraves da web mesmo. Voce manteria as maquinas numa mesma estrutura fisica e poderia apenas ter uma regra de IPFW para esse acesso ao banco de dados.
A solução com JMS é boa quando vc tem muitos servers ou estrutura complexa. Mas no seu caso vai ser apenas uma ponte desnecessaria para a consulta no banco.
Lembre-se.... K.I.S.
rborges wrote:
Luca...
A sua solução é boa, mas acho que é muito dependente de infra. Isso é bom quando voce tem um fluxo de dados e um cenario que justifique toda essa programação. Lembre-se... É um sistema de e-commerce B2C e nao B2B.
Você esqueceu qeu o principal problema é que o tempo de resposta ao pdido deve ser muito pequeno. A menos que você faça constantes refreshs [uma abordagem meio gmail] na página e mantenha o navegador aberto, isto é um pé no saco.
Para mim esse papo de 'cliente universal' já deu no saco, é hroa de assumir que o browser é uma caca para aplicações que exijam um pouco mais.
Alexandre, se você vai usar Java nas duas pontas, esqueça SOAP. Vai ficar muito e desnecessariamente lento. Use algo binário, e aí um JMS pdoe realmente ajudar...
[]s
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:45:50
|
rborges
Entusiasta Java
![[Avatar]](/images/avatar/c8d6df01410fa2c25282b.gif)
Membro desde: 26/04/2004 14:39:26
Mensagens: 23
Localização: Rio de janeiro
Offline
|
Mas se voce usar JMS voce precisar de um cliente local que mantenha uma conexao com o App Server... Isso quer dizer: Uma maquina no "DATACENTER" ou coisa parecida e uma maquina assistindo o PDV. Com isso voce ganha brinquedos novos como VPN, Link dedicado e outras coisas legais ( e caras$$$!!!!).
Ao se optar por uma solução Web, voce pode fazer uma pagina com Applet/ Servlet que faça essas atualizações. E convenhamos: Uma pagina assim não é o fim do mundo, e colocando um pouco de cuidado se faz uma pagina bem elegante.
Soluções com JMS são boas quando se tem uma infra-estrutura distribuida. Quando se tem as maquinas na mesma infra fisica é besteira. Por isso no topico acima eu questionei o foco da applicação. É B2C e não B2C.
Sobre o navegador aberto, não sei a diferença entre um navegador e um client java puro... Afinal, são processos iguais para a maquina local...
[ ]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:52:35
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
O sistema vai rodar todo na mesma rede local? O setor que faz a requisição está em rede local com o setor de expedição? Putz, se é assim tão simplório pode usar Clipper, VB, Delphi ou qq outra coisa. Grava as mensagens em um arquivo e a outra aplicação monitora o diretório para saber se chegou algo novo.
Se é um sistema onde quem faz o pedido está em local remoto e até eventualmente com um palm ou celular e a expedição está longe do servidor que recebe o pedido do vendedor na rua, então o KISS passa a ser "KISS Plus Plus With Atomic Messages"
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/08/2004 11:59:50
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
rborges wrote:Mas se voce usar JMS voce precisar de um cliente local que mantenha uma conexao com o App Server... Isso quer dizer: Uma maquina no "DATACENTER" ou coisa parecida e uma maquina assistindo o PDV. Com isso voce ganha brinquedos novos como VPN, Link dedicado e outras coisas legais ( e caras$$$!!!!).
Uma palavrinha: assíncrono.
Outra coisa: nem você nem ninguem aqui sabe como é o ambiente dele, qauntos adminsitradores existem, sequer qual a verdadeira função da aplicação.
rborges wrote:
Ao se optar por uma solução Web, voce pode fazer uma pagina com Applet/ Servlet que faça essas atualizações. E convenhamos: Uma pagina assim não é o fim do mundo, e colocando um pouco de cuidado se faz uma pagina bem elegante.
A página é o de menos, pode ser até em HTML 3, isso não é relevante. Só que vou fazer refresh à cada minuto? HTML não é a solução para todos os problemas do mundo, e o requisito não funcional exige algo mais controlável que um browser e HTTP.
Se vale a pena ou não, a escolha é de quem paga a conta.
rborges wrote:
Soluções com JMS são boas quando se tem uma infra-estrutura distribuida. Quando se tem as maquinas na mesma infra fisica é besteira. Por isso no topico acima eu questionei o foco da applicação. É B2C e não B2C.
Baseado nas idéias do Luca que de vez em quando pipocam no GUJ , o que é uma aplicação distribuída? Para mim quaqleur coisa que envolva mais de um nó é distribuído.
E JMS numa rede local não só não é besteira como é usado por aplicações muito pesadas, como cotnrole de SMS, redes GSM, etc, tudo em uma rede local. É um pouco mais complicado que HTTP, ams oferece muito mais vantagens.
rborges wrote:
Sobre o navegador aberto, não sei a diferença entre um navegador e um client java puro... Afinal, são processos iguais para a maquina local...
Então não tem diferença entre roda um HSQLDB e um Oracle 10G full. Aidna qeu a aplicação tenha o overhead de uma JVM, o brwoser traz tanta budega quando levanta que não compensa. Fora o fato que eu não posso, normalmente, jogar o browser na system tray, ou fazer algo do tipo para não ficar aquele botão inútil na minha barra de tarefas.
Novamente: no silver bullets!
[]s
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
|
|