知识大全 ASP.NET创建Web服务之使用事务

Posted

篇首语:好好学习,天天向上。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET创建Web服务之使用事务相关的知识,希望对你有一定的参考价值。

ASP.NET创建Web服务之使用事务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  支持XML Web服务的事务利用公共语言运行期中的支持 其是基于Microsoft Transaction Server ( MTS)和+ Services中相同的分布式事务模型 该模型基于明确的判断一个对象是否参与一个事务 而不是编写特定的代码用来处理委托和回调一个事务 对于一个使用ASP NET创建的XML Web服务 你可以通过设置其应用到一个XML Web服务方法上的WebMethod属性的TransactionOption属性来声明一个XML Web服务的事务行为 如果该XML Web服务方法执行的时候抛出一个异常 那么该事务自动地结束 相反 如果没有发生异常 该事务自动委托

  WebMethod属性的TransactionOption属性规定一个XML Web服务方法如何参与一个事务 虽然这个声明级别表示一个事务逻辑 但是它是消除实际事务的一个步骤 当事物对象访问数据源(如数据库或消息队列)时实际事务产生 关联该对象的事务自动流向适当的资源管理程序 像 NET Framework Data Provider(用于SQL Server或OLE DB)这样的 NET Framework数据提供者在对象的上下文中查找事务并通过Distributed Transaction Coordinator (DTC 分布式事务协调程序)编目事务 全部的事务自动产生

  XML Web服务方法只能参与一个作为新事务的根的事务 作为一个新事务的根 所有的与资源管理器(像运行Microsoft SQL Server Microsoft Message Queuing和Microsoft Host Integration Server的服务器)的相互作用维护需要运行健壮的分布式应用程序的ACID性质 调用其他的XML Web服务方法的XML Web服务方法参与不同的事务 因为事务不流经XML Web服务方法

  使用来自XML Web服务方法的事务 声明一个XML Web服务   [C#]  <%@ WebService Language= C# Class= Orders %>  [Visual Basic]  <%@ WebService Language= VB Class= Orders %>

  把一个汇编指令加到System EnterpriseServices上   <%@ Assembly name= System EnterpriseServices Version= Culture=neutral PublicKeyToken=b f f f d a a %>

  添加引用到System Web Services和System EnterpriseServices域名空间   [C#]  using System Web Services;  using System EnterpriseServices;  [Visual Basic]  Imports System Web Services  Imports System EnterpriseServices

  声明一个XML Web服务方法 设置WebMethod属性的TransactionOption属性为TransactionOption RequiresNew   [C#]  [ WebMethod(TransactionOption=TransactionOption RequiresNew)]  public int DeleteAuthor(string lastName)   [Visual Basic]  < WebMethod(TransactionOption:=TransactionOption RequiresNew)> _  Public Function DeleteAuthor(lastName As String) As Integer

  下面的代码示例显示一个使用单个XML Web服务方法的XML Web服务 调用DeleteDatabase 这个XML Web服务方法执行一个事务范围内的数据库操作 如果该数据库操作抛出一个异常 该事务自动地停止 否则 该事务自动地委托

  [C#]  <%@ WebService Language= C# Class= Orders %>  <%@ Assembly name= System EnterpriseServices Version= Culture=neutral PublicKeyToken=b f f f d a a %>   using System;  using System Data;  using System Data SqlClient;  using System Web Services;  using System EnterpriseServices;

  public class Orders : WebService    [ WebMethod(TransactionOption=TransactionOption RequiresNew)]  public int DeleteAuthor(string lastName)     String deleteCmd = DELETE FROM authors WHERE au_lname= +   lastName + ;  String exceptionCausingCmdSQL = DELETE FROM NonExistingTable WHERE  au_lname= + lastName + ;

  SqlConnection sqlConn = new SqlConnection(   Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver );

  SqlCommand deleteCmd = new SqlCommand(deleteCmdSQL sqlConn);  SqlCommand exceptionCausingCmd = new  SqlCommand(exceptionCausingCmdSQL sqlConn);

  // This mand should execute properly   deleteCmd Connection Open();  deleteCmd ExecuteNonQuery();

  // This mand results in an exception so the first mand is  // automatically rolled back Since the XML Web service method is  // participating in a transaction and an exception occurs ASP NET  // automatically aborts the transaction The deleteCmd that  // executed properly is rolled back

  int cmdResult = exceptionCausingCmd ExecuteNonQuery();

  sqlConn Close();

  return cmdResult;      [Visual Basic]  <%@ WebService Language= VB Class= Orders %>  <%@ assembly name= System EnterpriseServices %>

  Imports System  Imports System Data  Imports System Data SqlClient  Imports System Web Services  Imports System Web Util  Imports System EnterpriseServices

  Public Class Orders

  <WebMethod(TransactionOption:=TransactionOption RequiresNew)> _  Public Function DeleteAuthor (lastName as String) as Integer

  Dim deleteCmdSQL As String = DELETE FROM authors WHERE au_lname= + _   lastName +   Dim exceptionCausingCmdSQL As String = DELETE FROM + _   NonExistingTable WHERE au_lname= + lastName +

  Dim sqlConn As SqlConnection = New SqlConnection( _   Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver )

  Dim deleteCmd As SqlCommand = New SqlCommand(deleteCmdSQL sqlConn)  Dim exceptionCausingCmd As SqlCommand = New _  SqlCommand(exceptionCausingCmdSQL sqlConn)

   This mand should execute properly   deleteCmd Connection Open()  deleteCmd ExecuteNonQuery()

   This mand results in an exception so the first mand is   automatically rolled back Since the XML Web service method is   participating in a transaction and an exception occurs ASP NET   automatically aborts the transaction The deleteCmd that   executed properly is rolled back

  Dim cmdResult As Integer = exceptionCausingCmd ExecuteNonQuery()  sqlConn Close()

cha138/Article/program/net/201311/11378

相关参考

知识大全 ASP.NET创建Web服务之设计方针

ASP.NET创建Web服务之设计方针  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用ASP

知识大全 ASP.NET创建Web服务之发布和部署

ASP.NET创建Web服务之发布和部署  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!部署一个XM

知识大全 ASP.NET创建Web服务之XML基础结构

ASP.NET创建Web服务之XML基础结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了

知识大全 ASP.NET入门教程 12.4 创建Web服务[2]

ASP.NET入门教程12.4创建Web服务[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 ASP.NET入门教程 12.4 创建Web服务[1]

ASP.NET入门教程12.4创建Web服务[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 ASP.NET入门教程 12.4 创建Web服务[3]

ASP.NET入门教程12.4创建Web服务[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 ASP.NET创建XML Web服务全接触

ASP.NET创建XMLWeb服务全接触  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XMLW

知识大全 ASP.NET2.0服务器控件之创建复杂属性

ASP.NET2.0服务器控件之创建复杂属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  页面

知识大全 基于ASP.NET的Web动态控件创建

基于ASP.NET的Web动态控件创建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要web

知识大全 ASP.NET服务器控件之视图状态

ASP.NET服务器控件之视图状态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为Web页面及