Фильтрация событий в COM+
События COM+ предоставляют два способа управления событиями, которые достигают подписчиков: фильтрация издателей и фильтрация параметров.
Фильтрация издателя
Фильтрация издателей управляет порядком и запуском метода события объектом класса событий. Фильтрация издателя позволяет издателю определить, какие подписчики получают определенное событие.
Пример эффективного использования фильтрации издателей заключается в том, что фондовой биржи. Большинство подписчиков хотят знать, когда добавляется новая акция. Однако многие из этих же подписчиков могут не знать всякий раз, когда каждая цена акций изменяется. Фильтрация издателей обеспечивает детализацию, необходимую для эффективной доставки событий только подписчикам, которым нужна эта информация.
При вызове метода в объекте класса событий экземпляра он собирает все фильтры издателей в этом методе. Фильтр заставляет объект события запускать метод события конкретному подписчику. Фильтр определяет, какие подписки следует запускать и в каком порядке их запускать. Например, фильтр может считывать список подписок и создавать заказ на основе некоторых критериев приложения, а затем вызывать подписчиков в этом порядке.
Подробные инструкции по созданию фильтра издателя см. в статье "Создание фильтра издателя".
Фильтрация параметров
В отличие от фильтрации издателей, служба событий COM+ предоставляет необязательный параметр подписчика для каждой подписки и вызова каждого метода события. Фильтрация параметров оценивает свойство FilterCriteria подписки по параметрам метода события. Этот тип фильтрации используется на основе каждого метода для каждой подписки и предоставляет уровень фильтрации подписчиков в источнике событий. Строка критериев фильтра распознает реляционные операторы для проверка равенства (=, ==, , !=, ~, ~, ~, <>), вложенных скобок и логических ключевое слово И, OR или NOT.
Фильтрация параметров возникает после фильтрации любого издателя и при запуске стандартного объекта события для данной подписки. Если используется фильтрация издателей, фильтрация параметров возникает только при вызове IFiringControl::FireSubscription. Из-за этого фильтрация издателей и фильтрация параметров могут создаваться вместе, но фильтрация издателей имеет приоритет.
См. также