1. 引用一下别人的导读:
    在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,
    我们所希望的是能够在整个这个方法定义为一个事务,TransactionScope 类提供一个简单方法,通过这一方法,您不必与事务本身交互,
    即可将代码块标记为参与某个事务。TransactionScope对象创建了一个事务,同时将该事务设置给Transaction类的Current属性。
  2.  
  3. 一、TransactionScope的优点
  4. 、使用起来比较方便.TransactionScope可以实现隐式的事务,使你可以在写数据访问层代码的时候不用考虑到事务,而在业务层的控制事务.
  5. 、可以实现分布式事务,比如跨库或MSMQ.
  6.  
  7. 二、TransactionScope缺点
  8. 、性价比不高.比如,你只是在"Scope"里控制一个库的事务.用"TransactionScope"就有点浪费了.
  9. 、一般情况下只要你使用"TransactionScope",都要配置MSDTC,要配防火墙,要开139端口.这个端口不可以更改
  10.  
  11. 三、如果你不得不用分布式事务,那也得琢磨琢磨
  12. .这步操作一定得在事务当中吗?这步操作如果没完成或者失败了,值得回滚整个事务吗?难道没有优雅的补偿措施或者容错措施?
  13. .分布式事务涉及到的点,必须的这么多?必须得实时的操作这一大串?不能通过通知类操作去精简掉某些点?
  14. .在发起分布式事务之后,你是不是做了事务无关的操作,尽管这些操作跟事务无关?(如,读取数据、计算、等用户返回消息、等其他模块的调用返回等等)要知道事务应该尽快结束。
  15. .你没有把一些读操作也算在事务里面了吧?这是很容易犯的错误,你在事务中Enlist了一个select 操作。
  16. .你的操作,某些步骤可以等全部操作完成之后再执行.这类操作具有明显的通知类特点。通知类操作是说,我给你一个通知,并且我保证通知到了你;
    你必须吃下这个通知,并且保证处理成功,但是你不必我一通知你你就处理。这样的操作很明显可以用另外一个任务去搞。
  17.  
  18. 四、使用分布式事务注意如下几点
  19. :确保参与事务的machine开启了分布式事务支持;
  20. :如果machine开启了防火墙,需要设置msdtc进程为例外;
  21. :参与事务的machine不能跨域(如果跨域,目前微软还没有确切的解决方案);
  22. :多数据库时才使用分布式事务,如果是同一个数据库,最好使用SqlTransaction.

1、先添加System.Transactions的引用(需要添加Net程序集)

C#调用时的代码如下:

对此分布式事务类讲解的很清晰的blogs地址:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html

  1. using System.Transactions;
  2. using (TransactionScope scope = new TransactionScope())
  3. {
  4. //trancation one do something...
  5. var dbo1 = DBFactory.GetDBFacade(DBConnectionStringName.YSL_BusinessTravelTrade_ReadWrite);
  6. string sql1 = "UPDATE dbo.TestUser SET name='ccc' WHERE id = 2";
  7. dbo1.ExecuteNonQuery(CommandType.Text, sql1);
  8. //trancation two do something...
  9. var dbo = DBFactory.GetDBFacade(DBConnectionStringName.YSL_BusinessTravel_ReadWrite);
  10. string sql = "UPDATE dbo.TestUser SET name='ccc' WHERE id = 2";
  11. dbo.ExecuteNonQuery(CommandType.Text, sql);
  12. //submit
  13. scope.Complete();
  14. }

2、设置web服务器及sql服务器环境配置

  1. 控制面板->系统和安全->管理工具->组件服务
    WEB服务器和SQL服务器都需要配置此项)

  1. 控制面板->系统和安全->管理工具->服务
    WEB服务器和SQL服务器都需要配置此项)

  1. 控制面板->系统和安全->Windows防火墙
    WEB服务器和SQL服务器都需要配置此项)

3、MSSQL配置

  1. 对服务器连接,右键->属性

4、配置Hosts(只配置WEB服务器即可,如果不行,在SQL服务器上也配置上)

  1. C:\Windows\System32\drivers\etc
  2. hosts文件,用记事本打开
    (在WEB服务器上的Hosts文件中需要配置SQL服务器的信息)
    (如果测试通不过,在SQL服务器上的Hosts文件中配置上WEB服务器的信息)

C#分布式事务解决方案-TransactionScope的更多相关文章

  1. C#分布式事务解决方案-TransactionScope(转)

    出处:C#分布式事务解决方案-TransactionScope 引用一下别人的导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我 ...

  2. 基于支付系统真实场景的分布式事务解决方案效果演示: http://www.iqiyi.com/w_19rsveqlhh.html

    基于支付系统真实场景的分布式事务解决方案效果演示:http://www.iqiyi.com/w_19rsveqlhh.html

  3. 阿里开源分布式事务解决方案 Fescar

    微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并 ...

  4. 阿里微服务架构下分布式事务解决方案-GTS

    虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段.即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例.GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题的中间件 ...

  5. 分布式事务解决方案FESCAR

    项目地址:FESCAR 以下是官网的文档.简介2019年,Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1. ...

  6. 阿里分布式事务解决方案-GTS

    摘要: 本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿里巴巴提出的分布式事务解决方案----GTS.该方案中提到的GTS是全新一代解决微服务问题的分布式事务互联网中间件 ...

  7. 微服务架构下分布式事务解决方案——阿里GTS

    1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务 ...

  8. 分布式事务解决方案以及 .Net Core 下的实现(上)

    数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性.但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题.最近在研究分布式事物,分布式的解决方案有很 ...

  9. 来了!阿里开源分布式事务解决方案 Fescar

    摘要: 阿里妹导读:广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为“Fescar”,希望帮助业界解决微服务架构下的分布式事 ...

随机推荐

  1. Gvim安装nerd_tree插件

    1.先去官网下载nerd_tree插件 http://www.vim.org/scripts/script.php?script_id=1658 2.解压缩将nerd_tree目录下的doc目录和pl ...

  2. IT团队之非正式沟通

      沟通能力是一种能证明和让对方发现你具有社会工作能力的能力.从表面上看来,它只是一种能说会道的能力,可实际上它却包罗了一个人从穿衣打扮到言谈举止等一切行为的能力.   从大体上,我将沟通分为正式沟通 ...

  3. zookeeper原理介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt354 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它 ...

  4. 从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上

    http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0 这是一个接口,通过这个接口来获取数据并解析 大体上就是把解析的数据还有图片u ...

  5. asp.net core 2.0 web api基于JWT自定义策略授权

    JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...

  6. 【ctrl+A】与【ctrl+单击图层缩略图】有什么区别?

    如果这图层没有透明区域的话那和ctrl+A的效果是一样的! 但如果图层有不透明区域,那选中的就是图层中所有不透明的区域!

  7. java记事本1.2版

    功能:实现了新建,打开,保存,退出,复制,剪切,粘贴等功能 效果图:

  8. 201521123014 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 有关继承的知识点 1.2 使用常规方法总结其他上课内容 多态性 相同的形态,不同的行为 例子: public class Manager extends Employee{ ...

  9. 201521123113 《Java程序设计》第4周学习总结

    1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 设计类的技巧:类名和方法名要能够体现他们的职责,类名首字母要大写 如何识别一个类 方法.属性的 ...

  10. 201521123065《java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.多线程的临界资源:启动多个线程同时运行时,需要同时访问共同的资源,导致结果的不正确性: 2.原子性操作:只进行 ...