Filtern von Ereignissen in COM+
COM+-Ereignisse bieten zwei Möglichkeiten, um zu steuern, welche Ereignisse welche Abonnenten erreichen: Herausgeberfilterung und Parameterfilterung.
Publisher Filtern
Publisher Filterung steuert die Reihenfolge und das Auslösen einer Ereignismethode durch ein Ereignisklassenobjekt. Publisher Filterung kann der Herausgeber bestimmen, welche Abonnenten ein bestimmtes Ereignis empfangen.
Ein Beispiel für die effektive Verwendung der Herausgeberfilterung ist die einer Aktienkurse. Die meisten Abonnenten möchten wissen, wann eine neue Lagerbestände hinzugefügt wird. Viele dieser Abonnenten möchten jedoch möglicherweise nicht wissen, wann sich jeder Aktienkurs ändert. Publisher Filterung bietet die Granularität, die erforderlich ist, um Ereignisse nur an die Abonnenten zu übermitteln, die diese Informationen benötigen.
Wenn eine Methode für das instanziierte Ereignisklassenobjekt aufgerufen wird, sammelt sie alle Herausgeberfilter für diese Methode. Der Filter erzwingt, dass das Ereignisobjekt die Ereignismethode für einen bestimmten Abonnenten aus löst. Der Filter bestimmt, welche Abonnements ausgelöst werden sollen und in welcher Reihenfolge sie ausgelöst werden sollen. Beispielsweise könnte der Filter die Abonnementliste lesen und die Bestellung basierend auf einigen Anwendungskriterien erstellen und dann die Abonnenten in dieser Reihenfolge aufrufen.
Ausführliche Anweisungen zum Erstellen eines Herausgeberfilters finden Sie unter Erstellen eines Publisher Filters.
Parameterfilterung
Im Gegensatz zur Herausgeberfilterung stellt der COM+-Ereignisdienst eine optionale Abonnentenparameterfilterung für jedes Abonnement und jeden Ereignismethodenaufruf bereit. Die Parameterfilterung wertet die FilterCriteria-Eigenschaft des Abonnements anhand der Parameter der Ereignismethode aus. Diese Art der Filterung wird pro Methode und pro Abonnement verwendet und bietet eine Ebene der Abonnentenfilterung in der Ereignisquelle. Die Filterkriterienzeichenfolge erkennt relationale Operatoren zum Überprüfen von Gleichheit (=, ==, !, !=, ~, ~=, <>), geschachtelten Klammern und logischen Schlüsselwörtern AND, OR oder NOT.
Die Parameterfilterung erfolgt nach einer Herausgeberfilterung und wenn das Standardereignisobjekt für ein bestimmtes Abonnement ausgelöst wird. Wenn die Herausgeberfilterung verwendet wird, erfolgt die Parameterfilterung nur, wenn der Herausgeberfilter IFiringControl::FireSubscriptionaufruft. Aus diesem Grund können Herausgeberfilterung und Parameterfilterung zusammen erstellt werden, aber die Herausgeberfilterung hat Vorrang.