COM-Kategorienkategorien

Eintrag zuletzt aktualisiert am: 07.03.2004

Das Component Object Model bietet einen einfachen Mechanismus zur Kategorisierung von COM-Klassen. Der Name dieses Mechanismus ist mit Komponentenkategorien (Component Categories) unglücklich gewählt, da er sich laut der COM-Spezifikation [OPE99, /CHP01CHP.HTM#chap01.sect2.11] eindeutig auf Klassen und nicht auf gan-ze Komponenten bezieht. Eine COM-Klasse kann zu mehreren Komponentenkategorien gehören; diese Zuordnung wird in der Registrierungsdatenbank festgehalten. Auf Anfrage eines Clients liefert die COM-Bibliothek eine Liste alle COM-Klassen einer Kompo-nentenkategorie. Dies ist kein Trader-Mechanismus, da der Client außer der GUID der Komponentenkategorie keine Kriterien angeben kann und die COM-Bibliothek auch keine Auswahl trifft.

COM-Kategorien stellen eine Möglichkeit dar, COM-Klassen zu kategorisieren. Die Kategorisierung dient dazu, leichter feststellen zu können, ob ein COM-Client und ein COM-Server zusammenpassen. Obwohl es Klassen betrifft, die kategorisiert werden, heißt dieses Feature Komponentenkategorien (Component Categories).
Ein Client, der eine bestimmte Schnittstelle benötigt, aber keine COM-Klasse kennt, die diese implementiert, müsste normalerweise jede Klasse instanziieren und mit Hilfe von QueryInterface() anfragen, ob die betreffende Schnittstelle implementiert wird. Sofern der Client nicht nur eine einzelne Schnittstelle, sondern einen Satz von Schnittstellen benötigt, müsste er QueryInterface() bei jeder Klasse entsprechend oft aufrufen.
Durch die Zuordnung einer COM-Klasse zu einer Kategorie kann in der Registry hinterlegt werden, dass eine COM-Klasse einen bestimmten Satz von Schnittstellen implementiert. Ein Client muss dann lediglich in der Registry nach der entsprechenden Kategorie suchen.