ESB + WCF, Транзакция через несколько сервисов - PullRequest
0 голосов
/ 07 июня 2011

У меня есть ESB (Aqualogic), у которого есть прокси.

Этот прокси будет вызывать 3 разные службы, и мне нужно поместить эти 3 службы в область транзакции ...

У ESB нет поддержки транзакций ...

Кто-нибудь знает какое-либо решение для этого?

1 Ответ

1 голос
/ 07 июня 2011

Я не знаком с Aqualogic, но в целом могу сказать, что то, что вы хотите сделать, очень и очень сложно.

Если Aqualogic использует MSMQ для транспорта, то вы можете иметь некоторую форму поддержки транзакцийиспользуя транзакционные очереди.Но это только начало.

Если вы хотите интегрировать службы WCF с транзакционным контекстом, вам нужно настроить поддержку протокола WS-Atomic (см. http://msdn.microsoft.com/en-us/library/ms729784.aspx и http://social.msdn.microsoft.com/Forums/en/wcf/thread/cae32545-6536-4631-b89f-54f55da62199). Это серьезная боль в заднице.

Не только для его настройки, но и для его использования. Использование WS-Atomic на разных серверах означает, что вам нужно активировать MSDTC на всех машинах, и координация между этими MSDTCочень медленный и подверженный длительным тайм-аутам.

Лучше не ожидать, что все будет выполнено в одной транзакции, а использовать рабочий процесс, который компенсирует частичный успех / частичный сбой вашей операции. См. также http://msdn.microsoft.com/en-us/library/dd483319.aspx для примера.

...