gpt4 book ai didi

.net - TransactionScope 与 IDbTransaction

转载 作者:太空狗 更新时间:2023-10-30 01:42:50 25 4
gpt4 key购买 nike

与 IDbTransaction 相比,使用 TransactionScope 有哪些优点/缺点?我会建议一些 - 请更正/完成列表。

TransactionScope 的优势:

  1. TransactionScope 支持分布式事务 - 您可以访问多个数据源或在一个事务中使用多个连接到一个数据源。
  2. TransactionScope 更具声明性:我们可以嵌套 TransactionScopes,在服务层使用它会更愉快(我们不必自己处理 IDbConnection 和 IDbTransaction)。
  3. 我不确定第三点,但就是它了。 IDbTransaction 特定于连接 - 您必须在整个事务期间保持连接打开。我不确定在整个 TransactionScope 期间是否应该打开连接/连接(请澄清)。如果没有,可以采用以下工作流程:启动事务,打开连接-查询-检索-关闭连接,执行资源密集型计算(保持连接关闭),打开连接-查询-检索-关闭连接,...,提交事务。但我想 TransactionScope 不可能在提交之前保持连接打开。

TransactionScope 的缺点:

  1. 不支持在交易过程中改变IsolationLevel。

最佳答案

方便很重要 - 特别是因为它可用于包装您无法控制的代码(因为默认情况下,您包装的代码会自动登记).这意味着您可以包装使用服务器的预先存在的库

性能受到轻微的影响,但请注意,在许多情况下,您将使用轻量级事务管理器,而不是 DTC - 这意味着您无需支付全部 DTC 费用。

另一个缺点是嵌套事务无法回滚; 任何回滚立即回滚外部事务。我个人喜欢这种方法;如果情况恶化 - 尽快停止。

重新查询第 3 点;您可以在事务范围内打开/关闭任意数量的连接,而不会影响行为,除了您可能会发现(视情况而定)您的事务提升为 DTC。如果您与多个交易感知服务器交谈,它几乎可以保证提升。

另一个区别:适用不同的超时,尤其是涉及 DTC 时。这是有道理的:长时间运行的分布式事务是有毒的,可能表示跨服务器死锁。死锁通常在单个服务器上检测到,但在分布式服务器上几乎不可能自动发现,因此硬超时至关重要。

关于.net - TransactionScope 与 IDbTransaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com