Как мне обеспечить гарантию, что «сообщение» отправляется и сохраняется один и только один раз? - PullRequest
2 голосов
/ 04 августа 2009

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 04 августа 2009

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

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

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


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

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

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

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

1 голос
/ 04 августа 2009

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

...