3

Службы SOA должны иметь самостоятельные услуги, но на практике нам необходимо организовать эти службы для выполнения некоторых бизнес-процессов.Управление транзакциями в SOA

Теперь, чтобы данные процесса были согласованы, нам необходимо обеспечить выполнение всех служб или выполнение ни одного.

Один из способов реализации - реализовать логику «компенсации» для каждой службы и вызвать ее, если возникла какая-либо проблема в процессе/предыдущей службе.

Есть ли какой-либо лучший способ или какой-то стандарт, чтобы сделать то же самое, например, вынимая контекст транзакции и реализуя что-то вроде 2-фазного коммита?

ответ

2

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

Оба механизма компенсации и 2-фазные фиксации (транзакции XA) являются действительными механизмами управления транзакциями.

Рассмотрите, с какими услугами вы обращаетесь, и какую поддержку они предлагают. Например, если у вас есть большое количество веб-служб, у вас может не быть управления транзакциями, которое XA даст вам, но у них может быть механизм для отмены операции.

В идеальном мире у вас будет 2 фазовых фиксации, которые уменьшат требуемую компенсацию, но интерфейсы являются интерфейсами, и, как люди, люди будут меняться, и нет идеального решения.

При проектировании интерфейсов учитывайте управление транзакциями и восстановление компенсации как часть дизайна интерфейса, и вас будут похвалить (или, по крайней мере, не критиковать) за создание полезного интерфейса.

0

Вы можете использовать Обработчики ошибок и Обработчики Компенсации, определенные в Спецификации WS-BPEL 2.0 (который является стандартом, который предлагает способ описания и организации взаимодействия между Веб-службами), поэтому он отделяет бизнес-логику от логики компенсации в стандартном путь.

  • Link Обработка ошибок в BPEL Spec
  • Blog post о том, как написать обработчик компенсации в BPEL