-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft das Gebiet der Kommunikation zwischen
Anwendungen und insbesondere Verfahren und Vorrichtungen zur Ermöglichung
einer Kommunikation zwischen Anwendungen für Einheiten, die unter Verwendung
drahtloser Netze miteinander in Wechselwirkung stehen.
-
Grundlagen der Erfindung
-
Für diese
Beschreibung wird ein drahtloses Netz definiert als ein mobiles
Netz, das durch drahtlose Verbindungen, das Fehlen einer zentralen
Infrastruktur (beispielsweise Domänennamendienst (Domain Name
Service)) und häufige
Hostmobilität
(host mobility) (die zu Änderungen
in der Kommunikationsfähigkeit
zwischen Einheiten führt)
gekennzeichnet ist. Ein Beispiel für ein drahtloses Netz ist ein
Netz, das zur Kommunikation Funksignale verwendet. Die Stärke eines
Funksignals bestimmt den Bereich, in dem das Signal empfangen werden
kann. Dieser Bereich wird hier als der ”Funkbereich” für eine Sendeeinheit
definiert. In einem auf Funkübertragung
beruhenden drahtlosen Netz können
zwei Einheiten miteinander kommunizieren, wenn sie sich im Funkbereich
der jeweils anderen Einheit befinden, vorausgesetzt, sie sind zur
Kommunikation aufeinander abgestimmt (verwenden dieselbe Frequenz).
Zwei Einheiten stellen die Kommunikation ein, falls sich eine Einheit
aus dem Funkbereich der anderen Einheit bewegt. Der Funkbereich für eine Einheit
ist abhängig von
der Stärke
des Funksenders auf einzelnen Einheiten. Der Bereich könnte von
ca. 30 Metern (in Bluetooth-Einheiten (Bluetooth enabled devices)) über ca.
200 Meter (in drahtlosen LAN-Einheiten) bis hin zu ca. 150 Kilometern
(in einer Übertragung
durch Funkstationen) variieren. Es ist möglich, den Funkbereich einer
Einheit zu erweitern, indem Verstärkerknoten (repeater nodes)
im drahtlosen Netz installiert werden. Verstärkerknoten senden das gesendete
Signal erneut rund, wodurch der Funkbereich für eine einzelne Sendeeinheit
vergrößert wird.
Für die
Ausführungsformen
dieser Beschreibung können
zwei Einheiten in einem drahtlosen Netz miteinander kommunizieren,
vorausgesetzt, sie befinden sich im Funkbereich der jeweils anderen
Einheit und verwenden dieselbe Funkfrequenz. 1A zeigt
ein Beispiel, in dem zwei Einheiten 102 sich im Funkbereich 104 der
jeweils anderen Einheit befinden und folglich miteinander kommunizieren
können.
Wenn sich die beiden Einheiten voneinander weg bewegen, stellen sie
die Kommunikation ein, sobald sie sich aus dem Funkbereich der jeweils
anderen Einheit bewegen. Dies wird in 1B dargestellt.
-
Herkömmliche
Beispiele für
die Kommunikation zwischen Anwendungen beinhalten entweder eine
direkte Kommunikation, bei der die kommunizierenden Anwendungen
direkt Kenntnis voneinander haben, oder eine mittelbare (mediated)
Kommunikation, bei der die kommunizierenden Anwendungen einen allgemein
bekannten und erreichbaren Vermittler (mediator) verwenden.
-
Bei
einer Form der direkten Kommunikation ”entnimmt” ein Empfänger die Daten aus einem Sender
(z. B. Web-Browsing). Hier hat ein Empfänger ausdrücklich Kenntnis vom Sender
und kommuniziert mit dem Sender unter Verwendung eines gut bekannten
Netznamens oder einer Netzadresse. Eine solches Empfänger-”Entnahme”-Modell
(receiver ”pull” model)
einer direkten Kommunikation wird in 2 gezeigt.
In diesem Beispiel sendet jede Anwendung im Empfänger 202, der an einem
Datenempfang von einem Sender 208 interessiert ist, eine
Anforderungsnachricht 204 zu einem bestimmten Anschluss (port)
des Senders. Der Vorsatz der Anforderungsnachricht kennzeichnet
den Typ der Anforderung zusammen mit der Identität der Daten (falls vorhanden). Die
Anwendung im Sender verarbeitet die Anforderung und sendet die angeforderten
Daten als Teil der Antwort 206 zurück zur Empfängeranwendung. Wenn dieses
Beispiel auf drahtlose Netze angewandt wird, besteht der Hauptschwachpunkt
darin, dass jede Anwendung im Empfänger die Position und Adresse
der Anwendung im Sender kennen muss.
-
Bei
einer anderen Form der direkten Kommunikation ”registriert” ein Empfänger zunächst seine
Absicht zum Empfang von Datenelementen von einem Sender. Ein solches
Empfänger-”Eingabe”-Modell
(receiver ”push” model)
einer direkten Kommunikation wird in den 3A und 3B gezeigt.
Während
der Registrierungsphase (registration Phase) (3A)
informiert ein Empfänger 302 den Sender 306 über den
Typ von Daten, die er empfangen möchte (Registrierungsschritt 304).
Wenn die Daten verfügbar
werden, ”gibt” der Sender 306 die Daten
(Schritt 308) während
der Antwortphase (3B) in den Empfänger ein
(z. B. Marimba-Kanäle – http://www.marimba.com;
PointCast – http:www.pointcast.com).
Wenn diese Lösung
auf drahtlose Netze angewandt wird, besteht der Hauptschwachpunkt
darin, dass sowohl der Sender als auch der Empfänger die Position des jeweils
anderen mit Hilfe eines Netznamens oder einer Netzadresse, an die
sie senden bzw. von der sie empfangen können, kennen müssen.
-
Eine
in der Literatur vorgeschlagene alternative Einrichtung einer direkten
Kommunikation beruht auf dem als ”Broadcast Disks” bezeichneten
Verfahren (beschrieben in ”Broadcast
Disks: Data Management for Asymmetric Communication Environments” von S.
Acharya, R. Alonso, M. Franklin und S. Zdonik, In Proceedings of
ACM SIGMOD Conference, Mai 1995). Dieses Verfahren erhöht die Speicherhierarchie
von Clients (clients) in asymmetrischen Kommunikationsumgebungen
durch Rundsenden von Daten von einem feststehenden Server an Clients
mit weniger leistungsfähigen
Maschinen (die mobil sein könnten).
Clients, die an einer Suche nach Datenelementen interessiert sind,
die in ihrem lokalen Speicher fehlen, rufen Daten aus dem Rundsendekanal ab,
wenn die Daten ”durchlaufen”. Da das
Verfahren in erster Linie für
die Verbreitung (dissemination) von einer einzigen Quelle vorgesehen
ist, besteht sein Hauptschwachpunkt darin, dass es keine willkürliche Feinkommunikation
zwischen Anwendungen bei mobilen Clients unterstützt.
-
Mittelbare
Kommunikationsvorgänge
werden in tupelgestützten
(tupfe based) Systemen verwendet (z. B. Linda-Tupel, wie sie in ”Generative
Communication in Linda”,
David Gelernter, ACM Transactions an Programming Languages and Systems, Band
7, Nr. 1, Januar 1985, Seiten 80 bis 112, und ”Distributed Communication
via Global Buffer”,
David Gelernter und A. J. Bernstein, In Proceedings of the ACM Principles
of Distributed Computing Conference, 1982, Seiten 10 bis 18, beschrieben
werden; JavaSpaces, wie sie in ”JavaSpaces
Specification”, http://java.sun.com/products/javaspaces/specs/js.pdf,
Sun Microsystems, Juli 1998, beschrieben werden; und TSPaces, wie
sie in ”TSpaces”, P. Wycoff,
S. W. McLaugry, T. J. Lehman, D. R. Ford, The IBM Systems Journal,
August 1998, beschrieben werden), oder warteschlangengestützte (queue-based)
Systeme (z. B. MQSeries, wie sie in ”MQSeries”, http://www.software.ibm.com/mqseries, IBM,
beschrieben werden). In diesen Systemen können zwei Anwendungen kommunizieren,
indem gekennzeichnete Datenwerte in einem Tupelspeicherbereich (tuplespace)
oder in einer Warteschlange hinterlegt und daraus entnommen werden,
ohne dass sie ausdrücklich
Kenntnis voneinander haben.
-
4 zeigt
ein Beispiel eines warteschlangengestützten Modells einer direkten
Kommunikation. Der Empfänger 402 schreibt
die Anforderungsnachricht mit Hilfe des Warteschlangenverwalters (Queue
Manager) 408 in eine Warteschlange (Schritt 404).
Der Sender 414 ruft die Anforderungsnachricht aus der Warteschlange
ab (Schritt 412). Nach der Verarbeitung der Anforderung
schreibt der Sender die Antwortnachricht (Schritt 410)
mit Hilfe des Warteschlangenverwalters in eine Warteschlange. Der Empfänger liest
sodann die Antwortnachricht aus der Warteschlange (Schritt 406).
Die Realisierung eines Tupelspeicherbereichs oder einer Warteschlange wird
durch eine dritte Instanz (entity) ausgeführt. Diese Instanz ist unabhängig von
den Kommunikationsanwendungen. Der Hauptschwachpunkt dieser Lösung besteht
darin, dass sie auf dem ständigen
Vorhandensein eines Vermittlers (z. B. eines Warteschlangenverwalters)
beruht. Falls der Vermittlerknoten aus irgendwelchen Gründen ausfällt oder
ein Fehler auf diesem auftritt, können zwei Anwendungen die Kommunikation
nicht fortsetzen. Die Verfügbarkeit
und Erreichbarkeit eines vermittelnden dritten Teilnehmers ist unwahrscheinlich
in drahtlosen Netzen, die sich dynamisch bilden (wenn Einheiten
in den Kommunikationsbereich der jeweils anderen Einheiten gelangen)
und auflösen
(wenn sich Einheiten weg bewegen).
-
Ein
Verfahren zur Kommunikation zwischen Anwendungen, die auf verschiedenen
Einheiten in einem drahtlosen Netz laufen, wobei die sendende Einheit
und die empfangende Einheit keine Kenntnis vom Vorhandensein der
jeweils anderen Einheit haben, wird in der Druckschrift
DE 40 34 681 A1 beschrieben.
Gemäß diesem
Verfahren empfängt
ein Fahrzeug Verkehrsinformationen, die von vorbeifahrenden bzw.
entgegenkommenden Fahrzeugen ausgesendet werden, und extrahiert
daraus Informationen über
den vor ihm herrschenden Verkehrszustand. Dieses Verfahren geht
davon aus, dass jedes Fahrzeug nicht nur Informationen über seine
eigene Position und seinen eigenen Fahrzustand aussendet, sondern
auch derartige Informationen von anderen Fahrzeugen, die es zuvor
von diesen anderen Fahrzeugen empfangen und zwischengespeichert
hat. Die Druckschrift
DE
40 34 681 A1 beschäftigt
sich ausführlich
mit der Frage, wie die ausgesendeten Verkehrsinformationen strukturiert
und gekennzeichnet werden müssen,
damit ein Fahrzeug, die für
sich relevanten Informationen eines empfangenen Datenelements identifizieren
und nutzen kann. Dazu wird ein spezielles Sendeformat für die Verkehrsinformationen
vorgeschlagen. Das in der Druckschrift
DE 40 34 681 A1 beschriebene
Verfahren setzt voraus, dass jedes Fahrzeug über dieselben „Anwendungen” zum Erfassen
von Verkehrsinformationen und zum Auswerten von Verkehrsinformationen
verfügt
und dass alle rundgesendeten Datenelemente dieselbe Datenstruktur
aufweisen. Das bekannte Verfahren ist nicht dafür ausgelegt, dass auf den einzelnen
mobilen Einheiten unterschiedliche Anwendungen laufen, die sich
sowohl in der Art der generierten und ausgesendeten Informationen
unterscheiden als auch in der Art der von anderen Anwendungen angeforderten
Informationen.
-
Zusammenfassung der Erfindung
-
Diese
vorliegende Erfindung kombiniert die Rundsendefähigkeiten der drahtlosen Netze
mit eindeutig gekennzeichneten Datenelementen zum Ausführen einer sofortigen
Kommunikation zwischen Anwendungen ohne die obigen lästigen Erfordernisse, die
mit Hilfe von herkömmlichen
Beispielen für
die Kommunikation zwischen Anwendungen dargelegt werden. Das heißt, ein
Sender von Datenelementen muss keine Kenntnis vom Vorhandensein
der Empfänger
der Datenelemente haben. Ähnlich
muss der Empfänger
keine Kenntnis vom Vorhandensein des Senders haben. In der Erfindung
kennzeichnet der Sender eines Datenelementes das Datenelement mit einem
Bezeichner (identifier), der im Kontext der vorgesehenen Kommunikation
eindeutig ist, und sendet anschließend das gekennzeichnete Datenelement
im drahtlosen Netz rund. Eine Anwendung, die das Datenelement empfangen
möchte,
nimmt das Datenelement an, falls die angehängte Kennzeichnung (tag) mit
der von der empfangenden Anwendung erwarteten Kennzeichnung übereinstimmt.
Daher kommunizieren zwei (oder mehr) Anwendungen einfach dadurch,
dass sie sich im Funkbereich (physische Nähe) der jeweils anderen Einheit
befinden und in Bezug auf Kennzeichnungswerte übereinstimmen. Es gibt zahlreiche
Mittel, in denen die Sender- und Empfängeranwendungen hinsichtlich
der Kennzeichnungswerte übereinstimmen
können.
Beispielsweise können
Kennzeichnungswerte für
Datenelemente in den Anwendungen vorkonfiguriert werden oder durch einen
Außerband-Kommunikationsvorgang
zu Benutzern der Anwendungen übertragen
werden. Eine Anwendung, die nur Bestandsberechnungen (stock quotes)
anzeigt, kann beispielsweise festverdrahtet werden, um ausschließlich Kennzeichnungen
für Bestandsberechnungen
zu verarbeiten. Eine anpassungsfähigere
Anwendung kann einen Benutzer zur Eingabe von Datenkennzeichnungswerten
auffordern, die die Anwendung verarbeiten soll. Informationen über Typen
von verfügbaren
Kennzeichnungen können
unter Verwendung eines Außerband-Mittels (out-of-band
means), beispielsweise einem Benutzerhandbuch oder einer Benutzeranzeige,
zum Benutzer übertragen
werden. Es sollte jedoch klar sein, dass die Erfindung nicht auf
irgendein bestimmtes Kennzeichnungswert-Übereinstimmungsmittel
(tag value agreeing means) begrenzt ist. Es sollte klar sein, dass
sich der Begriff ”Anwendung” im Allgemeinen
auf ein oder mehrere Softwareprogramme bezieht, die zur Ausführung oder
Bereitstellung einer oder mehrerer bestimmter Funktionen geschrieben wurden.
Die Anwendungen können
von der Ausführung
einfacher Funktionen bis hin zu komplexen Funktionen reichen. Die
Methodik der vorliegenden Erfindung ist jedoch nicht auf irgendeine
spezifische Anwendung begrenzt und kann in der Tat auf die einfache
Kommunikation von Daten oder einer anderen Signalübertragung
zwischen zwei Einheiten in einem Netz angewandt werden.
-
Vorteilhafterweise
müssen
kommunizierende Anwendungen gemäß der vorliegenden
Erfindung keine direkte Kenntnis mehr vom Vorhandensein der jeweils
anderen Anwendung haben, beispielsweise in Form einer festgelegten
Adresse, und müssen
keinen allgemeinen Vermittler verwenden.
-
Diese
und andere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung
gehen aus der folgenden ausführlichen
Beschreibung von erläuternden
Ausführungsformen
davon hervor, die in Verbindung mit den begleitenden Zeichnungen
gelesen werden soll.
-
Kurze Beschreibung der Zeichnungen
-
Die 1A und 1B sind
Darstellungen, die das Konzept eines Funkbereichs in einem drahtlosen
Netz veranschaulichen;
-
2 ist
eine Darstellung, die ein Empfänger-”Entnahme”-Beispiel einer direkten
Kommunikation veranschaulicht;
-
die 3A und 3B sind
Darstellungen, die ein Sender-”Eingabe”-Beispiel
einer direkten Kommunikation veranschaulichen;
-
4 ist
eine Darstellung, die ein mittelbares Kommunikationsmodell zwischen
Anwendungen veranschaulicht;
-
5 ist
eine Darstellung, die eine beispielhafte Systemumgebung veranschaulicht,
auf die die vorliegende Erfindung angewandt werden kann;
-
6 ist
eine Darstellung, die eine beispielhafte Software-Architektur einer
Einheit in einem drahtlosen Netz veranschaulicht, die die Methodik zur
Kommunikation zwischen Anwendungen der vorliegenden Erfindung verwendet;
-
7 ist
eine Darstellung, die eine Anwendungsprogrammschnittstelle veranschaulicht,
die von einem Datenaustauschdienst (Data Exchange Service) einer
Einheit in einem drahtlosen Netz exportiert (exported) wird, die
die Methodik zur Kommunikation zwischen Anwendungen der vorliegenden Erfindung
verwendet;
-
8 ist
ein Flussdiagramm, das Schritte darstellt, die von einer Anwendung
ausgeführt
werden, um Daten gemäß einer
Ausführungsform
der vorliegenden Erfindung zu senden; und
-
9 ist
ein Flussdiagramm, das Schritte darstellt, die von einem Datenaustauschdienst
zur Verarbeitung einer Rundsendenachricht ausgeführt werden, die von einer Einheit
empfangen und gemäß einer
Ausführungsform
zur Kommunikation zwischen Anwendungen der vorliegenden Erfindung
zu einer Anwendung übertragen
wurden.
-
Ausführliche
Beschreibung von bevorzugten Ausführungsformen
-
Die
vorliegende Erfindung wird unten im Zusammenhang mit einem veranschaulichenden
drahtlosen Netz erläutert.
Es muss jedoch klar sein, dass die vorliegende Erfindung nicht auf
irgendeine bestimmte Realisierung eines drahtlosen Netzes begrenzt
ist. Stattdessen kann die Erfindung im Allgemeinen auf jedes beliebige
Netz angewandt werden, in dem es wünschenswert ist, dass Anwendungen ohne
direkte Kenntnis voneinander, z. B. in Form einer festgelegten Adresse,
und ohne die notwendige Verwendung eines allgemeinen Vermittlers
kommunizieren.
-
Mit
Bezugnahme auf 5 wird nun eine beispielhafte
Systemumgebung gezeigt, auf die die vorliegende Erfindung angewandt
werden kann. Die Umgebung umfasst Datenverarbeitungseinheiten, beispielsweise
Laptop-Computer 512, Mobiltelefone (hand held phones) und
Terminplaner (organizers) 502, intelligente Telefonstationen
(smart phones) 508, Anrufmelder (pagers) 504 und
periphere Einheiten (peripheral devices), beispielsweise Drucker 510, usw.
Jede Einheit kann unter Verwendung von drahtlosen Medien mit einer
anderen Einheit kommunizieren. Zu diesem Zweck umfasst jede Einheit
einen drahtlosen Sender und einen drahtlosen Empfänger. Zwei
Einheiten kommunizieren, wenn sie sich im Funkbereich der jeweils
anderen Einheit befinden, wie in 1A dargestellt
wird. Die Kommunikation wird eingerichtet, nachdem zwei Einheiten
in den Funkbereich gelangt sind und ein Netz einrichten, um die
Kommunikation zu erleichtern. Die verschiedenen Einheiten können über ein
Netz 506 miteinander kommunizieren, solange sie sich im
Funkbereich der jeweils anderen Einheit befinden. Das Netz 506 kann irgendein
Netz sein, das zum Ermöglichen
einer Kommunikation zwischen den Einheiten geeignet ist. Die Erfindung
ist nicht auf irgendeine bestimmte Netzrealisierung begrenzt. In
dieser Ausführungsform
ist der primäre
Kommunikationsmodus der Rundsendebetrieb, d. h., wenn eine Einheit
Informationen senden möchte,
sendet sie den Inhalt der Informationen unter Verwendung ihres drahtlosen
Senders rund. Irgendeine andere Einheit, die sich innerhalb des
Empfangsbereichs der Rundsendung befindet, kann diese Übertragung
empfangen. Dies bringt es mit sich, dass der Sender keine Kenntnis
davon hat, wer der Empfänger
ist, und der Empfänger
keine Kenntnis davon hat, wer der Sender ist.
-
Es
muss verstanden werden, dass jede in 5 gezeigte
Einheit einen Prozessor umfassen kann, der funktionsmäßig mit
Speicher- und E/A-Einheiten verbunden ist. Es muss verstanden werden, dass
der Begriff ”Prozessor”, wie er
hierin verwendet wird, eine beliebige Verarbeitungseinheit beinhalten kann,
beispielsweise eine Einheit, die eine CPU (Zentraleinheit) enthält. Der
Begriff ”Speicher”, wie er hierin
verwendet wird, kann einen beliebigen Speicher beinhalten, der mit
einem Prozessor oder einer CPU verbunden ist, beispielsweise einen
RAM, einen ROM, eine feste Speichereinheit (fixed memory device)
(z. B. Festplattenlaufwerk (hard drive)), eine austauschbare Speichereinheit
(removable memory device) (z. B. Diskette), einen Flash-Speicher
(flash memory), usw. Außerdem
kann der Begriff ”Ein-/Ausgabeeinheiten” oder ”E/A-Einheiten”, wie er
hierin verwendet wird, beispielsweise eine oder mehrere Eingabeeinheiten,
z. B. Tastatur, Mikrofon, usw., zum Eingeben von Daten in die Verarbeitungseinheit und/oder
eine oder mehrere Ausgabeeinheiten beinhalten, z. B. eine Anzeige
mit Katodenstrahlröhre (CRT),
einen Lautsprecher, usw., um die der Verarbeitungseinheit zugeordneten
Ergebnisse darzustellen. Es muss außerdem klar sein, dass ”Prozessor” sich auf
mehr als eine Verarbeitungseinheit beziehen kann und dass verschiedene
mit einer Verarbeitungseinheit verbundene Elemente von anderen Verarbeitungseinheiten
gemeinsam genutzt werden können. Dementsprechend
können
Softwarekomponenten oder Module, die Befehle oder einen Code zur
Ausführung
der Methodik der Erfindung enthalten, wie sie hierin beschrieben
wird, in einer oder mehreren der angeschlossenen Speichereinheiten
(z. B. ROM, fester oder austauschbarer Speicher) gespeichert und, wenn
sie zur Nutzung bereit sind, teilweise oder im Ganzen geladen (z.
B. in einen RAM) und von einer CPU ausgeführt werden.
-
Mit
Bezugnahme auf 6 wird nun ein beispielhafter
Softwarestapelspeicher (software stack) gezeigt, der mit jeder Einheit
im drahtlosen Netz verbunden ist. Jede Einheit ist mit einem drahtlosen Sender 608 und
einem Empfänger 610 ausgestattet. Der
Sender 608 sendet Funksignale auf einer spezifischen vom
Netz verwendeten Frequenz, während der
Empfänger 610 eine
spezifische Frequenz abhört,
um Daten von anderen Einheiten zu empfangen (wir gehen davon aus,
dass die beiden Einheiten zum Erhalten der Kommunikation dasselbe
Frequenzsprungschema (frequency hopping) verwenden würden). Der
Sender und der Empfänger
werden vom Kommunikationsmodul (communication modul) 606 zum
Senden und Empfangen von Daten verwendet. Das Kommunikationsmodul 606 stellt
einem als Datenaustauschdienst (Data Exchange Service – DES) 604 bezeichneten
Softwaremodul Funktionen bereit, um Nachrichten unter Verwendung
des Senders und des Empfängers
zu senden und zu empfangen. Das DES-Modul befindet sich über der
Kommunikationsebene (communication layer). Das DES-Modul stellt den
Anwendungen eine Anwendungsprogrammschnittstelle (Application Programming
Interface – API)
bereit, um unter Verwendung der hierin beschriebenen Mechanismen
Daten zu senden und zu empfangen. Die APIs werden in 7 gezeigt.
Die für
die Einheit (602) geschriebenen Anwendungen verwenden die
DES-APIs zum Kommunizieren mit anderen Anwendungen, die auf anderen
Einheiten ablaufen.
-
Die
vorliegende Erfindung führt
das Konzept der Verwendung eines global eindeutigen Datenbezeichners
(Globally Unique Data Identifier) (GUDI) im Zusammenhang mit der
Kommunikation zwischen Anwendungen ein. Ein GUDI ist ein global
eindeutiger 128-Bit-Bezeichner, wie er im Microsoft Visual C++ Software
Development Kit beschrieben wird (erhältlich von Microsoft Corporation,
Redmond, WA). 12345678-1234-1234-123456789ABC ist beispielsweise
ein syntaktisch korrekter GUDI. Ein GUDI wird unter Verwendung einer
Kombination aus dem aktuellem Datum und der aktuellen Uhrzeit, der
aktuellen Taktfolge, einem automatisch (forcibly) erhöhten Zählerwert
und einem Maschinen-(Einheiten-)Bezeichner
erzeugt. Ein GUDI stellt eine bestimmte Kategorie von Datenwerten
oder einen einzelnen Datenwert dar. Gemäß der Erfindung wird er verwendet, um
alle Datenelemente zu kennzeichnen, die während der Kommunikation zwischen
Anwendungen ausgetauscht werden.
-
7 zeigt
die Programmschnittstelle, die das DES-Modul zu den Anwendungen
exportiert. Vor der Verwendung des DES-Moduls initialisiert die Anwendung das
Modul unter Verwendung der Funktion 704 ”DESInitialize()”. Jede
Anwendung kann auswählen,
ob sie Datenübertragungen
(communications) von anderen Anwendungen asynchron oder synchron
empfängt.
Um asynchrone Datenübertragungen
von anderen Anwendungen zu empfangen, verwendet eine Anwendung die
Funktion 706 ”DESRegister()”. Als Argument
(argument) verwendet die Funktion eine Liste von GUDIs und einen
Zeiger auf die Rückruffunktion,
die die Anwendung realisiert hat. Die Signatur (signature) der Rückruffunktion 702 wird in 7 gezeigt.
Um ein Datenelement zu anderen Anwendungen zu senden, verwendet
eine Anwendung die Funktion 708 ”DESSend()”. Als Argument verwendet die
Funktion eine Liste von GUDIs und einen Zeiger auf den Puffer, den
die Anwendung senden möchte.
Die Liste von GUDIs wird von der DES-Laufzeit (DES runtime) verwendet,
um Datenelemente vor dem Senden zu kennzeichnen. Eine Anwendung
kann außerdem
einen synchronen Empfang von Daten von anderen Anwendungen unter Verwendung
der Funktion 710 ”DESReceive()” wählen. Die
Funktion ”DESReceive” blockt
(wartet), bis ein Datenelement verfügbar ist, das mit dem in der Funktion
angegebenen GUDI übereinstimmt.
Eine Anwendung entscheidet, ob sie Daten synchron oder asynchron
empfängt.
Eine Anwendung kann den Empfang von Daten beenden, indem sie die
Funktion 712 ”DESTerminate()” aufruft.
Im Anschluss an den Aufruf von ”DESTerminate” werden
keine Datenelemente mehr zu der Anwendung gesendet.
-
Mit
Bezugnahme auf 8 wird nun ein Flussdiagramm
der Schritte gezeigt, die von einer Anwendung ausgeführt werden,
um eine Kommunikation zwischen Anwendungen gemäß einer Ausführungsform
der vorliegenden Erfindung zu verwenden. Zum Zeitpunkt der Initialisierung
führt die
Anwendung die Funktion ”DESInitialize()” aus (Schritt 802). Im
Schritt 804 registriert die Anwendung eine Liste von GUDIs,
für die
die Anwendung Daten empfangen möchte.
Außerdem
registriert die Anwendung im Schritt 806 eine Rückruffunktion
mit dem DES-Modul. Die
Rückruffunktion
wird vom DES zum Benachrichtigen der Anwendung verwendet, wenn ein
Datenelement mit diesem GUDI empfangen wird. Auf den Registrierungsprozess
(registration process) vom Schritt 806 hin speichert das
DES-Modul eine Liste von GUDIs und die Anwendungs-Rückrufbearbeitung (application
callback handle) in seinen internen Datenstrukturen. Im Schritt 808 kann
eine Anwendung unter Verwendung der Funktion ”DESSend()” Daten zu anderen Anwendungen
senden. Im Schritt 810 kennzeichnet der DES Datenelemente,
die er mit von der Anwendung angegebenen GUDIs rundsenden möchte. Die
gekennzeichneten Datenelemente werden sodann in das Netz gesendet.
Anschließend kann
die Anwendung mit einer anderen Anwendungslogik fortfahren.
-
Mit
Bezugnahme auf 9 wird nun ein Flussdiagramm gezeigt,
das Schritte darstellt, die von einem Datenaustauschdienst zur Verarbeitung einer
GUDI-Rundsendenachricht
(GUDI broadcast message) ausgeführt
werden, die gemäß einer
Ausführungsform
zur Kommunikation zwischen Anwendungen der vorliegenden Erfindung
empfangen wurde. Im Schritt 902 wartet das DES-Modul auf
den Empfang irgendeiner Rundsendenachricht. Nach dem Empfang einer
Nachricht überprüft es im
Schritt 904, ob die Nachricht ein gültiges Format hat, d. h. einen
gültigen
GUDI enthält.
Falls die Nachricht ungültig
ist, wartet der DES weiterhin auf weitere Nachrichten, d. h. kehrt
zum Schritt 902 zurück.
Falls die Nachricht ein gültiges
Format hat, extrahiert der DES im Schritt 906 den GUDI
und den Nachrichteninhalt aus der Nachricht. Anschließend überprüft er im Schritt 908 seine
internen Datenstrukturen, um alle Anwendungen zu kennzeichnen, die
auf diesen GUDI warten oder für
diesen blockiert sind. Falls keine Anwendungen warten oder blockiert
sind, wird die Nachricht im Schritt 910 gelöscht, und
der DES wartet weiterhin auf neue Rundsendenachrichten, d. h. kehrt
zum Schritt 902 zurück.
Falls eine Anwendung wartet, extrahiert das DES-Modul im Schritt 912 die Anwendungs-Rückrufbearbeitung
und benachrichtigt die Anwendung über die Nachricht. Alle blockierten Anwendungen
werden ebenfalls benachrichtigt. Nach der erfolgreichen Zustellung
der Nachricht zu allen wartenden und blockierten Anwendungen setzt der
DES das Warten auf weitere Nachrichten fort.
-
Obwohl
veranschaulichende Ausführungsformen
der vorliegenden Erfindung hierin mit Bezugnahme auf die begleitenden
Zeichnungen beschrieben wurden, muss klar sein, dass die Erfindung
nicht auf genau diese Ausführungsformen
begrenzt ist und dass ein Fachmann verschiedene andere Änderungen
daran vornehmen kann, ohne vom Umfang oder von der Wesensart der
Erfindung abzuweichen.