WebService事务处理

如果在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();
      }
   }
}
测试和预期完全正确。

转载于:https://www.cnblogs.com/soundcode/archive/2011/05/25/2056864.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的新书,《人人都是产品经理》自序

是谁?每次K歌 都对着点歌面板评头论足。 是谁?逛超市时总在想“这个商品能解决什么需 求?”。 是谁?会给自己的个人发展做战略规划。 是谁?一定要在自己的婚礼中讲一个PPT。 是谁?会拿用户调研的方法与亲朋…

记一次 .NET 某新能源汽车锂电池检测程序 UI挂死分析

一:背景 1. 讲故事这世间事说来也奇怪,近两个月有三位朋友找到我,让我帮忙分析下他的程序hangon现象,这三个dump分别涉及:医疗,新能源,POS系统。截图如下:那这篇为什么要拿其中的 新…

C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令

如果下载多个文件的时候,有时候莫名其妙的出现500服务器错误,很有可能是没有设置KeepAlive 属性导致的。 出现应用程序未处理的异常:2015/1/6 11:40:56 异常类型:WebException 异常消息:远程服务器返回错误: (500) 语法…

树莓派能直接运行python程序_树莓派怎么运行python程序

树莓派运行Python程序的方法:一、RaspBerry系统设置1、首先在开发板没有通电情况下,连接硬件,以及项目中用到传感器。比如当前项目需要将LED灯插在面包板上,然后通过杜邦线将开发板和面包板连接,硬件平台搭建完毕。2、…

这个女生躲在衣柜等男友回家,结果竟是......

1 不要什么都怪爸爸我妈明明也是这样帮我脱的▼2 这就是现实版大女主反杀女二的故事啊▼3 我猜到了开头却没有猜到结尾▼4 ???一定是我被饿出了幻觉▼5 小小的孩子在极短的时间内经历了人生的大戏和大悲▼6 这个令人羡慕的发量啊&#…

mysql savepoint作用_savepoint原理

保存点在MySQL中, 保存点SAVEPOINT属于事务控制处理部分。利用SAVEPOINT可以回滚指定部分事务,从而使事务处理更加灵活和精细。SAVEPOINT相关的SQL语句如下SAVEPOINT identifier设置SAVEPOINT。如果重复设置同名savepoint,新的会覆盖老的.RELEASE SAVEPOINT identif…

路由器笔记 CCNA

配置路由器应用性<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1配置端口1&#xff09; 配置局域网端口&#xff1a;进入&#xff08;config-if&#xff09;#模式 配置ip地址和掩码 &#xff08;config-if&#xff09;#ip a…

如何实现对象的深copy?

咨询区 NakedBrunch&#xff1a;我的项目中有一个对象copy的需求&#xff0c;比如下面这段代码&#xff1a;MyObject myObj GetMyObj(); // Create and fill a new object MyObject newObj myObj.Clone();这段代码有一点问题&#xff0c;那就是对 newobj 进行的任何修改都会作…

跨服务器查询

在执行跨服务器查询之前&#xff0c;运行 exec sp_configure show advanced options,1 reconfigure exec sp_configure Ad Hoc Distributed Queries,1 reconfigure 查询结束后&#xff0c;运行 exec sp_configure Ad Hoc Distributed Queries,0 reconfigure exec sp_configure…

图片裁剪和异步上传插件--一步到位(记录)

图片上传裁剪这功能随处可见&#xff0c;有的自己写&#xff0c;不过太耗费时间了&#xff0c;插件的话感觉好多&#xff0c;前段时间就想挑一款好的插件&#xff0c;以后就用那款&#xff0c;可是挑了几款插件用上去&#xff0c;效果很好&#xff0c;问题就出在合并了&#xf…

git checkout 单个文件_git 如何回退单个文件

1.进入到文件所在文件目录&#xff0c;或者能找到文件的路径查看文件的修改记录git log fileName结果&#xff1a;如果文件修改记录太多&#xff0c;则使用git log -number fileName结果&#xff1a;2.回退到指定版本git reset ** fileName1.git reset -mixed&#xff1a;此为默…

