COM+에서 자동 트랜잭션 관리

COM+ 프로그래밍 모델에서 비즈니스 논리를 사용하도록 설정하거나 데이터베이스 연결을 설정하는 등 가장 잘하는 작업을 수행하도록 구성 요소를 디자인하고 Microsoft Windows의 트랜잭션 처리 프레임워크를 사용하여 트랜잭션을 자동화할 수 있습니다.

트랜잭션 시작

COM+는 다음 조건 중 하나가 발생하면 트랜잭션을 자동으로 시작합니다.

  • 트랜잭션이 아닌 클라이언트가 트랜잭션이 필요하거나 새 트랜잭션이 필요한 구성 요소를 호출하는 경우
  • 트랜잭션 클라이언트가 새 트랜잭션이 필요한 구성 요소를 호출하는 경우

COM+에서 개체에 새 트랜잭션이 있어야 한다고 판단하면 먼저 트랜잭션을 시작한 다음 개체를 해당 트랜잭션에 배치합니다. 프로세스에는 다음 단계가 포함됩니다.

  1. COM+는 컨텍스트 개체를 만들고 , JIT 활성화동기화 특성을 모두 필수로 설정하고, 일관되고 완료된 플래그 를 각각 True 및 False로 설정합니다.
  2. COM+는 DTC(Distributed Transaction Coordinator)와 통신하여 트랜잭션을 시작합니다. DTC는 실제 트랜잭션을 조정합니다.
  3. DTC는 트랜잭션 식별자를 생성하고 COM+에 다시 전달합니다. 트랜잭션 식별자는 트랜잭션 경계를 설정합니다. 트랜잭션에 참여하는 모든 개체는 동일한 식별자를 공유합니다.
  4. 클라이언트가 개체를 만들 때 COM+는 트랜잭션 경계 내에서 활성화합니다.

트랜잭션 종료

COM+는 다음 조건 중 하나가 발생할 때 커밋하거나 중단하여 자동 트랜잭션을 종료합니다.

  • 트랜잭션의 루트 개체는 작업을 완료하고 COM+는 이를 해제합니다. 루트 개체가 비활성화되면 트랜잭션이 커밋을 시도합니다.
  • 클라이언트는 루트 개체를 해제합니다. 참조가 없으면 루트 개체가 비활성화되고 트랜잭션이 커밋을 시도합니다.
  • 트랜잭션이 제한 시간 임계값을 초과합니다. 트랜잭션 제한 시간 내에 커밋되지 않으면 트랜잭션이 자동으로 중단되어 트랜잭션과 연결된 모든 개체가 비활성화됩니다. 기본 트랜잭션 제한 시간은 60초입니다.

일관성 및 완료 플래그

루트 개체에 알리면 트랜잭션 속도 향상

SetComplete를 호출하여 자동 트랜잭션 종료