Как мне обеспечить гарантию того, что & # 8220; message & # 8221; отправляется и сохраняется один и только один раз?

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

  •  11-07-2019
  •  | 
  •  

Вопрос

Я работаю над созданием системы EDI для двух компаний: компании A и компании B. Компания A уже существует в качестве небольшого производственного предприятия, а компания B - это новая компания, созданная вокруг определенного продукта с участием владельца. Компании A. Компания A будет иметь исключительные права на производство продукта для Компании B.

Я отвечаю за все, что связано с ИТ и развитием, с обеими этими компаниями. Мне нужно спроектировать систему EDI для передачи заказов и другой информации от компании B к компании A и наоборот (для подтверждения и обновления статуса и т. Д.).

Этот тип вещей довольно нов для меня, поэтому я просто ищу совет о том, как отправить новый заказ из компании B в компанию A и гарантировать, что он поступит туда, будет храниться и не будет отправлен более одного раза.

Я думаю, я, вероятно, сделаю это с веб-сервисами. Стоит ли искать сервисы WCF или придерживаться веб-сервисов ASP.Net?

Я предполагаю, что буду отправлять уникальный идентификатор с каждым заказом, чтобы система Компании A распознала, что она не будет сохранена дважды, если возникнет путаница, но как мне точно знать, что компания A получила информацию?

Любые другие советы или рекомендации приветствуются.

Это было полезно?

Решение

См. Microsoft: веб-службы ASMX являются «устаревшей технологией» узнать, почему не придерживаться веб-сервисов ASMX.

Разве у заказов уже нет уникальной идентификации?

В любом случае служба в компании А захочет убедиться, что заказ надежно зафиксирован (возможно, в базе данных), и только после этого "Отправить заказ" операция завершена.

<Ч>

В компании A я бы создал службу обработки заказов. Пока что для этого потребуется только один метод: AcceptOrder. Это позволит принять всю информацию, необходимую для обработки заказа. Эта операция сначала сохранит заказ в базе данных, а после безопасного хранения данных вернет некоторый код подтверждения.

Попытка отправить тот же заказ снова не удастся, потому что вы сохраните уникальный ключ над уникальным идентификатором заказа от компании B.

Мы будем доверять нашей базе данных, поэтому, как только мы узнаем, что данные были зафиксированы, мы можем с уверенностью ответить "мы их получили!"

Другие технологии также могут быть использованы. Транзакционная очередь, например, с использованием MSMQ. Это принесло бы то же преимущество, что, когда в нем говорится, что у него есть данные, вы можете верить, что у него есть данные.

Другие советы

Отправьте уникальный идентификатор с помощью вызова веб-службы и попросите веб-службу вернуть уникальный код подтверждения и статус заказа. Это должно в значительной степени покрыть вас. Если хотите, вы можете добавить в веб-службы метод статуса заказа, чтобы увидеть, был ли заказ отправлен ранее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top