未来十年最吃香专业大盘点,有你的吗?

全世界只有3.14 % 的人关注了爆炸吧知识这个世界上理工科到底有多吃香&#xff1f;如果你是理工男/女&#xff0c;先恭喜一下你&#xff0c;不知道喜从何来&#xff1f;不妨先来看这几组数据&#xff1a;高薪职业平均薪资一览表薪资最高的专业前20名这并不只是中国的情况&#…

mysql挂载到iscsi_corosync+pacemaker+iscsi磁盘实现mysql高可用

实验用主机&#xff1a;提供iscsi磁盘:172.16.103.1,提供iscsi磁盘高可用主机:172.16.103.2&#xff0c;172.16.103.3实验拓扑&#xff1a;实验步骤&#xff1a;一、配置172.16.103.1&#xff0c;输出iscsi磁盘&#xff0c;创建的磁盘分区为/dev/sda3&#xff0c;在实际的使用环…

一种在未来互联网中的面向用户的云操作系统体系

本文描述了一个欲将整个网络当做计算机使用&#xff0c;可以极大增强云计算应用能力和提高用户体验的一个类操作系统体系结构。望有识之士能做下去。 价值1&#xff09;用户的痛苦在哪里&#xff1f;对于终端用户&#xff0c;他们的痛苦在于使用Web应用不方便&#xff0c;可以使…

提高「搜商」,挣大钱

大家好&#xff0c;我是Z哥。在之前的一篇讲述数据分析的文章《这个时代最重要的技能之一》中提到了这周要和大家聊聊「搜商」的事情。搜商这个词诞生于互联网时代&#xff0c;体现的是一个人利用搜索引擎查找自己所需信息的能力。我觉得在当下这个时代&#xff0c;搜商的重要性…

idea 配置jdk版本_JDK 11 安装过程(同时已安装了JDK 8)以及Intellij IDEA 配置

电脑上已经安装过 JDK 8 版本(C:Javajdk1.8.0_111)。安装好 JDK 11 版本(C:Program FilesJavajdk-11.0.2)之后&#xff0c;目录如下&#xff0c;分别有&#xff1a;安装过程&#xff1a;1. 开始安装 JDK 11&#xff1b;2. 完成安装JDK 11&#xff1b;配置过程&#xff1a;1. 将…

生活随笔:大学需要确立自己的方向

在广大的四年期间&#xff0c;大部分时间都是探索阶段&#xff0c;在那个时候没有师兄帮忙&#xff0c;也没有多少认识带自己入行的人&#xff0c;因为所学的flash都是很冷门。碰了不少钉子之后&#xff0c;发现入行并不容易。每一次面试回来&#xff0c;都是带着伤痕累累回来&…

老师,你和我的文具撞衫了!

全世界只有3.14 % 的人关注了爆炸吧知识来看越南学生拍摄的一组图&#xff0c;主题是老师和文具“撞衫”&#xff01;老师你和我的胶水撞了&#xff01;老师你和我的笔袋撞了&#xff01;老师你和我的手机壳撞了&#xff01;这个铅笔和老师好像啊书皮和老师很像老师今天穿得像面…

中小企业SaaS型软件BI的发展前景

2019独角兽企业重金招聘Python工程师标准>>> 传统企业在实施信息化的过程中&#xff0c;往往遵循着先用ERP把物料管起来&#xff0c;然后再CRM把客户关系管理起来&#xff0c;之后是财务系统&#xff0c;最后才会在数据的压力之下&#xff0c;实 施BI。那么&#xf…

mysql安装配置yum_在CentOS 7下使用yum配置MySQL源并安装MySQL

centos7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是centos7的yum源中默认好像是没有mysql的。为了解决这个问题&#xff0c;我们要先下载mysql的repo源。1.由于centos 的yum源中没有mysql&#xff0c;需要到mysql的官网下载yum repo配置文件。wget http://de…