Next: Der CORBA Concurrency Control
Up: 2.3.1 Die CORBA Object
Previous: Der CORBA Naming Service
Im Event Service ([OMG96]) werden die Regeln für
das Versenden und Empfangen von asynchronen Ereignismeldungen
zwischen Objekten festgelegt. Objekte, welche
Events erzeugen und verschicken, werden Supplier, Objekte,
welche diese Events empfangen und verarbeiten, Consumer
genannt. Für den Austausch der Ereignismeldungen zwischen
Supplier und Consumer werden übliche CORBA-Requests verwendet.
Dabei stehen zwei Möglichkeiten zur Verfügung:
- Im sogenannten Push-Modell ergreift der PushSupplier
die Initiative. Er übermittelt einem PushConsumer
eine Ereignismeldung, indem er die Methode push des
PushConsumers aufruft.
- Beim Pull-Modell kann der PullConsumer vom
PullSupplier Ereignismeldungen
pollen, indem er die Methode pull des
PullSuppliers aufruft. Die Methode try_pull
des PullSuppliers kann verwendet werden, um zu
prüfen, ob Ereignismeldungen beim PullSupplier
vorliegen.
In beiden Modellen beruht die Event-Kommunikation zwischen Objekten
also auf Aufrufen spezieller push- und pull-Methoden.
Bei der generischen Kommunikation
von Ereignismeldungen haben diese Methoden jeweils nur einen Parameter
vom Datentyp any. Im Gegensatz dazu können bei der
typisierten Kommunikation mit bestimmten Einschränkungen
beliebige ,,anwendungsspezifische`` Parameter verwendet werden.
Bei den push-Methoden eines TypedConsumers sind
keine Rückgabewerte und nur in-Parameter erlaubt.
Bei den pull- bzw. try_pull-Methoden
des dazugehörigen TypedSuppliers (Pull-Modell)
sind entsprechend nur out-Parameter zulässig.
Vorteil bei der typisierten Event-Kommunikation ist die
Möglichkeit, verschiedene Arten von Ereignismeldungen
zu definieren, zu unterscheiden und zu selektieren.
Dadurch eignet sich diese Methode besonders
für das Netz-, System- und Anwendungsmanagement.
Für die Kommunikation von beliebig vielen Suppliern mit
beliebig vielen Consumern werden sogenannte Event Channels
eingesetzt. Supplier können Ereignismeldungen statt direkt an einen
Consumer an einen Event Channel schicken. Jedem
Consumer-Objekt, das sich bei diesem Event Channel registriert
hat, wird die Ereignismeldung weitergereicht. Der Event Channel ruft
hierzu wiederum Methoden der Consumer auf (Push-Modell).
Der Event Channel selbst ist also sowohl Supplier als auch Consumer
von Events.
Der Event Channel wird inkrementell erzeugt, d. h. bei der Erzeugung
sind noch keine Supplier/Consumer beim Event Channel
registriert. Diese können sich nach und nach beim Event Channel
anmelden. Die Anmeldung erfolgt durch Austausch von Objektreferenzen.
Ein Consumer gibt dem Event Channel bei der Registrierung
die Schnittstelle bekannt, die der Event Channel für das
Weiterreichen der Events verwenden kann. Damit stehen die Events, die
ein Consumer empfangen will, implizit fest. Analog gehen die Supplier
von Events vor, um dem Event Channel zu sagen, welche Events sie ihm
schicken wollen. Wie die Anmeldung im Detail erfolgt, kann in
[OMG96] nachgelesen werden.
Next: Der CORBA Concurrency Control
Up: 2.3.1 Die CORBA Object
Previous: Der CORBA Naming Service
Copyright Munich Network Management Team