création d’un filtre de Publisher
Il existe deux méthodes pour établir le filtre de l’éditeur : à l’aide de la propriété MultiPublisherFilterCLSID de la classe d’événements, ou à l’aide de IEventControl :: SetPublisherFilter.
- Étant donné qu’elle vous permet de composer l’objet d’événement avec le service com+ en file d’attente , la méthode recommandée consiste à utiliser la propriété MultiPublisherFilterCLSID de la classe d’événements pour définir le filtre de l’éditeur. Cela établit un objet de filtre pour toutes les méthodes des interfaces d’événements pour un objet d’événement. L’objet d’événement active le filtre de l’éditeur lorsque l’objet de classe d’événements est instancié à l’aide de CoCreateInstance.
- Vous pouvez également utiliser SetPublisherFilter. Toutefois, si vous choisissez cette méthode, l’interface n’est pas mise en file d’attente et ne peut donc pas utiliser l’objet d’événement avec le service composants en file d’attente COM+ entre le serveur de publication et l’objet de classe d’événements. Pour plus d’informations sur l’utilisation du service Queued Components avec des événements COM+, consultez utilisation d’événements com+ avec des composants en file d’attente com+.
Un événement peut avoir un ou plusieurs objets de filtre, ou aucun. Les objets de filtre d’éditeur doivent prendre en charge IPublisherFilter ou IMultiInterfacePublisherFilter, selon que vous disposez d’une interface de déclenchement unique ou de plusieurs interfaces de déclenchement sur l’objet de classe d’événements. Les interfaces IPublisherFilter et IMultiInterfacePublisherFilter spécifient toutes deux une méthode Initialize . La méthode Initialize est appelée par l’objet de classe d' événements immédiatement après la création de l’objet de filtre.
Les événements COM+ essaient d’appeler deux méthodes sur le filtre. Tout d’abord, elle appelle IPublisherFilter ::P reparetofire et transmet un pointeur d’interface IFiringControl au filtre. Ensuite, il interroge l’objet de filtre pour l’interface d’événement. Si le filtre prend en charge l’interface d’événement, il appelle une méthode sur celui-ci. Cela permet d’accéder aux paramètres du serveur de publication d’un événement. Le filtre peut utiliser ces paramètres pour déterminer les abonnements à activer.