COM+ 컨텍스트
COM+ 애플리케이션 내에서 실행되는 구성된 구성 요소의 경우 컨텍스트는 COM+ 서비스가 제공되는 기반입니다. COM+에서 컨텍스트는 해당 개체에 대한 서비스를 제공하는 데 사용되는 하나 이상의 COM 개체와 연결된 런타임 속성 집합으로 정의됩니다.
COM+에서 모든 COM 개체는 실행될 때(즉, 활성화와 비활성화 사이에) 정확히 하나의 컨텍스트와 연결되며, 모든 컨텍스트는 정확히 하나의 COM 아파트 내에 있습니다. 여러 개체가 동일한 컨텍스트 내에서 실행되고 여러 컨텍스트가 동일한 아파트 내에 있을 수 있습니다. 개체가 활성화될 때 초기화되며, 보안 컨텍스트 속성과 같은 컨텍스트 속성은 개체의 런타임 요구 사항을 나타냅니다.
메모
COM+ 서비스를 사용하지 않는 구성 요소의 경우 컨텍스트는 대부분 무시됩니다.
COM+는 런타임 서비스를 제공하기 위한 기준으로 컨텍스트 속성을 사용합니다. 이러한 속성은 실행 환경이 컨텍스트 내의 개체에 대한 서비스를 수행하는 방법을 결정하는 상태를 유지합니다. 경우에 따라 개체의 컨텍스트 속성과 직접 상호 작용하여 개체에 대해 제공되는 서비스와 관련된 일부 상태를 나타낼 수 있습니다. 예를 들어 자동 트랜잭션에 참여하는 개체가 트랜잭션 결과에 대해 투표하는 경우 이 작업을 수행합니다.
이러한 개념의 COM 기반에 대한 자세한 내용은 프로세스, 스레드 및 아파트참조하세요.
컨텍스트 속성과 프로그래밍 방식 상호 작용
각 컨텍스트에는 해당 속성을 추적하는 연결된 ObjectContext 개체가 있습니다. GetObjectContext 함수를 호출하여 ObjectContext 액세스할 수 있습니다. ObjectContext액세스한 후에는 컨텍스트 속성을 조작하기 위해 노출하는 IObjectContext 인터페이스에서 메서드를 호출할 수 있습니다.
예를 들어 IObjectContext::SetComplete 호출하면 트랜잭션 일관성 비트를 "일관성"으로 설정하고 개체와 연결된 컨텍스트에서 비트가 "완료" JIT 활성화가 수행되는 효과가 있습니다. "일관성"은 트랜잭션을 커밋하기 위해 투표한다는 것을 COM+에 알리고, "완료"는 메서드가 반환될 때 개체를 비활성화할 준비가 되었음을 나타냅니다.
IObjectContext외에도 컨텍스트 속성에 대한 액세스를 제공하는 다른 특수 인터페이스는 IObjectContextInfo, IContextState및 IObjectContextActivity. ISecurityCallContext컨텍스트 속성에도 어느 정도 액세스합니다. IGetSecurityCallContext::GetSecurityCallContext사용하여 ISecurityCallContext 가져올 수 있습니다.
활성화 및 가로채기 이해
일반적으로 컨텍스트가 구성 요소에 대한 COM+ 서비스를 제공하는 데 사용되는 여러 속성을 나타내는 범위까지만 고려해야 합니다. 그러나 경우에 따라 컨텍스트의 다음과 같은 두 가지 상호 연결된 패싯을 더 자세히 고려해야 할 수 있습니다.
MTS 컨텍스트 래퍼에 대한 관계
컨텍스트는 MTS 컨텍스트 래퍼를 효과적으로 대체합니다. 생성 요청을 트래핑하여 자동 서비스를 제공하는 용도는 이제 COM+의 통합 기능입니다. 따라서 더 이상 SafeRef 함수를 사용할 필요가 없습니다. MTS에서 SafeRef 컨텍스트 래퍼 외부에서 전달할 수 있는 개체에 대한 참조를 가져오는 데 사용되었습니다. COM+에서는 필요하지 않습니다. 일반 개체 참조(이포인터)가 작동합니다.