Варианты транзакций через вызовы веб-сервисов - PullRequest
1 голос
/ 21 января 2009

Есть ли у кого-нибудь понимание вариантов транзакций, доступных через вызовы веб-службы? 1.) У нас есть два приложения, которым необходима транзакционная связь между ними. 2.) App1 вызывает веб-сервис в приложении 2, а затем вносит некоторые изменения в свою собственную базу данных. вызов app2 и изменения его собственной базы данных должны быть скоординированы. Как мы можем это сделать? Каковы возможные варианты?

Ответы [ 4 ]

1 голос
/ 21 января 2009
1 голос
/ 21 января 2009

Вы делаете вызов веб-службы и, если он успешен, меняются в своей собственной БД. Если изменение вашей собственной БД не удается, обратитесь в веб-службу, чтобы отменить изменения, сделанные в предыдущем вызове. Чтобы это произошло, веб-сервис должен предоставить функцию возврата.

Например, веб-сервис имеет функцию createUser, тогда он должен иметь функцию deleteUser.

0 голосов
/ 03 июня 2009

Вы можете попробовать Atomikos ExtremeTransactions . Он включает поддержку транзакций WS / SOAP, откат которых охватывает несколько сайтов.

Guy

0 голосов
/ 21 января 2009

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

В предыдущих приложениях я предоставлял сервис токен веб-сервису. Когда служба возвращается (синхронная или асинхронная), она возвращает токен. Маркер имеет встроенную метку времени. Если отметка времени истекла, то транзакция прерывается, если нет, я предполагаю, что вызов веб-службы прошел успешно.

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

...