Das COM+-Ereignisklassenobjekt
Der COM+-Ereignisdienst verwendet ein Ereignisklassenobjekt, um die Verbindung zwischen Verleger und Abonnent zu verwalten. Das Ereignisklassenobjekt ist eine COM+-Komponente, die vom COM+-Ereignissystem verwaltet und gespeichert wird und die Schnittstellen und Methoden enthält, die von einem Verleger verwendet werden, um Ereignisse zu löschen. Es handelt sich um ein persistentes Objekt, das die Ereignisse angibt, die auftreten können, und optional den Herausgeber identifiziert. Sie geben die Schnittstellen und Methoden an, die eine Ereignisklasse enthalten soll, indem Sie eine Typbibliothek bereitstellen.
Um ein Ereignis zu erzeugen, instanziiert der Herausgeber das Ereignisklassenobjekt, indem er CoCreateInstance oder die Microsoft Visual Basic CreateObject-Methode aufruft und die Ereignisschnittstelle anfing, zurückgegeben zu werden. Das instanziierte Ereignisklassenobjekt enthält die Implementierung der angeforderten Schnittstelle des Ereignissystems. Ein interessierter Abonnent muss auch die Ereignisklassenschnittstelle implementieren, um Ereignisse von einem bestimmten Herausgeber zu empfangen. Wenn das Ereignisklassenobjekt instanziiert wird, ordnet das Ereignissystem es den entsprechenden Abonnenten zu. Die Liste der Abonnenten wird für die Lebensdauer des Ereignisklassenobjekts beibehalten. Ein Ereignis kann entweder seriell oder parallel an mehrere Abonnenten übermittelt werden.
Wenn Sie ein Ereignisklassenobjekt implementieren, sollten Sie eine selbstregistrierungsbasierte DLL bereitstellen, die die Funktionen DllRegisterServer und DllUnregisterServer exportiert. Die DllRegisterServer-Funktion registriert eine COM-Klasse, und die DllUnregisterServer-Funktion aufheben die Registrierung der Komponente. Ereignisklassenobjekte werden im COM+-Katalog gespeichert, entweder mit dem Component Services-Verwaltungstool oder programmgesteuert mithilfe der Methoden der Schnittstellen ICOMAdminCatalog::InstallEventClass oder ICOMAdminCatalog::InstallMultipleEventClasses. Ausführliche Informationen zum Registrieren von Ereignisklassenobjekten finden Sie unter Registrieren einer Ereignisklasse.
Da Ereignisklassenobjekte konfigurierte Komponenten sind, können andere Attribute, z. B. Warteschlangen, Transaktionen, Sicherheit und so weiter, für sie konfiguriert werden, indem entweder das Verwaltungstool Komponentendienste oder die COM+-Verwaltungs-SDK-Funktionen verwendet werden.
Hinweis
Der COM+-Ereignisdienst verwendet das Marshalling von Typbibliotheken. Dadurch gelten einige Einschränkungen für Ereignisklassenschnittstellen. Beispielsweise unterstützt der Typbibliotheks-Marshaller nicht die Größe der MIDL-Attribute _ und die Länge _ ist.
Ein Ereignisklassenobjekt besitzt Veröffentlichungsattribute, die bestimmen, wie Ereignisse veröffentlicht werden, sowie die folgenden Eigenschaften:
- EventCLSID. Ein eindeutiger Bezeichner, der die CLSID der Komponente angibt.
- EventClassName. Ein eindeutiger Bezeichner, der die PROGID der Komponente angibt.
- TypeLibrary. Stellt eine Liste der Schnittstellen bereit, die vom Ereignisklassenobjekt angeboten werden. Die in der Typbibliothek angegebenen auslobenden Schnittstellen müssen nicht implementiert werden.