Шаблоны разработки в Динамическом программировании Peter Norvig имеют вдумчивое покрытие этой общей темы, хотя о 'динамических' языках вместо 'функционального' (существует перекрытие).
У Рика Стрела есть отличная статья о масштабах транзакций и LINQ to SQL здесь . Его контекст больше похож на LINQ to SQL, но я думаю, что есть несколько применимых принципов, которые могут помочь вам решить ваш вопрос.
EDIT: чтобы более конкретно ответить на ваш вопрос, вот что Strahl должен сказать о TransactionScope:
Традиционно TransactionScope был .NET-оболочкой для координатора распределенных транзакций (DTC), но его функциональность несколько расширилась. Одна из проблем заключается в том, что DTC довольно дорого обходится с точки зрения использования ресурсов и требует, чтобы служба DTC действительно работала на машине (еще одна служба, которая особенно неприятна при установке клиента).
Однако недавние обновления TransactionScope а драйверы клиента SQL Server позволяют использовать класс TransactionScope и обеспечивают простоту использования, не требуя DTC, если вы работаете с одной базой данных и с одной согласованной строкой подключения
Я без проблем использую TransactionScope уже более года. Однако приложение является внутренним приложением с очень небольшим количеством пользователей. Кроме того, база данных и приложение находятся на одном сервере.
Вот некоторая информация о TransactionScope и где искать дополнительную информацию: Всякий раз, когда вы создаете объект TransactionScope, он запускает легкую транзакцию. Затем, пока вы используете одно соединение / ресурс, который поддерживает легкие транзакции, транзакция будет обрабатываться менеджером ресурсов, потребляя как можно меньше ресурсов с очень хорошей производительностью. Когда вы добавляете второе соединение / ресурс в область транзакции, диспетчер транзакций будет автоматически повышен до диспетчера транзакций OleTx, который может обрабатывать распределенные транзакции с использованием технологий COM + DTC. Это также произойдет с одним подключением к диспетчеру ресурсов, который не поддерживает облегченные транзакции, такие как SQL Server 7/2000, Oracle и другие СУБД.
Вот два ресурса, которые могут вам помочь:
" Пакет обновления 1 (SP1) для Microsoft Windows Server 2003 и пакет обновления 2 (SP2) для Microsoft Windows XP включают множество обновлений и изменений, связанных с безопасностью. Некоторые из этих изменений затрагивают службу координатора распределенных транзакций Microsoft (MSDTC) ". Новые функции в службе координатора распределенных транзакций в Windows Server 2003 с пакетом обновления 1 и в Windows XP с пакетом обновления 2
и
технический документ Ювала Лоуи по System.Transactions: Знакомство с System.Transactions в Microsoft .NET Framework версии 2.0