gif gif up gif contents
Nächste Seite: 6.2.2 Sichtenmaterialisierung im Anwendungsprogramm Vorige Seite: 6.2 Realisierung der Änderungsnotifikation

6.2.1 Notifikation des Anwendungsprogramms

Bei der Notifikation des Anwendungsprogramm werden die Rollen von Client und Server vertauscht. Im Normalfall veranlaßt der Client einen Nachrichtenaustausch, hier bildet der Server die aktive Komponente und sendet aufgrund eines Ereignisses eine Nachricht an den Client.

Für die Realisierung der Notifikation gibt es mehrere Möglichkeiten (vgl. Kapitel 3.3.1 und [OMG93]):

Synchron durch Server:
Der Server versendet die Nachricht an den Client und wartet auf eine Bestätigung. Dieses Vorgehen ist analog zur Kommunikation in der umgekehrten Richtung.

Synchron durch Client:
Der Client fragt beim Server nach, ob neue Nachrichten für ihn vorhanden sind. Ist dies der Fall, so schickt der Server die Nachricht als Antwort an den Client.

Interrupt:
Der Server löst beim Client einen Interrupt aus, der das normale Programm unterbricht und den Client für den Empfang von Daten und deren Verarbeitung vorbereitet.

One-Way:
Der Server sendet die Nachricht an Client und wartet nicht auf eine Bestätigung.

Die Notifikation darf beim Server durch die zusätzliche Kommunikation mit dem Anwendungsprogrammen keine Verzögerungen verursachen. Dies schließt eine synchrone Benachrichtigung durch den Server aus, da der Server, während er auf die Antwort des Clients wartet, blockiert ist. Auch wenn der Client beim Server nachfragt, ist der Server für eine kurze Zeit für die Bearbeitung dieser Nachricht blockiert. Außerdem ist eine Speicherung aller Notifikationsnachrichten für jeden Client solange notwendig, bis sie vom Client abgefragt werden. Der Server mußdabei auch die Reihenfolge der Nachrichten beachten, da die Änderungen im Anwendungsprogramm nicht in beliebiger Reihenfolge ausführbar sind. Des weiteren müssen die Clients dafür Nachrichten an den Server schicken, was wiederum zusätzliche Kosten für die Kommunikation auf Seite des Anwendungsprogramms verursacht.

Einen Spezialfall des synchronen Nachrichtenaustausch stellt der Remote Procedure Call (RPC) dar. RPC ist ein Protokoll zum Aufruf von Funktionen in Programmen, die auf unterschiedlichen Rechnern laufen und wird vor allem für Betriebssystemfunktionen im Netzwerk eingesetzt. Um die Notifikation via RPC zu ermöglichen, mußder Datenbankserver die Rolle eines RPC-Clients übernehmen und Informationen über die bei Anwendungsprogrammen aufrufbaren RPC-Funktionen haben. Dieses Verfahren würde allein für die Notifikation auf Client- und Server-Seite einen erheblichen Programmieraufwand bedeuten.

Bei der Interrupt-Lösung wird die Programmierung des Anwendungsprogramms erschwert. Ein Interrupt kann jeder Zeit im Programm auftreten, weswegen der Zugriff auf die Daten des Hauptprogramms durch die Interrupt-Funktion nicht möglich sein dürfte. Wenn aber während der Unterbrechung die Daten einer Sicht geändert werden sollen, mußdas Hauptprogramm in jedem Schritt prüfen, ob die aktuellen Daten gültig sind.

Für ConceptBase soll der One-Way-Mechanismus zur Notifikation benutzt werden. Es ist die einfachste Art der Notifikation, da die bestehende Kommunikationsstruktur nur geringfügig verändert werden muß. Nach Versenden der Nachricht kann der Server direkt weiterarbeiten, es fallen dort nur die Kosten für das Schreiben der Nachricht auf einen Kommunikationskanal an. Der Client mußnur in regelmäßigen Abständen prüfen, ob neue Nachrichten für ihn eingetroffen sind. Dies kann in der Hauptschleife des Programms passieren, bei GUI-Applikationen werden an dieser Stelle auch Nachrichten der Benutzeroberfläche verarbeitet. Diese Überprüfung verursacht ebenfalls nur geringfügige Kosten, und falls eine Nachricht vorhanden ist, kann sie sofort gelesen werden. Ein Nachteil dieser Lösung ist allerdings, daßder Server keine Kontrolle darüber hat, ob die Nachricht auch korrekt angekommen ist. Dies ist bei den ersten Möglichkeiten nicht der Fall.



gif gif up gif contents

Christoph Quix
31. Juli 1996