Кажется, что при любом взгляде на него возможна проблема серьезного катастрофического сбоя.
Предполагается, что вы используете асинхронные клиентские вызовы и / или объем обработки, выполняемой на стороне службы.относительно большой.Если по истечении определенного промежутка времени соединение с сервисом от клиента разорвано, клиент не сможет узнать, в каком состоянии последний раз был оставлен сервис. Если это была середина транзакции, транзакция на стороне сервисабудет отменен автоматически ... если это было после транзакции, то ваша работа выполнена ... но в обеих ситуациях клиент "никогда не узнает".
Теоретически ... (и не цитируйте меня по этому поводу, но это звучит как логический сценарий), если банкомат теряет соединение в процессе внесения депозита ... Я верю (и как я уже сказал)не цитируйте меня), что банкомат хранит список транзакций в памяти, чтобы в случае сбоя транзакции после восстановления соединения он мог проверить себя и убедиться, что транзакция действительно была завершена.(Если бы это на самом деле не делало этого ... я был бы немного обеспокоен лично).
Короче говоря ... Я считаю, что единственное, что вы можете сделать в этом сценарии, этопусть клиентская сторона хранит какую-то контрольную сумму, которая бы соответствовала сервисной стороне, чтобы в случае сбоя соединения при повторном установлении соединения он мог проверить сервис, чтобы увидеть, действительно ли транзакция завершиласьили нет.