• 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
  • 相关阅读:
    均值回归理论,均值回归法则是指万物最终都将回归于其长期的均值
    文本框仅允许输入大于0的正整数
    Angularjs接收服务端的布尔值
    Ajax POST单个对象或多个对象至API
    ASP.NET MVC程序重构
    查询数据库创建时间
    查询MS SQL的版本号
    获取Data和Log默认路径
    快速查找对象
    表关联使用INNER JOIN实现更新功能
  • 原文地址:https://www.cnblogs.com/king_astar/p/527841.html
Copyright © 2020-2023  润新知