ASP.NET XML Web services의 트랜잭션
웹 서비스에 대한 트랜잭션 지원은 MTS(Microsoft Transaction Server) 및 COM+ Services에서 볼 수 있는 동일한 분산 트랜잭션 모델을 기반으로 하는 공용 언어 런타임의 지원을 활용합니다. 이 모델은 트랜잭션 커밋 및 롤백 처리를 위한 특정 코드를 작성하지 않고 개체가 트랜잭션에 참여하는지 여부에 대한 선언적 결정을 기반으로 합니다. ASP.NET을 사용하여 만든 웹 서비스의 경우 웹 서비스 메서드에 적용된 WebMethod 특성의 TransactionOption 속성을 설정하여 트랜잭션 동작을 선언할 수 있습니다. 예제를 보려면 방법: ASP.NET을 사용하여 만든 웹 서비스의 트랜잭션에 참여를 참조하십시오.
웹 서비스 메서드를 실행하는 중에 예외가 throw되면 트랜잭션이 자동으로 중단되고, 반대로 예외가 발생하지 않으면 트랜잭션이 자동으로 커밋됩니다.
WebMethodAttribute 특성의 TransactionOption 속성은 웹 서비스 메서드가 트랜잭션에 참여하는 방법을 지정합니다. 이 선언적 수준은 트랜잭션 논리를 나타내지만 물리적 트랜잭션에서 제거되는 단계입니다. 물리적 트랜잭션은 트랜잭션 개체가 데이터베이스, 메시지 큐와 같은 데이터 리소스에 액세스할 때 발생합니다. 개체와 연관된 트랜잭션은 해당 리소스 관리자에게 자동으로 전달됩니다. .NET Framework 데이터 공급자(예: .NET Framework Data Provider for SQL Server 또는 .NET Framework Data Provider for OLE DB)는 개체 컨텍스트에서 트랜잭션을 조사한 후 DTC(Distributed Transaction Coordinator)를 통해 트랜잭션에 자동으로 참여합니다. 전체 트랜잭션은 자동으로 발생합니다.
웹 서비스 메서드는 트랜잭션에 새 트랜잭션의 루트로만 참여할 수 있습니다. 새 트랜잭션의 루트로서, Microsoft SQL Server, Microsoft Message Queuing(MSMQ) 및 Microsoft Host Integration Server를 실행하는 서버 등과 같은 리소스 관리자와의 모든 상호 작용은 강력한 분산 응용 프로그램을 실행하는 데 필요한 ACID 속성을 유지합니다. 트랜잭션은 웹 서비스 메서드를 통해 전달되지 않기 때문에 다른 웹 서비스 메서드를 호출하는 웹 서비스 메서드가 여러 트랜잭션에 참여합니다.
참고: |
---|
.asmx 확장명을 가진 파일에 대한 인터넷 요청으로 인해 웹 서비스 메서드를 구현하는 메서드가 호출되지 않은 경우 TransactionOption 속성 값이 적용되지 않습니다. 이 문제는 메서드가 포함된 클래스가 Visual Studio .NET에서 프로젝트의 한 멤버이고 웹 서비스가 프록시 클래스를 사용하여 호출되지 않는 경우에 발생합니다. Visual Studio .NET에서 프록시 클래스는 웹 참조가 추가될 때 생성됩니다. |
참고 항목
작업
방법: ASP.NET을 사용하여 만든 웹 서비스의 트랜잭션에 참여
참조
TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property
기타 리소스
Transaction Processing
ASP.NET을 사용하는 XML Web services
Copyright © 2007 by Microsoft Corporation. All rights reserved.