CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  Web Services

谁帮我解释一下Web Service中的事务该如何理解?-100分

楼主LineCorner()2004-08-02 14:48:01 在 .NET技术 / Web Services 提问

按50,40,30,20,10依次得分 问题点数:100、回复次数:13Top

1 楼qqqdong()回复于 2004-08-02 17:26:10 得分 5

两阶段式事务Top

2 楼bizbuy(也曾风流)回复于 2004-08-02 21:40:46 得分 0

gzTop

3 楼huangsuipeng(hsp|I love foxpig)回复于 2004-08-02 22:24:31 得分 0

所有涉及到的WEB调用COMMIT才COMMITTop

4 楼qqqdong()回复于 2004-08-02 23:59:20 得分 5

[WebMethod(TransactionOption=TransactionOption.Required)]  
  public   void   InfoNew(.....)  
  {  
      try  
      {  
          ContextUtil.EnableCommit();  
          //写数据库的dll调用  
          ContextUtil.SetComplete();  
      }  
      catch   (   Exception   error   )  
      {  
          ContextUtil.SetAbort();  
          //处理错误  
      }  
  }  
  Top

5 楼jeng(乐去)回复于 2004-08-03 00:28:13 得分 0

kanTop

6 楼LineCorner()回复于 2004-08-03 08:31:41 得分 0

qqqdong()   :  
  为何要多加上这种事务?用Transaction不就可以了吗?Top

7 楼liuspcn(青竹)回复于 2004-08-04 23:44:09 得分 0

收藏Top

8 楼webcool(浪滔天.NET)回复于 2004-08-05 12:30:59 得分 0

■■■高速稳定ASP.NET虚拟主机网站空间SQLSERVER数据库4折优惠酬宾   ■■■  
   
  ■大海网络软件有限公司(www.dahai.net)是国内最早提供ASP.NET虚拟主机的服务商之一。  
  至今大海网络积累了大量的客户,服务成本直线下降。为此公司决定对目前所有产品实现降价销售。  
  ========================================================================  
  ■虚拟主机(HTM,ASP,ASP.NET)和数据库产品(SQLSERVER)优惠幅度达4折  
  ========================================================================  
  HTML-A(100M   HTML   空间;赠送25M电子邮件;)                           价格:72元  
  HTML-B(200M   HTML   空间;赠送50M电子邮件;)                           价格:112元  
  HTML-C(400M   HTML   空间;赠送100M电子邮件;)                         价格:192元  
  HTML-D(800M   HTML   空间;赠送200M电子邮件;)                         价格:272元  
  HTML-E(50M   HTML   空间;赠送5M电子邮件;)                               价格:65元  
  ========================================================================  
  ASP-A(100M   ASP   空间;赠送25M电子邮件;)                               价格:96元  
  ASP-B(200M   ASP   空间;赠送50M电子邮件;)                               价格:136元  
  ASP-C(400M   ASP   空间;赠送100M电子邮件;)                             价格:216元  
  ASP-D(800M   ASP   空间;赠送200M电子邮件;)                             价格:376元  
  ASP-E(50M   ASP   空间;赠送5M电子邮件;)                                   价格:86元  
  ========================================================================  
  ASP.NET-A(100M   ASP.NET   空间;赠送25M电子邮件;)               价格:112元  
  ASP.NET-B(200M   ASP.NET   空间;赠送50M电子邮件;)               价格:192元  
  ASP.NET-C(400M   ASP.NET   空间;赠送100M电子邮件;)             价格:328元  
  ASP.NET-D(800M   ASP.NET   空间;赠送200M电子邮件;)             价格:432元  
  ========================================================================  
  SQL-A(50M   SQL   Server   数据库空间;)                                         价格:112元  
  SQL-B(100M   SQL   Server   数据库空间;)                                       价格:192元  
  SQL-C(200M   SQL   Server   数据库空间;)                                       价格:328元  
  SQL-D(400M   SQL   Server   数据库空间;)                                       价格:432元  
  ========================================================================  
  MAIL-A(25M   企业域名   电子邮件;)                                               价格:15元  
  MAIL-B(50M   企业域名   电子邮件;)                                               价格:25元  
  MAIL-C(100M   企业域名   电子邮件;)                                             价格:50元  
  MAIL-D(250M   企业域名   电子邮件;)                                             价格:125元  
  MAIL-E(500M   企业域名   电子邮件;)                                             价格:250元  
  MAIL-F(1000M   企业域名   电子邮件;)                                           价格:500元  
  ========================================================================  
  ■域名注册(国内国际)和网站推广产品(搜狐,新浪,网易,Google)优惠如下  
  ========================================================================  
  英文国际顶级域名(.com/.net/.org)                                             价格:58元  
  英文国内域名(.cn/.com.cn/.net.cn/.org.cn)                           价格:98元  
  .biz/.info国际英文域名                                                                     价格:105元  
  ========================================================================  
  通用网址                                                                                                 价格:300元  
  新浪快速登录                                                                                         价格:300元  
  新浪搜索固定型及推广型登录                                                             价格:6折  
  搜狐普通型登录                                                                                     价格:216元  
  搜狐搜索固定型及推广型登录                                                             价格:6折  
  网易搜索经济型服务                                                                             价格:300元  
  网易搜索超值型服务                                                                             价格:1500元  
  Google右侧排名(包年或包月)                                                         价格:7折  
  新浪竞价排名                                                                                         价格:8折  
  搜狐竞价广告                                                                                         价格:72折  
  网易竞价广告                                                                                         价格:55折  
  雅虎中国搜索排名                                                                                 价格:75折  
  ========================================================================  
  ■联系大海网络(www.dahai.net)软件有限公司  
  ========================================================================  
  公司网址:http://www.dahai.net/  
  联系人:张先生(13179682338),孙先生  
  电话:0510-8821881,3732767  
  传真:0510-3732767  
  在线销售:QQ:3712846,MSN:webcool@dahai.net  
  支付账号:http://www.dahai.net/pay.aspx  
  ========================================================================  
  ■我们秉承“一点一滴   乃成大海”的理念服务客户Top

