【问题标题】:How can implement Two-Phase commit with web application in ASP.NET?如何在 ASP.NET 中使用 Web 应用程序实现两阶段提交?
【发布时间】:2014-06-06 18:50:30
【问题描述】:

我想在我的项目中添加两阶段提交功能。我在谷歌上搜索了两阶段提交并理解了这个概念但无法理解如何实现它。所以请解释一下如何在我的项目中实现它或建议我任何解释流程如何实现它的链接。我已经使用 MVC Web 应用程序在 ASP.NET 中开发了该项目。

提前致谢。

【问题讨论】:

  • 2PC ...之间是什么?两个数据库?一个网络服务和一个数据库?

标签: c# asp.net sql-server asp.net-mvc sql-server-2012


【解决方案1】:

您可以使用 System.Transactions 程序集中的TransactionScope 类。

基本上,您可以定义一个涉及一个或多个资源(数据库、事务感知 WCF 服务,...)的事务,框架会处理其余的事情。这可能意味着什么都不做(即数据库可以处理整个事务)或在需要时升级为 DTC 事务。

这是一篇解释 TransactionScope 的好文章

http://www.codeproject.com/Articles/690136/All-About-TransactionScope

try
{
    using (var db1 = new SqlConnection(connectionString1))
    {
        // use the resource
    }

    using (var db2 = new SqlConnection(connectionString2))
    {
        // use the resource
    }

    // you can use other resources...

    // Don't forget this
    t.Complete();
}
catch (Exception ex)
{
    // handle the error. No need to rollback
}
}

【讨论】:

  • 它与Oracle两阶段提交机制不同还是相同,因为我想像它一样实现。真的我完全糊涂了。
  • 不是 Oracle 专家,但我认为是一样的。你不必实现它,它是事务协调器的工作。
  • 如果我们看上面的例子,如果我增加了一台服务器,那么我需要在 app.config 中再定义一个连接字符串。看看这个链接docs.oracle.com/cd/B28359_01/server.111/b28310/…,让我知道两者都是一样的。
  • 是的,它们看起来一样
  • 感谢您宝贵的重播。我可以用上面的代码开始实现还是有其他方法。
猜你喜欢
  • 1970-01-01
  • 2018-11-01
  • 2013-03-03
  • 2011-04-19
  • 2017-11-24
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2011-11-15
相关资源
最近更新 更多