이 섹션에서는 네임스페이스에서 제공하는 System.Transactions 기능을 사용하여 고유한 트랜잭션 애플리케이션 및 리소스 관리자를 작성하는 방법을 설명합니다. 특히 이 섹션에서는 하나 이상의 참가자와 함께 트랜잭션(로컬 또는 분산)을 만들고 참여하는 방법을 설명합니다.
System.Transactions 개요
네임스페이스의 클래스에서 System.Transactions 제공하는 인프라는 SQL Server, ADO.NET, 메시지 큐(MSMQ) 및 MSDTC(Microsoft Distributed Transaction Coordinator)에서 시작된 트랜잭션을 지원하여 트랜잭션 프로그래밍을 간단하고 효율적으로 만듭니다. 네임스페이스는 System.Transactions 클래스를 활용한 명시적 프로그래밍 모델과 Transaction 클래스를 사용하는 암시적 프로그래밍 모델을 모두 제공하며, 후자는 인프라에 의해 트랜잭션이 자동으로 관리됩니다. 이러한 두 모델을 사용하여 트랜잭션 애플리케이션을 만드는 방법에 대한 자세한 내용은 트랜잭션 애플리케이션 작성을 참조하세요.
네임스페이 System.Transactions 스는 리소스 관리자를 구현하기 위한 형식도 제공합니다. 리소스 관리자는 트랜잭션에 사용되는 지속성 또는 휘발성 데이터를 관리하고 트랜잭션 관리자와 협력하여 애플리케이션에 원자성 및 격리를 보장합니다. 인프라에서 제공하는 System.Transactions 트랜잭션 관리자는 여러 휘발성 리소스 또는 단일 지속성 리소스와 관련된 트랜잭션을 지원합니다. 리소스 관리자 구현에 대한 자세한 내용은 Resource Manager 구현을 참조하세요.
또한 트랜잭션 관리자는 추가 지속성 리소스 관리자가 트랜잭션에 참여하면 DTC와 같은 디스크 기반 트랜잭션 관리자와 협력하여 로컬 트랜잭션을 분산 트랜잭션으로 투명하게 에스컬레이션합니다. 인프라가 향상된 성능을 제공하는 두 가지 주요 방법이 System.Transactions 있습니다.
동적 에스컬레이션(Dynamic Escalation)은 트랜잭션이 여러 분산 리소스를 포함할 경우에만 System.Transactions 인프라가 MSDTC를 활용하도록 보장합니다. 동적 에스컬레이션에 대한 자세한 내용을 보려면 트랜잭션 관리 에스컬레이션 항목을 참조하세요.
트랜잭션에 참여하는 유일한 엔터티인 경우 데이터베이스와 같은 리소스가 트랜잭션의 소유권을 가져올 수 있도록 하는 승격 가능한 인리스트먼트입니다. 나중에 필요한 경우 인프라는 System.Transactions 트랜잭션 관리를 MSDTC로 에스컬레이션할 수 있습니다. 이렇게 하면 MSDTC를 사용할 가능성이 줄어듭니다. 승격 가능한 입대는 단일 단계 커밋 및 승격 가능한 단일 단계 알림을 사용하여 최적화에 대해 깊이 있게 설명합니다.
네임스페이 System.Transactions 스는 APTCA(AllowPartiallyTrustedCallers), DistributedTransactionPermission(DTP) 및 완전 신뢰의 세 가지 신뢰 수준을 정의하여 노출하는 리소스 유형에 대한 액세스를 제한합니다. 다양한 신뢰 수준에 대한 자세한 내용은 리소스 액세스의 보안 신뢰 수준을 참조하세요.
이 부분에서는
트랜잭션 애플리케이션 작성
네임스페이 System.Transactions 스는 트랜잭션 애플리케이션을 만들기 위한 두 가지 모델을 제공합니다. 암시적 트랜잭션을 구현하는 방법 은 System.Transactions 네임스페이스가 TransactionScope 클래스를 사용하여 암시적 트랜잭션을 만드는 것을 지원하는 방법을 설명합니다.
CommitableTransaction을 사용하여 명시적 트랜잭션을 구현하면 네임스페이스가 클래스를 사용하여 System.Transactions 명시적 트랜잭션 만들기를 지원하는 방법을 CommittableTransaction 설명합니다.
트랜잭션 애플리케이션 작성에 대한 추가 항목은 트랜잭션 애플리케이션 작성을 참조하세요.
Resource Manager 구현
트랜잭션에 참여할 수 있는 리소스 관리자를 구현하려면 Resource Manager 구현을 참조하세요. 이 섹션에서는 리소스의 인리스트먼트, 트랜잭션 커밋, 실패 후 복구 및 최적화 모범 사례에 대해 설명합니다.
.NET