트랜잭션은 여러 작업을 함께 바인딩합니다. 예를 들어 애플리케이션이 두 가지 작업을 수행한다고 상상해 보십시오. 먼저 데이터베이스에 새 테이블을 만듭니다. 다음으로, 특수화된 개체를 호출하여 데이터를 수집, 서식 지정 및 새 테이블에 삽입합니다. 이러한 두 작업은 관련되고 상호 의존적이므로 데이터로 채울 수 없는 한 새 테이블을 만들지 않으려고 합니다. 단일 트랜잭션 범위 내에서 두 작업을 실행하면 두 작업 간의 연결이 적용됩니다. 두 번째 작업이 실패하면 첫 번째 작업이 새 테이블을 만들기 전의 지점으로 롤백됩니다.
예측 가능한 동작을 보장하려면 모든 트랜잭션에 기본 ACID 속성(원자성, 일관성, 격리 및 내구성)이 있어야 합니다. 이러한 속성은 모든 또는 없음 제안으로 중요 업무용 트랜잭션의 역할을 강화합니다. ACID에 대한 자세한 내용은 ACID 속성을 참조하세요. 요약하자면 ACID는 관련 작업 집합이 하나의 단위로 성공하거나 실패하도록 보장합니다. 트랜잭션 처리 용어에서 트랜잭션은 커밋하거나 중단합니다. 트랜잭션이 커밋되려면 모든 참가자가 데이터에 대한 변경 내용이 영구적으로 유지되도록 보장해야 합니다. 시스템 작동이 중단되거나 다른 예측할 수 없는 이벤트가 발생해도 변경 내용이 지속되어야 합니다. 단일 참가자라도 이 보장을 수행하지 못하면 전체 트랜잭션이 실패합니다. 트랜잭션 범위 내의 데이터에 대한 모든 변경 내용은 특정 집합 지점으로 롤백됩니다.
트랜잭션은 데이터베이스 또는 메시지 큐와 같은 단일 데이터 리소스로 제한될 수 있습니다. 이 시나리오에서는 로컬 트랜잭션이 제공된 System.Transactions 트랜잭션 관리자에 의해 관리되므로 성능이 향상됩니다. 데이터 리소스에 의해 제어되는 이러한 트랜잭션은 효율적이고 관리하기 쉽습니다.
트랜잭션은 여러 데이터 리소스에 걸쳐도 가능합니다. 분산 트랜잭션을 사용하면 여러 시스템에서 발생하는 여러 고유 작업을 단일 패스 또는 실패 작업으로 통합할 수 있습니다. 이 시나리오에서 트랜잭션은 각 시스템에 상주하는 MSDTC(Microsoft Distributed Transaction Coordinator)에 의해 조정됩니다.
제공 System.Transactions된 클래스를 사용하여 트랜잭션 애플리케이션을 개발하는 경우 필요한 트랜잭션 종류 또는 관련된 트랜잭션 관리자에 대해 걱정할 필요가 없습니다. 이 System.Transactions 인프라 구조는 자동으로 사용자 대신 관리합니다.
트랜잭션을 만들 때 트랜잭션에 적용되는 격리 수준을 지정할 수 있습니다. 격리 수준은 IsolationLevel 열거형에 의해 정의되며, 트랜잭션의 영향을 받는 데이터에 대한 다른 트랜잭션의 접근 수준을 결정합니다.
ADO.NET System.EnterpriseServices을 사용하거나 System.Transactions 네임스페이스에서 제공하는 트랜잭션 프로그래밍 모델을 사용하여 트랜잭션을 생성할 수 있습니다. System.Transactions에서 제공하는 기능 항목에서는 네임스페이스를 사용하여 트랜잭션 애플리케이션을 작성하는 데 사용할 수 있는 기능에 대해 System.Transactions 설명합니다.
참고하십시오
.NET