다음을 통해 공유


구독

구독 데이터는 구독 COM+ 카탈로그에 있습니다. 구성 요소 서비스 관리 도구를 사용하거나 ICOMAdminCatalog::InstallComponent 인터페이스를 사용하여 프로그래밍 방식으로 구독을 만들 수 있습니다.

SubscriptionsForComponent 컬렉션은 구독과 관련된 정보를 추가, 삭제 또는 변경하는 데 사용됩니다. SubscriptionsForComponent 컬렉션은 구성 요소에 대한 자식 컬렉션입니다. 구독을 추가하려면 구성 요소의 SubscriptionsForComponent 컬렉션을 가져와 서 Add 메서드를 사용하여 컬렉션에 항목을 추가합니다. 구독 개체의 다양한 속성을 설정하려면 Value 속성을 사용합니다. 변경 내용을 저장하려면 SubscriptionsForComponent 컬렉션 개체에서 SaveChanges를 사용합니다.

구성 요소 서비스 관리 도구를 사용하여 일부 구독 속성을 수정할 수도 있습니다. 구독은 다음 정보를 지정합니다.

  • 구독자의 ID 및 위치
  • 배달 방법
  • 전달할 이벤트 메서드
  • 구독자가 이벤트를 수신하려는 이벤트 클래스 구성 요소의 이벤트 클래스 개체 및 PublisherID 속성

구독은 이벤트 클래스 개체와 독립적으로 존재합니다. Enabled 속성을 False로 설정하여 구독을 사용하지 않도록 설정할 수 있습니다. 비활성화된 구독은 COM+ 이벤트에서 호출되지 않습니다.

세 가지 유형의 구독은 다음과 같습니다.

영구

영구 구독은 COM+ 카탈로그에 상주하며 구독자의 수명과 독립적입니다. 영구 구독은 시스템 다시 시작 후에도 유지됩니다. 일반적으로 영구 구독은 애플리케이션이 구독자의 컴퓨터에 설치되고 애플리케이션이 제거될 때 제거될 때 만들어집니다. 영구 구독을 만든 후 COM+ 이벤트는 이벤트가 전달될 때마다 구독자를 활성화합니다.

게시자가 이벤트 클래스 개체를 인스턴스화하고 호출하면 개체는 COM+ 카탈로그에서 모든 영구 구독을 찾고 각 개체의 새 instance 만듭니다. 생성 프로세스는 직접 또는 큐에 대기된 구성 요소에 대한 모니커를 통해 수행할 수 있습니다. 구독의 SubscriberMoniker 속성으로 구독자 개체를 지정합니다. 영구 구독에서 만든 구독자 개체는 각 이벤트 호출 후에 항상 해제됩니다.

일시적인

임시 구독의 경우 부모 개체가 루트 카탈로그 개체인 TransientSubscriptions 컬렉션을 사용할 수 있습니다. 임시 구독은 이미 존재하는 특정 구독자 개체에 대한 이벤트를 요청합니다. 임시 구독은 COM+ 카탈로그에 저장되지만 이벤트 시스템 또는 운영 체제가 중지되면 구독이 삭제됩니다. 영구 구독과 달리 임시 구독은 특정 개체에 연결되며 이벤트 시스템에만 저장됩니다. 일시적 구독은 영구 구독보다 더 효율적일 수 있지만 개체 수명 주기를 관리해야 합니다. 임시 구독 등록에 대한 자세한 내용은 임시 구독 등록을 참조하세요.

사용자당

사용자별 구독은 구독자가 이벤트 시스템의 컴퓨터에 로그온한 경우에만 이벤트를 제공할 수 있습니다. 구독자가 로그온하면 이벤트 시스템은 PerUser 플래그가 TRUE 로 설정되고 UserName 이 로그온한 사용자의 이름으로 설정된 모든 구독을 사용하도록 설정합니다. 구독자가 로그오프하면 구독이 비활성화됩니다.

사용자별 구독은 게시자와 구독자가 동일한 컴퓨터에 있는 경우에만 적용됩니다. 로그온 및 로그오프는 구독자 개체가 있는 컴퓨터가 아닌 게시자의 컴퓨터에서만 검색됩니다.

이벤트 시스템은 메타 이벤트를 사용하여 이벤트 클래스 개체 또는 구독이 생성, 수정 또는 제거될 때마다 관심 있는 구독자에게 알립니다. 이벤트 시스템에서 메타 이벤트를 받으려면 애플리케이션은 이벤트 시스템의 컴퓨터에 상주하고 발생 인터페이스 ID(IID_IEventObjectChange)를 지정하는 구독을 만들어야 합니다.

COM+에서 이벤트 필터링

COM+에서 이벤트 게시 및 제공

COM+ 이벤트 클래스 개체

COM+ 큐에 대기된 구성 요소와 함께 COM+ 이벤트 사용