방법: 자동 트랜잭션을 사용하는 웹 서비스 메서드 만들기
다음 절차에서는 자동 트랜잭션을 사용하는 웹 서비스 메서드를 만드는 방법에 대해 설명합니다. 웹 서비스 메서드가 트랜잭션에 참여하는 동안 예외가 발생하면 ASP.NET에서 자동으로 트랜잭션을 중단합니다. 마찬가지로 예외가 발생하지 않으면 트랜잭션이 자동으로 커밋됩니다.
자동 트랜잭션을 사용하는 웹 서비스를 만들려면
System.WebServices 및 System.EnterpriseServices 네임스페이스를 가져옵니다. 필요한 경우 System.Data, System.Data.SqlClient 등과 같은 다른 네임스페이스를 가져올 수 있습니다.
<%@ WebService Language="VB" Class="Orders" %> <%@ assembly name="System.EnterpriseServices" %> Imports System.Web.Services Imports System.EnterpriseServices
<%@ WebService Language="C#" Class="Orders" %> <%@ assembly name="System.EnterpriseServices" %> using System.Web.Services; using System.EnterpriseServices;
WebService 클래스에서 파생되는 클래스를 정의합니다. 예를 들어, 다음 코드에서는 WebService 클래스에서 파생된 Orders라는 클래스를 정의합니다.
Public Class Orders Inherits WebService End Class
public class Orders : WebService { }
자동으로 트랜잭션에 참여해야 하는 각 웹 메서드의 경우 WebMethodAttribute 특성을 적용하고 트랜잭션 옵션을 설정합니다. 예를 들어, 다음 코드에서는
DeleteAuthor
메서드에 WebMethod 특성이 적용되고 TransactionOption 속성이 TransactionOption.RequiresNew로 설정됩니다.<WebMethod(TransactionOption := TransactionOption.RequiresNew)> _ Public Function DeleteAuthor(lastName As String) As Integer ' Perform the required database task. End Function
[ WebMethod(TransactionOption=TransactionOption.RequiresNew)] public int DeleteAuthor(string lastName) { // Perform the required database task. }
예제
<%@ 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
Inherits WebService
<WebMethod(TransactionOption := TransactionOption.RequiresNew)> _
Public Function DeleteAuthor(lastName As String) As Integer
Dim deleteCmd As [String] = "DELETE FROM authors2 where au_lname='"
& lastName & "'"
Dim sqlConn As New SqlConnection("Integrated Security=SSPI;database=pubs;server=myserver")
Dim myCommand As New SqlCommand(deleteCmd, sqlConn)
' If a Web service method is participating in a transaction and
' an exception occurs, ASP.NET automatically aborts the transaction.
' Likewise, if no exception occurs, then the transaction is
' automatically committed.
myCommand.Connection.Open()
Return myCommand.ExecuteNonQuery()
End Function
End Class
<%@ WebService Language="C#" Class="Orders" %>
<%@ assembly name="System.EnterpriseServices" %>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
using System.Web.Util;
using System.EnterpriseServices;
public class Orders : WebService
{
[ WebMethod(TransactionOption=TransactionOption.RequiresNew)]
public int DeleteAuthor(string lastName)
{
String deleteCmd = "DELETE FROM authors2
where au_lname='" + lastName + "'" ;
SqlConnection sqlConn = new SqlConnection("Integrated Security=SSPI;database=pubs;server=myserver");
SqlCommand myCommand = new SqlCommand(deleteCmd,sqlConn);
// If a Web service method is participating in a transaction and an
// exception occurs, ASP.NET automatically aborts the transaction.
// Likewise, if no exception occurs, then the transaction is
// automatically committed.
myCommand.Connection.Open();
return myCommand.ExecuteNonQuery();
}
}
참고 항목
개념
Copyright © 2007 by Microsoft Corporation. All rights reserved.