WCF SOAP Идемпотент - PullRequest
       19

WCF SOAP Идемпотент

1 голос
/ 21 июля 2011

Я могу запутаться здесь, но скажу, что хочу, чтобы служба была идемпотентной. То есть, получение одного и того же запроса более одного раза не изменит состояния системы. Это имеет смысл для меня при получении сообщений в отключенной системе интеграции. Например, получение сообщений через MSMQ и наличие какой-либо формы обслуживания, связанной с полученными сообщениями. Вы хотите, чтобы служба находилась в согласованном состоянии, даже если она получает 10 повторяющихся сообщений.

Что я сейчас пытаюсь понять, так это стандартная служба WCF SOAP, которая выполняет операции CRUD. Входит ли вопрос идемпотентности только в том случае, если это асинхронный вызов? Является ли синхронный призыв по природе идемпотентом? Глядя на операции CRUD, единственное, что не является идемпотентом - это создание. Можете ли вы создать дубликаты вызовов для WCF?

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Синхронный или асинхронный не имеет значения.Подумайте о том, что если запрос обрабатывается, но до получения ответа соединение теряется.Таким образом, ваш клиент получает ошибку, но сервер обработал запрос.Обновление идемпотентно, потому что в худшем случае вы обновляете запись дважды.

0 голосов
/ 21 июля 2011

Я думаю, это будет зависеть от того, что вы определяете (в своем домене) как дубликат. Как только это будет определено, вы можете запустить проверки перед созданием вашей записи. например У меня есть Person с FirstName, LastName и т. Д. ... дубликат будет идентифицирован как FirstName + LastName.

Какие дубликаты сообщений вы ожидаете получить от вашего сервиса? Один и тот же клиент «дважды щелкает кнопкой отправки»? или два разных клиента пытаются обновить запись одновременно?

...