9 楼ddggggdd(西红柿炖牛肉)回复于 2004-08-05 13:45:54 得分 20

webservice对于跨数据库事务是不支持的,所以要用到com+的事务,因为webservice提供的是方法Top

10 楼rottenapple(伪程序员)回复于 2004-08-06 17:46:00 得分 30

一两句话说不清楚,看看这篇文章先  
  http://www-900.ibm.com/developerWorks/cn/webservices/ws-transpec/index.shtmlTop

11 楼fun1984(funy)回复于 2004-08-06 20:23:51 得分 40

给你一个认为比较经典的web   service的处理事务的sample  
   
  注意要添加引用:using   System.EnterpriseService;  
  [WebMethod(TransactionOption=TransactionOption.RequiresNew)]  
  //webmethod的这个属性表示在每次调用时是新建一个支持事务的调用  
  public   string   TransferMoneyFromBToA(double   m){  
      try  
      {  
          ContextUtil.EnableCommit();  
          this.TransferOutFromB(m);  
          this.TransferInToA(m);  
          ContextUtil.SetComplete();  
          return   "Transfer   Succeed!";  
      }  
      catch(Exception   err)  
    {  
      ContextUtil.SetAbort();//终止事务  
      return   "Transfer   Failed--"+err.Message;  
      }  
  }  
   
  public   string   TransferOutFromB(double   m)  
  {  
  SqlConnection   con   =   new   SqlConnection("...");  
  con.Open();  
  SqlCommand   com   =   new   SqlCommand("update   mytable   set   budget=budget-"+m.ToString()+"   where   username   =   'B'",con);  
  com.ExecuteNonQuery();  
  }  
  public   string   TransferInToA(double   m)  
  {  
  SqlConnection   con   =   new   SqlConnection("server:local;");  
  SqlCommand   com   =   new   SqlCommand("update   mytable   set   budget=budget+"+m.ToString()+"   where   username   =   'A'",con);  
  com.ExecuteNonQuery();  
  }  
  mytable表的结构简单为  
  username   budget  
      A                 5000  
      B                 5000  
  该web   service实现了事务的典型----银行转帐Top

12 楼fun1984(funy)回复于 2004-08-09 02:31:53 得分 0

Web   Service中的事务:  
  1.处理数据库的,还是可以把业务逻辑写成存储过程,实现事务处理  
      sample:(两个delete是一个事务),缺点是依赖于数据库类型,更改数据库类型后需要重写  
      BEGIN   TRANS  
      DECLARE   @orderDetailsError   int,@productError   int  
      DELETE   FROM   "Order   Details"   WHERE   ProductID=42  
      SELECT   @orderDetailsError     =   @@ERROR  
      DELETE   FROM   Products   WHERE   ProductID=42  
      SLECT   @productError   =   @@ERROR  
      IF   @orderDetailsError   =   0   AND   @productError   =   0  
      COMMIT   TRANS  
      ELSE    
      ROLLBACK   TRANS    
  2.使用ADO.NET处理事务,缺点是不能跨越多个数据库连接  
      conn.Open();//打开一个数据库的连接  
      SqlTransaction   trans   =   conn.BeginTransacTion();  
      SqlCommand   cmd   =   new   SqlCommand();  
      cmd.Connection   =   conn;  
      cmd.Transaction   =   trans;  
      try{  
        cmd.CommandText   =   "DELETE   FROM   "Order   Details"   WHERE   ProductID=42";  
        cmd.ExecuteNonQuery();  
        cmd.CommandText   =   "DELETE   FROM   Products   WHERE   ProductID=42";  
        cmd.ExecuteNonQuery();  
        trans.Commit();  
  }  
  catch  
  {  
  trans.Rollback();  
  }  
  finally  
  {  
  conn.Close();  
  }  
  3.最好的方法:COM+事务(分布式事务),几乎没有缺点  
  我上面给出的例子是手动事务,还有自动事务:  
  [Transaction(TransactionOption.Required)]    
      public   class   Class1   :   ServicedComponent   {    
        [AutoComplete]    
        public   void   Example1()    
      {    
        …    
        }    
      }    
  他不需要你给出他什么时候提交[ContextUtil.SetComplete();],什么时候回滚[ContextUtil.SetAbort();],完全自动将函数中的处理作为事务对待.  
  第三种COM+事务处理机制可以在服务器上的控制面板--管理工具--组件服务找到每一次执行的日志(分布式处理协调器),值得研究.  
   
  Top

13 楼LineCorner()回复于 2004-08-10 15:07:45 得分 0

有些了解了谢谢!Top

相关问题

  • 能解释一下自治事务吗
  • AD转换原理解释?
  • ==请教三层中的事务的解释!==
  • 不太理解sqlDataAdapter,请解释一下
  • InvokeMember不理解?谁能解释一下
  • 棠下办证的合理解释
  • 何为“事务处理”?该怎样理解?盼赐教!
  • 问一个关于事务的问题,不是很理解
  • 实在是不能理解,谁能帮我解释解释!
  • 请教 web services上的事务问题

关键词

  • .net
  • asp.net
  • 电子邮件
  • 域名
  • 数据库
  • 虚拟主机
  • 企业
  • asp
  • html
  • sql

得分解答快速导航

  • 帖主:LineCorner
  • qqqdong
  • qqqdong
  • ddggggdd
  • rottenapple
  • fun1984

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo