六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ASP.NET創建XML Web服務全接觸(13)

[摘要]支持XML Web服務的事務利用公共語言運行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ Services中相同的分布式事務模型。該模型基于明確的判斷一個對象是否參與一個事務,而不是編寫特定的代碼用來處理委托和回調一個事務。對于一個使用ASP...

    

 支持XML Web服務的事務利用公共語言運行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ 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=1.0.3300.0,

Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" %>

  添加引用到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=1.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" %>
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 command should execute properly.
deleteCmd.Connection.Open();
deleteCmd.ExecuteNonQuery();

// This command results in an exception, so the first command 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 command should execute properly.
deleteCmd.Connection.Open()
deleteCmd.ExecuteNonQuery()

' This command results in an exception, so the first command 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()

Return cmdResult
End Function
End Class

 

 





主站蜘蛛池模板: 青草免费观看 | 婷婷夜夜躁天天躁人人躁 | 欧美永久免费 | 天天插天天狠天天透 | 亚洲午夜国产精品 | 香蕉视频一区 | 午夜成年免费观看视频 | 午夜爱爱爱爱爽爽爽网站免费 | 青草精品在线 | 日本永久视频 | 天堂网在线播放 | 亚欧成人中文字幕一区 | 亚洲免费影院 | 天天插天天狠天天透 | 日韩中文精品亚洲第三区 | 日韩黄色大片免费看 | 网站在线观看高清免费 | 午夜性爽爽爽 | 青草国内精品视频在线观看 | 日本午夜在线观看 | 在线观看中文字幕亚洲 | 亚洲精品福利在线观看 | 在线观看黄日本高清视频 | 日本精品免费 | 天天看天天干天天操 | 一级黄色在线观看 | 色综合天天综合中文网 | 最新韩国理论片30页 | 亚洲综合色站 | 天天干天天色天天干 | 日韩亚洲一区中文字幕在线 | 香蕉狠狠再啪线视频 | 色综合综合 | 亚洲一级大黄大色毛片 | 亚洲一欧洲中文字幕在线 | 三级香蕉| 日本三级网络 | 在线免费日韩 | 五福影院在线 | 日韩伦理网在线视频 | 小说区 亚洲 自拍另类 |