TransactionScope нужен сервис DTC? - PullRequest
10 голосов
/ 31 января 2012

Из того, что я читаю, чтобы использовать TransactionScope в .NET, вам нужна служба координатора распределенных транзакций в Windows. У меня эта служба выключена , и мое приложение работает так же, и откат транзакций не вызывает проблем.

Я что-то упустил? Как это работает? Я использую Windows 7 и запускаю веб-приложение из VisualStudio 2010.

Ответы [ 2 ]

11 голосов
/ 31 января 2012

Более современные версии Windows имеют версию с мини DTC в ядре.Он не распространяется, но использует тот же API - но он может обрабатывать только один ресурс для каждой области транзакции.

TransactionScope использует это при запуске, а затем «продвигает» транзакцию к реальному DTC в тот момент, когда второй ресурсдобавлено (ресурс в вашем случае это соединение с базой данных).Таким образом, если ваш вариант использования прост, вы избегаете (высоких) издержек DISTRIBUTED части кода неисправности и можете работать без запуска службы.

Дополнительную информацию о Kernel Transaction Managger можно найти по адресу http://en.wikipedia.org/wiki/Kernel_Transaction_Manager

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

http://www.codeguru.com/cpp/article.php/c18309/

9 голосов
/ 31 января 2012

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

SO, ответ:

Это зависит!

  • Если вы используете 1 TranScope на 1 соединение - тогда НЕТ
  • Если вы используете 1 TranScope на более чем 1 соединение - тогда ДА
  • Если вы создали объект TransactionScopeкоторый требует распределенной транзакции - тогда ДА
...