zoukankan      html  css  js  c++  java
  • Hello Transaction,事务.

    Dot net 2.0新增了事务空间
    System.Transactions

    最先了解事务是在MSSQL中.
    通常处理多个SQL语句,为了保证全部完成,采用事务运行的方式.
    运用SQL的事务处理,如果出现错误,事务回滚,恢复到原来状态(Failure Recovery).

    现在微软提供这么一个空间帮助我们更简单的,更有效率的建立我们的事务程序.

    那么什么是事务呢?
    比如:
    我先导入一条数据,接着发送一封邮件给其他人.
    这样分解开来:
    1.导入数据
    2.发送邮件.

    那么我申明一个事务范围:
     using (TransactionScope scope = new TransactionScope())
                
    {
                    
    try
                    
    {
                        
    //some code to do something
    sql.add();
    mail.send();
                    }

                    
    catch (Exception ex)
                    
    {
                        
                       
    //
                    }

                   scope.Complete();


                }
    这样,当所有的事务范围类的动作全部正确完成,则事务全部完成,否则,所有动作进行回滚.

    这样好像给我们一个错觉,什么动作都可以放在事务中么?出错都会回滚么?
    不是这样的,必须由资源控制器来完成状态记录和出错后的状态恢复.
    在这个例子中:
    MSSQL就是资源控制者(Resource Manager),邮件服务器则是另一个Resource Manager.

    实际上邮件本身是不支持事务,因此要定义它的Resource Manager,怎么做它的失败恢复呢?
    发了错误的邮件,那么只有再发一封邮件来说前一封是错误的,再把正确的信息发出去.



    至于,Resource Manager是如何跟Resouce 关联上来的,我还没有搞清楚.

    注意的是需要添加System.Transactions.dll才会出现新的命名空间.
    操作系统平台需要windows 2000以上支持.

    阅读文章:
    Transaction 概要
    http://msdn2.microsoft.com/en-us/library/system.transactions.aspx
    完成一个资源控制器
    http://msdn2.microsoft.com/en-us/library/ms229975.aspx
    使用事务范围完成一个隐含的事务
    http://msdn2.microsoft.com/en-us/library/ms172152.aspx
  • 相关阅读:
    读书笔记之复盘
    读书笔记之大话设计模式
    代码重构之重命名
    代码重构之下降方法
    代码重构之提升方法
    代码重构之移动方法
    代码重构之封装集合
    JSON之实体对象转JSON字符串,字段名全部转为小写
    SQL代码之多组织数据汇总成树形表格展示
    Python socket学习笔记(三)
  • 原文地址:https://www.cnblogs.com/king_astar/p/527841.html
Copyright © 2011-2022 走看看