Поделиться через


Фильтрация событий в COM+

События COM+ предоставляют два способа управления событиями, которые достигают подписчиков: фильтрация издателя и фильтрация параметров .

Фильтрация издателя

Фильтрация публикатора контролирует порядок и запуск метода события объектом класса событий. Фильтрация издателя позволяет издателю определить, какие подписчики получают определенное событие.

Примером эффективного использования фильтрации издателей является фондовая биржа. Большинство подписчиков хотят знать, когда добавляется новая ценная бумага. Однако многие из этих же подписчиков могут не захотеть знать о каждом изменении стоимости акций. Фильтрация издателей обеспечивает детализацию, необходимую для эффективной доставки событий только подписчикам, которым нужна эта информация.

При вызове метода на объекте инстанцированного класса события, он собирает все фильтры издателя для этого метода. Фильтр заставляет объект события вызывать метод события для конкретного подписчика. Фильтр определяет, какие подписки следует запускать и в каком порядке их запускать. Например, фильтр может считывать список подписок и создавать заказ на основе некоторых критериев приложения, а затем вызывать подписчиков в этом порядке.

Подробные инструкции по созданию фильтра издателя см. в разделе Создание фильтра издателя.

Фильтрация параметров

В отличие от фильтрации по издателю, служба событий COM+ предоставляет возможность фильтрации параметров подписчиков для каждой подписки и каждого вызова метода события. Фильтрация параметров сопоставляет свойство FilterCriteria подписки с параметрами метода события. Этот тип фильтрации применяется индивидуально к каждому методу и каждой подписке, предоставляя уровень фильтрации подписчиков на источнике событий. Строка критериев фильтра распознает реляционные операторы для проверки равенства (=, ==, !, !=, ~, ~=, <>), вложенные скобки и логические ключевые слова AND, ORили NOT.

Фильтрация параметров происходит после любой фильтрации издателя и когда активируется стандартный объект события для данной подписки. Если используется фильтрация издателей, фильтрация параметров возникает только при вызове фильтра издателя IFiringControl::FireSubscription. Из-за этого фильтрация издателей и фильтрация параметров могут создаваться вместе, но фильтрация издателей имеет приоритет.

Публикация и доставка событий в COM+

Подписки

объект класса событий COM+

использование событий COM+ с компонентов COM+