如果在WEB服务中有这样一个场景,某个WEB服务的方法要执行两个任务,它首先要在数据库中创建一个新表,接着调用对象来收集和格式化数据,并在新表中插入数据。象这样的一组方法,我们必须保证他们都成功执行,否则会造成很多脏数据在系统中,这时事务就出场了。
关于事务的基本概念再次就不过多涉及,只需要记住它的四个属性ACID即可。
WEB服务中的事务是用WebMethod特性的TransactionOption属性来申明的。如果WEB服务方法执行时发生异常,则自动会终止事务,反之则提交事务。WEB服务的方法仅有两种可能的行为:Disabled,NotSupported,Supported表示不参与事务;Required,RequiresNew表示创建一个新的事务。意思是说当TransactionOption的属性为Required或RequiresNew的WEB服务方法调用另一个TransactionOption的属性为Required或RequiresNew的WEB服务方法时,每个WEB服务方法将参与他们自己的事务。
PS:WEB服务方法的TransactionOption默认属性为Disabled
同时我们也可以显示调用System.EnterpriseServices.ContextUtil类的SetAbort方法取消事务,调用SetCompleted方法完成事务。
例子:
using System.EnterpriseServices;
Class WebServiceTransaction:WebService
{
   pulic void Write(string user,string msg)
   {
     //将接收这两个参数写入数据库。。。
   }
   [WebMethod(TransactionOption=TransactionOption.RequiresNew)]
   public void WiteToDataBasev1(string user,string msg)
   {
      Write(user,msg);
      if(user!="kim")
      {
       string msg="sorry,you can not access";
        throw new UnauthorizedAccessException(msg);
      }
   }

[WebMethod(TransactionOption=TransactionOption.RequiresNew)]
   public void WiteToDataBaseV2(string user,string msg)
   {
      Write(user,msg);
      if(user!="kim")
      {
       ContextUtil.SetAbort();
      }
       else
      {
         ContextUtil.SetComplete();
      }
   }
}
测试和预期完全正确。

【转】[技术回顾系列]--WebService事务处理相关推荐

  1. [技术回顾系列]--认识WebService全貌

    我们为什么要使用WebService? 1:WebService的最大优点就是实现异构平台间的互通. 这也是使用WebService的主要原因之一.这样任何两个应用程序,只要他们能读写XML,就能相互 ...

  2. 技术回顾系列:最新最热门的技术大事-第一周

    技术回顾系列:最新最热门的技术大事-第一周 每一周我们都会回顾一下上周发生的有趣的事情,现在让我们来看看上周都发生了哪些事情吧: Apache Kafka 2.5.0发布了 Apache软件基金会在四 ...

  3. 我的技术回顾因ABP框架触发DevOps云原生之路-2020年

    我的技术回顾: 2015年:我的技术回顾那些与ABP框架有关的故事-2015年 2016年:从ABP框架国内社区发展回顾.NET技术变迁-2016年 2017年:我的技术回顾那些与ABP框架有关的故事 ...

  4. 我的技术回顾那些与ABP框架有关的故事-2018年

    我的技术回顾那些与ABP框架有关的故事-2018年 今天准备想写18年的,但是发现我从19年开始就在逐渐淡出社区,因为生活.工作的缘故吧.所以也没什么特别罗列的,就合并下吧. 时间真的是可以磨平太多东 ...

  5. 2021年度总结 | 葡萄城软件开发技术回顾(下)

    2021年度总结 | 葡萄城软件开发技术回顾(下) 在上节中,我们介绍了在过去一年中葡萄城在控件领域中的一些新探索,新尝试. (详细内容:https://www.cnblogs.com/powerto ...

  6. 2021年度总结 | 葡萄城软件开发技术回顾(上)

    2021年度总结 | 葡萄城软件开发技术回顾(上) 随着冬奥会各项精彩比赛的进行,2022年的序幕逐渐被拉开. 这一年,云原生领域风起云涌,容器大规模应用,k8s可称为炙手可热的话题:这一年,大数据技 ...

  7. ❤️Spark的关键技术回顾,持续更新!【推荐收藏加关注】❤️

    目录 前言 Spark的关键技术回顾 一.Spark复习题回顾 1.Spark使用的版本 2.Spark几种部署方式? 3.Spark的提交任务的方式? 4.使用Spark-shell的方式也可以交互 ...

  8. 全球AI技术开放日系列之(七):走进阿里业务中台

    主题: 全球AI技术开放日系列 7(杭州站): 走进阿里业务中台 - 探索阿里电商核心链路智能技术 时间: 9月1日 12:30-17:00 报名:点击阅读原文,半价早鸟票限时优惠 内容: 全球AI技 ...

  9. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

    原文:UWP 手绘视频创作工具技术分享系列 - 手绘视频导出 手绘视频最终的生成物是视频文件,前面几篇主要讲的是手绘视频的创作部分,今天讲一下手绘视频的导出问题.主要以 UWP 为例,另外会介绍一些 ...

最新文章

  1. Gartner:中国CIO们正将IT预算投向数字化
  2. 基于小波变换实现图像增强
  3. CentOs7下systemd管理知识要点
  4. OpenCV cv::reduce用法的实例(附完整代码)
  5. 一个Json在线格式化的网站
  6. tensorflow量化感知训练_tensorflow模型量化实例
  7. Android插件化开发之动态加载技术系列索引
  8. [国家集训队] 特技飞行
  9. 接口测试(apipost、jmeter和python脚本)
  10. S.Finance已上线收益稳定币UU
  11. 这些云计算网络安全知识,你不得不知
  12. 物联网技术如何驱动大数据
  13. WIN10家庭版+ANSYS/AUTODYN安装学习
  14. 5G NR MIB详解
  15. 任正非:管理上的灰色,是我们的生命之树
  16. Logcat的操作使用方法
  17. 如何用计算机学唱歌,男孩学唱歌教程 男生如何练习唱歌?
  18. Appium Android Bootstrap源码分析之简介
  19. 诺基亚将裁员万人 风雨飘摇中该何去何从
  20. CSDN积分怎么获取

热门文章

  1. 在工程中最常用的 vim使用技巧
  2. SRM 698 div1 RepeatString
  3. python函数-基础知识
  4. Spring Boot 系列(一)快速入门
  5. JS 判断手机操作系统代码
  6. shell总结(0基础入门)
  7. DP问题之 捞鱼问题
  8. 动态规划——背包问题升级
  9. [BUGKU][CTF][PWN][2020] PWN writeup
  10. disperse函数 C语言,武汉工业学院电气1006班C语言测试题.doc