Como devo ir sobre garantindo que uma “mensagem” é enviado e armazenado uma vez e apenas uma vez?

StackOverflow https://stackoverflow.com/questions/1224382

  •  11-07-2019
  •  | 
  •  

Pergunta

Eu estou trabalhando na criação de um sistema de EDI para duas empresas: a empresa A ea empresa B. A empresa A já existe como uma pequena empresa de fabricação e empresa B é uma nova empresa formada em torno de um produto específico com o envolvimento do proprietário da empresa A. a empresa a terá direitos exclusivos para produzir o produto para a empresa B.

Eu sou responsável por todas as coisas de TI e desenvolvimento com ambas as empresas. Eu preciso criar um sistema de EDI para comunicar ordens e outras informações da empresa B para a empresa A, e vice-versa (para confirmações e atualizações de status, etc).

Este tipo de material é bastante novo para mim, então eu só estou procurando conselhos sobre como enviar uma nova ordem da empresa B para a empresa A ea garantia de que ele chega lá, é armazenado, e não são enviados mais de uma vez.

Eu estou pensando que eu provavelmente vou fazer isso com serviços web. Devo olhar para serviços WCF ou ficar com os serviços da Web ASP.NET?

Eu suponho que vou enviar um ID único, com cada ordem para o sistema da empresa A vai reconhecer não para salvá-lo duas vezes se há uma mistura-se, mas como é que eu sei com certeza que a empresa A obteve a informação?

Qualquer outra dica ou conselho é mais do que bem-vindos.

Foi útil?

Solução

Microsoft: ASMX Web Services são uma “Tecnologia Legacy” para saber por que não ficar com os serviços web ASMX.

Não as ordens já tem alguma identificação única?

De qualquer forma, o serviço na empresa A vai querer garantir a ordem é segura gravada (talvez em um banco de dados), e só então o "Enviar uma Ordem" completa operação.


Na empresa A, eu iria criar um serviço de processamento de pedidos. Até agora, ele só precisa de um método: AcceptOrder. Isso seria aceitar todas as informações necessárias para processar um pedido. Esta operação deve primeiro salvar a ordem em um banco de dados, e uma vez que os dados são armazenados de forma segura, voltaria algum tipo de código de confirmação.

Uma tentativa de enviar a mesma ordem novamente seria um fracasso, porque você vai manter uma chave única sobre o identificador único fim de Empresa B.

Vamos confiar em nosso banco de dados, de modo que uma vez que sabemos que os dados foram comprometidos, é seguro para responder "nós temos isso!"

poderia também ser utilizadas outras tecnologias. Uma fila de transacção, por exemplo, usando o MSMQ. Ele teria o mesmo benefício que, uma vez que diz que tem os dados, você pode confiar que ele tem os dados.

Outras dicas

Enviar uma identificação única com a chamada de serviço web e ter o serviço web retornar um código de confirmação e status do pedido único. Isso deve praticamente cobri-lo. Se você quiser, pode adicionar um método de status do pedido de consulta nos serviços da Internet para permitir que você veja se um pedido foi enviado anteriormente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top