다음을 통해 공유


COM+에서 이벤트 필터링

COM+ 이벤트는 게시자 필터링매개 변수 필터링이라는 구독자에 도달하는 이벤트를 제어하는 두 가지 방법을 제공합니다.

게시자 필터링

게시자 필터링은 이벤트 클래스 개체에 의한 이벤트 메서드의 순서 및 발생을 제어합니다. 게시자 필터링을 사용하면 게시자가 특정 이벤트를 수신하는 구독자를 결정할 수 있습니다.

게시자 필터링의 효과적인 사용 예는 증권 거래소의 예입니다. 대부분의 구독자는 새 주식이 추가되는 시기를 알고 싶어합니다. 그러나 이러한 동일한 구독자의 대부분은 각 주가가 변경 될 때마다 알고 싶지 않을 수 있습니다. 게시자 필터링은 이 정보를 원하는 구독자에게만 이벤트를 효과적으로 전달하는 데 필요한 세분성을 제공합니다.

인스턴스화된 이벤트 클래스 개체에서 메서드가 호출되면 해당 메서드에 대한 게시자 필터를 수집합니다. 필터는 이벤트 개체가 이벤트 메서드를 특정 구독자에게 강제로 실행하도록 합니다. 필터는 어떤 구독을 발생시키고 어떤 구독을 발생시키는지 결정합니다. 예를 들어 필터는 구독 목록을 읽고 일부 애플리케이션 조건에 따라 주문을 만든 다음 해당 순서로 구독자를 호출할 수 있습니다.

게시자 필터를 만드는 방법에 대한 자세한 지침은 게시자 필터 만들기를 참조하세요.

매개 변수 필터링

게시자 필터링과 달리 COM+ 이벤트 서비스는 각 구독 및 각 이벤트 메서드 호출에 대한 선택적 구독자 매개 변수 필터링을 제공합니다. 매개 변수 필터링은 이벤트 메서드의 매개 변수에 대해 FilterCriteria 구독 속성을 평가합니다. 이 유형의 필터링은 구독별로 메서드별로 사용되며 이벤트 원본에서 구독자 필터링 수준을 제공합니다. 필터 조건 문자열은 같음(=, ==, !, !=, ~, ~=, <>), 중첩된 괄호 및 논리 키워드 AND, OR 또는 NOT을 확인하기 위한 관계형 연산자를 인식합니다.

매개 변수 필터링은 게시자 필터링 후 지정된 구독에 대해 표준 이벤트 개체가 실행된 후에 발생합니다. 게시자 필터링을 사용하는 경우 매개 변수 필터링은 게시자 필터가 IFiringControl::FireSubscription을 호출할 때만 발생합니다. 이 때문에 게시자 필터링 및 매개 변수 필터링을 함께 작성할 수 있지만 게시자 필터링이 우선합니다.

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

구독

COM+ 이벤트 클래스 개체

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