COM+ 컨텍스트

COM+ 애플리케이션 내에서 실행되는 구성된 구성 요소의 경우 컨텍스트 는 COM+ 서비스가 제공되는 기반입니다. COM+에서 컨텍스트는 해당 개체에 대한 서비스를 제공하는 데 사용되는 하나 이상의 COM 개체와 연결된 런타임 속성 집합으로 정의됩니다.

COM+에서 모든 COM 개체는 실행될 때(즉, 활성화와 비활성화 사이에) 정확히 하나의 컨텍스트와 연결되며, 모든 컨텍스트는 정확히 하나의 COM 아파트 내에 상주합니다. 여러 개체가 동일한 컨텍스트 내에서 실행되고 여러 컨텍스트가 동일한 아파트 내에 있을 수 있습니다. 개체가 활성화될 때 초기화되며, 보안 컨텍스트 속성과 같은 컨텍스트 속성은 개체의 런타임 요구 사항을 나타냅니다.

참고

COM+ 서비스를 사용하지 않는 구성 요소의 경우 컨텍스트는 대부분 무시됩니다.

 

COM+는 런타임 서비스를 제공하기 위한 기준으로 컨텍스트 속성을 사용합니다. 이러한 속성은 실행 환경이 컨텍스트 내의 개체에 대해 서비스를 수행하는 방법을 결정하는 상태를 유지합니다. 경우에 따라 개체의 컨텍스트 속성과 직접 상호 작용하여 개체에 대해 제공되는 서비스와 관련된 일부 상태를 나타낼 수 있습니다. 예를 들어 자동 트랜잭션에 참여하는 개체가 트랜잭션 결과에 대해 투표하는 경우 이 작업을 수행합니다.

이러한 개념의 COM 기반에 대한 자세한 내용은 프로세스, 스레드 및 아파트를 참조하세요.

컨텍스트 속성과 프로그래밍 방식 상호 작용

각 컨텍스트에는 해당 속성을 추적하는 연결된 ObjectContext 개체가 있습니다. GetObjectContext 함수를 호출하여 ObjectContext에 액세스할 수 있습니다. ObjectContext에 액세스한 후에는 노출하는 IObjectContext 인터페이스에서 메서드를 호출하여 컨텍스트 속성을 조작할 수 있습니다.

예를 들어 IObjectContext::SetComplete 를 호출하면 트랜잭션 일관성 비트를 "일관성"으로 설정하고 JIT 활성화 완료 비트를 개체와 연결된 컨텍스트에서 "완료"하는 효과가 있습니다. "일관성"은 트랜잭션을 커밋하기 위해 투표한다는 COM+에 신호를 보냅니다. "완료"는 메서드가 반환될 때 개체를 비활성화할 준비가 되었음을 나타냅니다.

IObjectContext 외에도 컨텍스트 속성에 대한 액세스를 제공하는 다른 특수 인터페이스는 IObjectContextInfo, IContextStateIObjectContextActivity입니다. ISecurityCallContext는 컨텍스트 속성에도 어느 정도 액세스합니다. IGetSecurityCallContext::GetSecurityCallContext를 사용하여 ISecurityCallContext를 가져올 수 있습니다.

활성화 및 가로채기 이해

일반적으로 컨텍스트가 구성 요소에 대한 COM+ 서비스를 제공하는 데 사용되는 여러 속성을 나타내는 범위까지만 고려해야 합니다. 그러나 경우에 따라 컨텍스트의 다음과 같은 두 가지 상호 연결된 패싯을 더 자세히 고려해야 할 수 있습니다.

  • 컨텍스트 활성화 또는 적절한 컨텍스트에서 개체의 초기화
  • 인터셉션 또는 컨텍스트 경계를 넘어 호출에서 COM+가 수행하는 작업

MTS 컨텍스트 래퍼와 관계

컨텍스트는 MTS 컨텍스트 래퍼를 효과적으로 대체합니다. 생성 요청을 트래핑하여 자동 서비스를 제공하는 용도는 이제 COM+의 통합 기능입니다. 따라서 더 이상 SafeRef 함수를 사용할 필요가 없습니다. MTS에서 SafeRef 는 컨텍스트 래퍼 외부에서 전달할 수 있는 개체에 대한 참조를 가져오는 데 사용되었습니다. COM+에서는 필요하지 않습니다. 일반 개체 참조( 포인터)가 작동합니다.