Как реализовать двухфазную фиксацию в .NET REST WCF-сервисе? - PullRequest
4 голосов
/ 01 октября 2010

Я создаю веб-сервис RESTful и хочу разрешить ему участвовать в распределенных транзакциях.

Примером сценария может быть то, что моя служба REST может сохранить файл где-нибудь на сервере, и в то же время вызывающая сторона помечает этот файл как сохраненный в своей базе данных. Однако, если файл-сервер заполнен или его вызов базы данных завершился неудачно, другое действие не должно выполняться.

Что я могу сделать, чтобы сохранить мою сторону сделки? Я хотел бы найти решение, которое работает для клиентов .Net и Java. Я знаю, что это запутанная проблема, мне было интересно, есть ли у кого-нибудь какие-либо советы или идеи? Спасибо

1 Ответ

4 голосов
/ 01 октября 2010

Если я вас правильно понимаю, вы говорите о том, чтобы в распределенной транзакции участвовало несколько запросов к разным конечным точкам REST.

В этом случае вам следует взглянуть на этот связанный вопрос , где ответ в основном говорит, что распределенные транзакции - это сценарий, концептуально идущий вразрез с принципами REST .

Однако вы могли бы реализовать решение, используя обходной путь , описанный в этом ответе .
Вы также можете взглянуть на RETRO, который является предварительным подходом для реализации транзакций RESTful, сосредоточенных вокруг Идея рассматривать каждый элемент транзакции ACID как ресурс.

Связанные ресурсы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...