DE69331440T2 - Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem. - Google Patents

Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem.

Info

Publication number
DE69331440T2
DE69331440T2 DE69331440T DE69331440T DE69331440T2 DE 69331440 T2 DE69331440 T2 DE 69331440T2 DE 69331440 T DE69331440 T DE 69331440T DE 69331440 T DE69331440 T DE 69331440T DE 69331440 T2 DE69331440 T2 DE 69331440T2
Authority
DE
Germany
Prior art keywords
client
server
class
computers
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69331440T
Other languages
English (en)
Other versions
DE69331440D1 (de
Inventor
J. Davidson
Michael T. Kelley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of DE69331440D1 publication Critical patent/DE69331440D1/de
Application granted granted Critical
Publication of DE69331440T2 publication Critical patent/DE69331440T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

    Hintergrund der Erfindung 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf verteilte Computersysteme und bezieht sich insbesondere auf die Verwendung von Fernprozeduraufrufmechanismen in verteilten Computersystemen.
  • 2. Beschreibung des Stands der Technik
  • In einem verteilten Computersystem kann der Wirkungsgrad durch Aufteilen von Resourcen (z. B. eines Dateisystems) unter zahlreichen Rechnern in dem System verbessert werden. Außerdem können in solch einem System mehrere Rechner zusammenwirkend verwendet werden, um eine gemeinsame Aufgabe durchzuführen. Eine Anzahl von Kommunikationsparadigmen sind entwickelt worden, um ein Netzwerk von Rechnern zu strukturieren, um diesen Rechnern zu erlauben, zusammenwirkend zu arbeiten oder Resourcen zu teilen bzw. gemeinsam zu benutzen. Unter diesen Paradigmen befindet sich das "Client-Server"-Modell. Bei dem Client-Server-Modell sind ein oder mehrere Rechner (die "Server") damit betraut, Dienste bereitzustellen, welche andere Rechner (die "Clients") in dem verteilten Rechnersystem anfordern können, entweder durch Weiterreichen von Nachrichten an die Server oder durch Anstoßen von Fernprozeduraufrufen. In dem Client-Server-Paradigma leitet der Client eine Dienstanforderung ein, und der Server reagiert auf eine solche Dienstanforderung.
  • Ein Fernprozeduraufruf ist ein Mechanismus, durch welchen ein Programm, welches in einem Prozeßraum eines Computers bzw. Rechners abläuft, bewirkt, daß eine Prozedur in einem Prozeßraum eines anderen Rechners ("entfernter Rechner") ausgeführt wird. Bei einer Implementierung des Client-Server-Paradigmas bewirkt ein Client-Prozeß einen Fernprozeduraufruf, um den angeforderten Dienst in einem Server-Prozeß zu aktivieren. Eine günstige Implementierung des Server-Prozesses ist ein Daemon-Prozeß. Ein Daemon-Prozeß ist ein Rechnerprozeß, welcher Nachrichten von anderen Prozessen empfängt und welcher, einmal begonnen, in dem Rechner resident ist, bis eine "kill"-Nachricht von einem anderen Prozeß empfangen wird, ein Zeitgeber ausläuft, oder wenn alle erwarteten Nachrichten empfangen sind. Solch ein Daemon- Prozeß wird oft verwendet, um eine gemeinsam benutzte Ressource zu verwalten. Zum Beispiel empfängt ein Daemon- Prozeß für eine Druckerwarteschlange Nachrichten von Prozessen, welche die Verwendung von einem oder mehreren mit der Druckerwarteschlange in Verbindung stehenden Druckern erfordern. Um eine Druckoperation herbeizuführen, sendet ein Anforderungsprozeß eine Druckanforderung an den Daemon-Prozeß, welcher, sofern geeignet, die erforderlichen Druckprozesse vorbereiten und planen würde, um die Druckanforderungen zu erfüllen. Der Daemon-Prozeß sorgt für Effizienz, nachdem Aufgaben, welche druckerspezifische Informationen erfordern, dem Daemon-Prozeß zugewiesen und den anfordernden Prozessen abgenommen werden. Man sagt, daß der Daemon-Prozeß "schlafend" ist, während er auf eine Nachricht von einem anfordernden Prozeß wartet, und "wach" ist, wenn er seine zugewiesene Aufgabe ausführt.
  • Moderne Computerprogramme sind so konzipiert, daß sie die Vorteile von Modularisierung und Datenabstraktion ausnutzen. Modularisierung gestattet, daß ein komplexes System bei definierten funktionalen Schnittstellen in untereinander zusammenhängende Subsysteme unterteilt ist. Die Implementierungskomplexitäten aller Subsysteme sind daher von anderen Subsystemen abgeschirmt ("bezüglich dieser transparent") und können daher in hohem Maße unabhängig von anderen Subsystemen entwickelt und modifiziert werden.
  • Datenabstraktion vereinfacht die Aufgabe der Programmierung durch die Verwendung von Datenstrukturen hohen Niveaus, welche eine logische oder konzeptionelle Darstellung der Objekte sind, welche die Daten darstellen. Somit erlaubt Datenabstraktion dem Programmierer, Daten eher auf einem konzeptionellen bzw. begrifflichen Niveau zu verwalten, als Daten als eine Sammlung primitiver Datentypen zu verwalten.
  • Idealerweise sollte eine geeignete Modularisierung einem Anwendungsprogrammierer erlauben, Dienste des Betriebssystems anzustoßen, z. B. den Status eines Druckauftrags ohne Kenntnis der Feinheiten in Bezug darauf, wie der Dienst beschafft wird oder wo der Dienstanbieter lokalisiert ist, anzufordern. Außerdem sollte eine Unterstützung von Datenstrukturen hohen Niveaus bereitgestellt sein, um einem Anwendungsprogramm zu erlauben, eine Schnittstelle zu einem anderen Programm zu bilden, ohne die Datenstrukturen hohen Niveaus des Anwendungsprogramms in Primitive niedrigeren Niveaus zu zerlegen.
  • Im Gegensatz zu den Zielen von Datenabstraktion und Modularisierung sind, auch wenn verteilte Rechnersysteme in großem Umfang verwendet worden sind, Fernprozeduraufrufe in sprachunabhängigen Rahmenwerken implementiert. Infolgedessen können nur Datenstrukturen vergleichsweise niedrigen Niveaus zwischen den in dem Fernprozeduraufruf involvierten Computerprozessen weitergereicht werden, was vom Anwendungsprogrammmierer verlangt, ein verteiltes Objekt speziell zu behandeln. Solche Erfordernisse bringen eine Modularisierung zu Fall.
  • Ferner ist, da ein geeigneter Mechanismus zum Kommunizieren von Datenstrukturen hohen Niveaus nicht verfügbar ist, die Datenstruktur eines Anwendungsprogramms oft in dem Anwendungsprogrammcode explizit zerlegt, um die zum Kommunizieren von Daten über Maschinengrenzen hinweg notwendigen Datenstrukturen niedrigen Niveaus zu erzeugen. Die Übertragbarkeit und Zuverlässigkeit solcher Anwendungsprogramme werden beeinträchtigt.
  • Daher ist ein Mechanismus eines hohen Abstraktionsgrad erwünscht, um Anwendungsprogramme davor zu bewahren, daß sie sich für Fernprozeduraufrufe vorbereiten müssen. Zum Beispiel sollten Fernprozeduraufrufe für den Anwendungsprogrammierer transparent gemacht werden. Das heißt, der Mechanismus sollte gestatten, daß ein Anwendungsprogramm ohne Kenntnis oder Erfordernis, daß bestimmte Datenstrukturen des Anwendungsprogramms auf durch eine entfernte Maschine gesteuerte Ressourcen implementiert werden oder von ihnen abhängig sein müssen, geschrieben wird.
  • Weitere Informationen bezüglich des Stands der Technik können in EP-A-474339 gefunden werden, welche sich auf Verfahren und Vorrichtung zum Bereitstellen einer Client-Schnittstelle für einen objektorientierten Aufruf einer Anwendung bezieht. In Übereinstimmung mit der Lehre dieser EP-Veröffentlichung umfaßt in einem Datenverarbeitungsnetzwerk, welches:
  • - eine Mehrzahl von Datenverarbeitungsplattformen zum Ausführen von Anwendungen, und
  • - eine Klassendatenbank mit Abschnitten, welche für alle der Datenverarbeitungsplattformen zugreifbar ist, aufweist, wobei die Klassendatenbank:
  • 1) eine Mehrzahl von Methodeneinträgen, von denen jeder eine Referenz auf einen Mechanismus zum Aufrufen einer Entsprechenden der auf einer Server-Datenverarbeitungsplattform auszuführenden Anwendung enthält, und
  • 2) eine Mehrzahl von Klasseneinträgen, von denen jeder Informationen enthält, welche eine entsprechende Gruppe der Methodeneinträge identifizieren und eine unterschiedliche, eindeutig identifizierbare Klasse identifizieren, wobei jede der Klassen durch einen unterschiedlichen Satz von Instanzen referenziert wird, wobei Instanzen Datenfelder sind, welche durch die Anwendungen manipuliert werden können oder auf welche von diesen zugegriffen werden kann, und alle die Instanzen in jedem Satz gemeinsam benutzte Eigenschaften aufweisen,
  • enthält, ein Prozeß eines Aufrufens einer Anwendung, welche auf der Server-Datenverarbeitungsplattform auszuführen ist, von einer Client-Anwendung, welche auf einer Client-Datenverarbeitungsplattform abläuft, die durch die Client-Datenverarbeitungsplattform ausgeführten Schritte:
  • 1) Empfangen einer Nachricht von der Client-Anwendung für die Durchführung einer eine erste Instanz involvierenden Datenverarbeitungsoperation;
  • 2) Zugreifen auf die Klassendatenbank unter Verwendung der durch die erste Instanz referenzierten Klasse und der empfangenen Nachricht, um einen ersten Methodeneintrag und einen entsprechenden Mechanismus zum Aufrufen einer Server-Anwendung auszuwählen; und 3) Auswählen der Server-Datenverarbeitungsplattform, um die Server-Anwendung auszuführen, aus den Datenverarbeitungsplattformen.
  • Zusammenfassung der Erfindung
  • In Übereinstimmung mit der Erfindung werden die zuvor erwähnten Aufgaben durch die Struktur des unabhängigen Anspruchs 1 wie auch das entsprechende Verfahren des unabhängigen Anspruchs 2 erreicht. Bevorzugte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen definiert.
  • In Übereinstimmung mit der vorliegenden Erfindung wird eine Fernprozeduraufrufstruktur und ein -verfahren, welche Datenstrukturen hohen Niveaus unterstützen, durch die Verwendung einer gemeinsamen Datenstruktur oder Klasse ("Basis"-Klasse) bereitgestellt. Durch Verwenden der gemeinsamen Datenstruktur, um ein verteiltes oder gemeinsam benutztes Objekt abzuleiten, kann ein Vorprozessor aufgebaut sein, um automatisch sowohl Client- als auch Server-Stub-Routinen für einen Fernprozeduraufruf zu erzeugen. Ein Anwendungsprogramm, welches die Server-Routinen aufruft, kann an die Server-Routine Daten hohen Niveaus in der gleichen Weise übergeben, wie sie die gleichen Datenstrukturen an eine lokale Routine übergibt.
  • In einer Ausführungsform der vorliegenden Erfindung wird der Server als ein Daemon-Prozeß zur Systeminitialisierungszeit erzeugt. Der Server erzeugt ein Fernprozeduraufruf-Serverobjekt ("RpcServer"), welches ein oder mehrere Fernprozeduraufruf-Clientobjekte ("RpcClients") unterbringt. Ein in dem Client erzeugter RpcClient schafft einen Kommunikationskanal zwischen dem RpcServer auf dem Server und dem Client. Außerdem wird ein RpcClient auch auf dem Server erzeugt, um eine asynchrone Kommunikation zwischen dem Server und dem Client bereitzustellen.
  • Wenn ein RpcClient in dem Client erzeugt wird, wird ein "Manifest" an den RpcServer gesendet, welcher durch Senden seines eigenen Manifests an den RpcClient antwortet. Ein Manifest enthält Klassen-Metainformationen jeder Klasse in dem entsprechenden Server oder Client. Solche Klassen-Metainformationen enthalten für jede Klasse: (i) einen "Typencode", welcher die Klasse identifiziert, (ii) den Klassennamen, (iii) die Anzahl von Basisklassen, (iv) die Namen aller Basisklassen, sofern vorhanden, von welchen die Klasse abgeleitet ist. Außerdem sieht das Manifest für jedes geteilte Objekt auch vor: (i) den Typencode des gemeinsam benutzten Objekts, und (ii) einen Index in eine Liste gemeinsam benutzter Objekte in der Umgebung des Manifestsenders, wobei eine solche Liste für jedes gemeinsam benutzte Objekt einen Zeiger zu dem gemeinsam benutzten Objekt enthält.
  • Ein verteiltes oder gemeinam benutztes Objekt ist durch die Kombination eines in dem Server implementierten Stammobjekts ("Master") und eines oder mehrerer in dem Client implementierten abhängigen Objekts ("Slave") implementiert. Sowohl der Master als auch der Slave sind von der gleichen gemeinsamen Basisklasse abgeleitet. Um eine Übereinstimmung zwischen dem Master und jedem seiner Slaves aufrechtzuerhalten, wird, nachdem sich der Master und seine Slaves in unterschiedlichen Speicherräumen befinden, der Master mit einem Schlüssel, um einen Fernprozeduraufruf zu gestatten, ausgestattet, um einen Zeiger zu dem Slave in dem Speicherraum des Slaves zu erhalten, und jeder Slave ist mit einem Schlüssel zu dem Master in dem Speicherraum des Masters ausgestattet. Somit kann ein Fernprozeduraufruf daraufhin, daß das entfernte Objekt nur einen Schlüssel zu dem entfernten Objekt weiterreicht, arbeiten.
  • Die vorliegende Erfindung bewahrt die Semantik lokaler Prozeduraufrufe durch das Erfordernis, daß der Slave auf den Rücksprung des Fernprozeduraufrufs wartet. Die Semantik lokaler Prozeduraufrufe wird auch durch einen Fehlerbehandlungsmechanismus bewahrt, welcher (i) Ausnahmen in dem Speicherraum des Servers fängt, (ii) die Ausnahme an den Client zurückreicht, wobei (iii) der Client wiederum die Ausnahme zur Behandlung an das geeignete Programmniveau zurückreicht. In dem Anwendungsprogramm erscheint die entfernte Ausnahme nicht anders als eine Ausnahme, welche durch eine lokal ausgeführte Prozedur erzeugt wird.
  • In einer Ausführungsform werden RpcClients auch in dem Server erzeugt, um dem Server zu gestatten, mit Slaves eines Masterobjekts zu kommunizieren. In dieser Ausführungsform werden Nachrichtendaemonen zum Aussenden von Nachrichten an die Slaves durch den Server erzeugt. Jeder Slave liefert dem Master einen Schlüssel, welcher zur Übersetzung in einen Zeiger zu dem Slave durch den RpcClient des Servers dem Client präsentiert werden kann. Dieser Zeiger zu dem Slave kann verwendet werden, um eine Methode für den Slave aufzurufen, um die Nachricht von dem Nachrichtendaemon zu empfangen.
  • Ferner erzeugt in Übereinstimmung mit der vorliegenden Erfindung ein automatisches Programm sowohl Client- als auch Server-Stub-Routinen zum Aufrufen einer Methode in einem verteilten Objekt.
  • Weil die vorliegende Erfindung eine Unterstützung für verteilte Objekte in dem Kontext einer Datenstruktur vergleichsweise hohen Niveaus wie etwa einer C++-Klasse vorsieht und die Semantik lokaler Aufrufe bewahrt, können verteilte Objekt in einer für den Anwendungsprogrammierer transparenten Weise implementiert werden, wodurch Robustheit und Wartbarkeit der verteilten Objekte verbessert werden. Die vorliegende Anwendung vereinfacht Anwendungsprogramme, welche verwendet werden, um ein verteiltes Computersystem zu steuern.
  • Die vorliegende Erfindung wird unter Berücksichtigung der nachstehenden genauen Beschreibung und der begleitenden Zeichnungen besser verstanden werden.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 zeigt die Deklarationen der Klassen SharedThang, SharedThangId und RemoteId in einer Ausführungsform der vorliegenden Erfindung.
  • Fig. 2 ist ein Blockdiagramm, welches die Prozeßräume eines Server-Prozesses und eines Client-Prozesses in einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Fig. 3a ist ein Blockdiagramm, welches die beim Erzeugen eines Vererbungsbaums involvierten Schritte unter Verwendung eines Makros GIFTS_DECLARE und eines Programms GenType zeigt.
  • Fig. 3b ist ein Protokoll einer Skriptdatei chomp.cpp, welches die _magic_ -Symbole, welche ein Programm GenType verwendet, um einen Vererbungsbaum bereitzustellen, extrahiert, in Übereinstimmung mit der vorliegenden Erfindung.
  • Fig. 4a ist ein Blockdiagramm, welches ein Programm, welches einen Daemon-Prozeß Sectd implementiert, veranschaulicht.
  • Fig. 4b ist ein Protokoll eines Programmsegments Sectd.C, welches in einem Server-Prozeß Sectd der vorliegenden Ausführungsform ausgeführt wird.
  • Fig. 4c ist ein Protokoll einer Routine SectdProg_1, welche durch einen RPC-Mechanismus 204 aufgerufen wird, um eine Prozedur in Sectd aufzurufen.
  • Fig. 5 ist ein Blockdiagramm, welches die Erzeugung eines Objekts der Klasse RpcServer veranschaulicht, welches verwendet wird, um eine Kommunikation zwischen dem Prozeß Sectd der vorliegenden Ausführungsform und seinen Clients bereitzustellen.
  • Fig. 6a und Fig. 6b sind jeweils ein Blockdiagramm des Programmcodes, welcher ein Objekt der Klasse SectClientController implementiert, und ein Protokoll des Programmcodes.
  • Fig. 7a und 7b sind jeweils die Blockdiagramme der Stub-Routinen SectController::startTester und rStartTester, welche durch das Skript oz für die Master- und Slave-Objekte erzeugt werden, welches die verteilte Klasse SectController in SectClientController und Sectd implementiert.
  • Fig. 8 ist der Quellcode in der Datei SectController.C für die tatsächliche Implementierung der Klasse SectController in Sectd.
  • Fig. 9a und 9b sind jeweils die Stub-Routinen-Programmsegmente SectController::startTester und rstartTester, welche durch das Script oz über die Klasse StartTester erzeugt werden, wie in den Blockdiagrammen von Fig. 7a und 7b veranschaulicht.
  • Fig. 10 ist ein Blockdiagramm, welches eine Skript- Datei oz zum Erzeugen von Stub-Routinen für Client- und Server-Prozesse in Übereinstimmung mit der vorliegenden Erfindung veranschaulicht.
  • Fig. 11 ist ein Beispiel einer Spezifierungsdatei zur Eingabe in das Skript oz von Fig. 10.
  • Genaue Beschreibung der bevorzugten Ausführungsformen
  • In dieser detaillierten Beschreibung wird, obwohl die vorliegende Erfindung in beliebigen verteilten Computersystemen unter Verwendung einer beliebigen Programmiersprache implementiert werden kann, eine Ausführungsform der vorliegenden Erfindung unter Verwendung der Programmiersprache "C++" beschrieben. Der Leser sei auf An Annotated C++ Reference Manual von Ellis und Stroustrup, erschienen bei Addison and Wesley, (1990), bezüglich einer Erläuterung der Programmiersprache C++ verwiesen. In dieser Ausführungsform wird auch ein wohlbekanntes Textverarbeitungsprogramm "awk", welches in dem Betriebssystem UNIX läuft, verwendet, um Programmsegmente zu erzeugen. Die Verwendung von awk und anderer ähnlicher Textverarbeitungsprogramme ist für den Fachmann wohlbekannt. Eine Beschreibung von awk kann in Sektion 1 von SunOS Reference Manual, Ausgabe 4.1, (1990), erhältlich bei Sun Microsystems, Mountain View, CA, gefunden werden.
  • In der nachfolgenden Beschreibung und den begleitenden Zeichnungen sind Namen unter der Programmiersprache C++, welche in den Namen überladener Funktionen und Operatoren beteiligt sind, austauschbar mit ihren äquivalenten signaturkodierten Namen der Programmiersprache C ("verstümmelte Namen") in Übereinstimmung mit den sogenannten "Namensverstümmelungsregeln" verwendet. Der Fachmann wird die Übereinstimmung zwischen verstümmelten und unverstümmelten Namen verstehen, so daß eine detaillierte Beschreibung einer Namensverstümmelung weggelassen wird. Eine Erläuterung der Namensverstümmelungsregeln kann auch in An Annotated C++ Reference Manual gefunden werden.
  • Die vorliegende Erfindung ist auf alle verteilte Rechnersysteme, welche Fernprozeduraufrufe unterstützen, anwendbar. Ein Beispiel eines solchen Systems ist ein Rechnernetzwerk unter NFS (Network File System), welches von Sun Microsystems, Mountain View, CA, erhältlich ist. Eine Anwendung der vorliegenden Erfindung kann in dem Produkt Gifts von Tandem Computers, Inc. aus Cupertino, CA, gefunden werden. Unter Gifts werden Anwendungsprogramme verwendet, um Hardwarekomponenten entfernter Maschinen zu steuern, zu diagnostizieren und zu konfigurieren. In einer fehlertoleranten Umgebung gestattet die vorliegende Erfindung, daß das Produkt Gifts Hardware steuert, wobei Komponenten vom Dienst hinzugefügt und entfernt werden und Hardware ohne physikalischen Zugriff und Dienstunterbrechung rekonfiguriert wird.
  • In der nachfolgenden Beschreibung ist ein "Objekt" eine Datenstruktur, welche typischerweise "Attribute" und "Methoden" aufweist. Ein Attribut kann eine Datenstruktur sein, welche mit dem Objekt verbunden ist. Ein Beispiel einer solchen Datenstruktur ist ein Feld von Werten (z. B. Ganzzahlen) oder eine Zustandsvariable, welche beim Darstellen von Zustandsinformationen des Objekts nützlich ist. Eine Methode weist eine oder mehrere Anweisungen auf, welche beim Bewirken mit dem Objekt verbundener, sinnvoller Vorgänge nützlich sind. Eine Methode wird, wenn sie in einer prozeduralen Programmiersprache implementiert ist, typischerweise durch entweder einen Operator oder eine Prozedur dargestellt.
  • Zusätzlich gehört jedes Objekt zu einer oder mehreren Klassen. Alle Objekte innerhalb einer Klasse sind darin gleich, daß jedes Objekt den gleichen Satz von Attributen und Methoden besitzt. Jede Klasse von Objekten kann verwendet werden, um andere Klassen von Objekten zu definieren. Eine abgeleitete Klasse erbt von einer "Eltern"- Klasse die Attribute und Methoden der Elternklasse und enthält zusätzlich Attribute und Methoden, welche für die abgeleitete Klasse definiert oder bezüglich der Elternklasse modifiziert sind. In dieser Hierarchie wird eine Klasse, von welcher eine oder mehrere andere Klassen abgeleitet sind, eine "Basis"-Klasse genannt.
  • Eine Ausführungsform der vorliegenden Erfindung sieht eine Basisklasse SharedThang vor, von welcher alle verteilten Objekte abzuleiten sind. Die Klassendefinition von SharedThang und ihre Implementierung werden in den Dateien SharedThang.C und SharedThang.h gefunden. Die Klasse SharedThang besitzt Attribute (i) stid, welches ein Zeiger zu einem Objekt der Klasse SharedThangId ist, und (ii) commonType, welches ein Zeiger zu einem Objekt der Klasse ClassInfo ist. Das Attribut stid zeigt zu einem SharedThangld-Objekt ("SharedThangld"), welches auf eine Liste aller gemeinsam benutzter Objekte ("shared object list") in dem aktuellen Prozeßraum zugreift. Für jedes gemeinsam benutzte Objekt pflegt, falls das gemeinsam benutzte Objekt ein Master ist, sein SharedThangId eine Liste der Slaves des gemeinsam benutzten Objekts ("Slaves"). Ersatzweise hält SharedThangId die Identität des Masters des gemeinsam benutzten Objekts ("Master"), wenn das gemeinsam benutzte Objekt ein Slave ist.
  • Ein ClassInfo-Objekt besitzt die Attribute (i) type, welches ein die Klasse ("Objektklasse") identifizierender "Typencode" ist, (ii) name, welches eine die Objektklasse identifizierende Zeichenkette ist, (iii) nbases, welches die Anzahl der Basisklassen ist, soweit vorhanden, von welcher die Objektklasse abstammt, (iv) bases, welches ein Feld von Zeigern ist, von denen jeder zu einem Objekt der Klasse ClassInfo zeigt, wobei jedes solche Objekt einer der Basisklassen der Objektklasse entspricht, und (v) xdr, welches ein Zeiger zu einer Routine ist, welche zum Kodieren und Dekodieren eines Objekts der Objektklasse zu und von einem neutralen, zur Übertragung zwischen Computern durch einen Datenpuffer der Klasse XdrBuffer geeigneten Datenformat vorgesehen ist.
  • Zusätzlich enthält die Klasse ClassInfo die Methoden (i) CastDown, welche verwendet werden kann, um einen Zeiger eines Objekts mit einem Zeiger zu einem anderen in einer Wurzelklasse enthaltenen Objekt auszutauschen, (ii) typeofoder get, welche eine der Objektklasse eines Objekts entsprechende ClassInfo-Struktur zurückgibt, (iii) nameof, welche den Namen der Objektklasse des Objekts zurückgibt, und (iv) traverse, welche jeden Knoten in einem Vererbungsbaum besucht (siehe unten). Die Klassendefinition von ClassInfo und ihre Implementierung werden in ClassInfo.h und ClassInfo.C gefunden. In der vorliegenden Ausführungsform wird ein Objekt der Klasse ClassInfo für (i) jeden unterstützten Datentyp (z. B. Ganzzahlen, Gleitkommazahlen etc.), (ii) jede deklarierte Klasse und (iii) den mit jeder deklarierten Klasse verbundenen Zeigertyp erzeugt.
  • In SharedThangId werden die slaves und master jeweils durch ein Objekt der Klasse RemoteId darstellt. Jedes RemoteId identifiziert den Gegenpart (oder "Zwilling") eines gemeinsam benutzten Objekts in der entfernten Umgebung. Zum Beispiel weist ein Zwilling eines gemeinsam benutzten Objekts in dem Server (d. h. ein Master) eine Liste slaves von RemoteId-Objekten auf, wobei jedes RemoteId-Objekt einem der Slaves des Masters entspricht. Umgekehrt weist ein Zwilling eines gemeinsam benutzten Objekts in einem Client (d. h. ein Slave) ein RemoteId-Objekt master auf, welches dem Master des Slaves entspricht. Jedes RemoteId-Objekt weist einen Zeiger zu einem Objekt der Klasse RpcClient und einen Index in eine Liste gemeinsam benutzter Objekte einer SharedThangId auf. Nachdem die SharedThangId's des Servers und des Clients typischerweise unterschiedliche Listen gemeinsam benutzter Objekte aufweisen, weist dasselbe gemeinsam benutzte Objekt unterschiedliche Indizes in der Liste gemeinsam benutzter Objekte des Clients und des Servers auf. Der RpcClient identifiziert einen Kommunikationskanal zwischen einem Master und einem Slave und wird nachstehend genauer erläutert.
  • Fig. 1 stellt die Deklarationen der Klassen SharedThang, SharedThangId und RemoteId bereit. Die Klasse SharedThang liefert die Methoden: (i) id(), welche das Attribut stid zurückgibt, (ii) masterid(), welche die RemoteId des Masters eines SharedThang zurückgibt, und (iii) getCommonType(), welche commonType zurückgibt, was ein Objekt der Klasse ClassInfo ist. Die Klasse SharedThangId liefert die Methoden addClient und addMaster zum Hinzufügen jeweils einer Master-Liste slaves einer einem Slave entsprechenden RemoteId und zum Hinzufügen einer dem Master entsprechenden RemoteId in dem Slave.
  • In der vorliegenden Ausführungsform wird ein Fernprozeduraufruf durch Ausführen einer RPC-Funktion execute durchgeführt, welche an den RPC-Mechanismus eine "Nachricht" und eine Prozedurnummer übergibt. Die Prozedurnummer identifiziert die Verbindung zwischen den kommunizierenden Programmen, und die Nachricht ist in einem Puffer ("message") der Klasse XdrBuffer enthalten. Die Definition und Implementierung von XdrBuffer sind in den Dateien XdrBuffer.h und XdrBuffer.C enthalten. Um ein von der Klasse Thang (von welcher sich SharedThang ableitet) abgeleitetes Objekt in eine Nachricht zu kodieren oder von einer Nachricht zu dekodieren, wird eine Methode xdr in dem ClassInfo-Objekt der Klasse des Objekts durch den Klassenimplementierer bereitgestellt.
  • In einer Nachricht der vorliegenden Ausführungsform besitzt ein kodiertes Objekt die Felder: (i) byte_count, welches die Größe in Bytes des kodierten Objekts ist, und (ii) eine Liste von subrecords. Jeder subrecord besitzt die Felder: (i) type_tag, welches der Typencode eines enthaltenen Objekts ist, (ii) byte_count, welches die Größe in Bytes des subrecords ist, (iii) primitives, welches eine Liste primitiver Datenstrukturen ist, und (iv) eine Liste von subrecords.
  • Fig. 2 veranschaulicht die Prozeßräume einer Servermaschine und einer Clientmaschine in einer Ausführungsform der vorliegenden Erfindung. In der Servermaschine 200 ist ein RPC-Mechanismus 204 ein herkömmliches Anwendungsprogramm, welches für andere Anwendungsprogramme eine Fernprozeduraufrufschnittstelle bereitstellt, um auf die zwischenmaschinellen Kommunikationsdienste niedrigen Niveaus im Kernel 250 der Servermaschine 200 zuzugreifen. In analoger Weise stellt ein Rpc-Mechanismus 203 eine herkömmliche Anwendungsprogrammschnittstelle für andere Anwendungsprogramme bereit, um auf die zwischenmaschinellen Kommunikationsdienste des Kernels 251 zuzugreifen. Typischerweise sind die Kopfdateien des Rpc-Mechanismus, wie die Rpc-Mechanismen, 203 oder 204, mit einem Anwendungsprogramm kompiliert, um eine herkömmliche Programmschnittstelle bereitzustellen. Kernel 250 und 251 steuern die zugrundeliegende physikalische Verbindung, z. B. ein Netzwerk oder Busprotokoll zwischen den miteinander verbundenen Rechnern. In der vorliegenden Ausführungsform können die miteinander verbundenen Rechner von sehr unterschiedlicher Architektur sein.
  • Für jedes in der vorliegenden Ausführungsform implementierte verteilte Objekt wird ein "Master" des verteilten Objekts in einem Serverprozeß erzeugt, repräsentiert durch Server 206, um den tatsächlichen lokalen Prozeduraufruf anzustoßen. Um auf eine Methode in den Masterobjekt zuzugreifen, ist es erforderlich, den Schlüssel, welcher ein Index in die Liste gemeinsam benutzter Objekte des Servers 206 (d. h. die Liste aller SharedThang's im Server 206) gegen einen Zeiger zu dem Masterobjekt im Speicherraum des Servers 206 auszutauschen. Nachdem ein Zeiger in der Liste gemeinsam benutzter Objekte ein Zeiger zu einem in dem Master enthaltenen Objekt (Klasse SharedThang) ist, muß, falls es notwendig ist, eine Memberfunktion eines anderen in dem Master enthaltenen Objekts (etwa Klasse foo, welche von Klasse SharedThang abgeleitet ist) zu aktivieren, der Zeiger zu SharedThang von der Liste gemeinsam benutzter Objekte gegen einen Zeiger zu dem enthaltenen foo-Objekt ausgetauscht werden. Dieser Prozeß, welcher "Downcasting" genannt wird, wird durch die Memberfunktion CastDown der Klasse ClassInfo durchgeführt. Um CastDown zu implementieren, ist es erforderlich, die Klassenableitungsgeschichte der Klassen aller gemeinsam benutzter Objekte zu kennen. In der vorliegenden Ausführungsform wird die Ableitungsgeschichte bereitgestellt durch Verwenden (i) eines Makros GIFTS_DECLARE, um die Deklarationen jeder Klasse gemeinsam benutzter Objekte zu modifizieren, (ii) um aus dem durch den Vorprozessor cpp erzeugten Code eine Liste gemeinsam benutzter Objektklassen zu extrahieren, und (iii) Bereitstellen einer solchen Liste an ein selbständiges Programm GenType, um einen Code in der Sprache C zu generieren, welcher kompiliert werden kann, um einen Laufzeit-Vererbungsbaum auszubilden. Dieser Prozeß wird durch das Blockdiagramm von Fig. 3a veranschaulicht.
  • Wie in Fig. 3a gezeigt, wird bei Schritt 301 ein Makro GIFTS_DECLARE bereitgestellt, um in die Deklaration jeder von der Klasse Thang abgeleiteten Klasse ("Objektklasse") die Deklarationen einzufügen: (i) einer Memberfunktion _typeof(), (ii) einer Anzahl von Symbolen, wobei jedes Symbol die Kettung der Zeichenkette "_magic_" und den Namen einer Basisklasse, von welcher sich die Objektklasse ableitet, bereitstellt, und (iii) einer Zeichenkette _nameof, welcher der Name der Objektklasse zugewiesen ist. Als ein Ergebnis des Makros GIFTS_DECLARE wird die Kompilierung dieser zusätzlichen Deklarationen in der Symboltabelle jeder Klasse eine Anzahl von Symbolen enthalten, welchen die Zeichenkette "_magic_" vorangestellt ist. Diese Symbole werden in der vorliegenden Erfindung verwendet, um die Ableitungsmöglichkeiten jeder von der Klasse Thang abgeleiteten Klasse zu kodieren. Das Makro GIFTS_DECLARE ist in macros.h aufgelistet.
  • In Schritt 302 extrahiert eine "Skript"-Datei chomp.cpp unter Verwendung eines Textverarbeitungsdienstprogramms egrep aus den Symboltabellen kompilierter Objektdateien die eingefügten Symbole, welchen die Zeichenkette "_magic_" vorangestellt ist. Diese Symbole werden dann dem selbständigen Programm GenType zugeführt (Schritt 303 zugeführt), welches in UNIX von einem Befehlszeileninterpreter oder einer "Shell" aus läuft. Diese Symbole gestatten GenType, einen Vererbungsbaum bezüglich aller von Thang abgeleiteten Klassen von Objekten aufzubauen. Chomp.cpp ist in Fig. 3b aufgelistet. Der Vererbungsbaum enthält (1) ein Feld list, welches ein Feld ist, welches die ClassInfo-Strukturen entsprechend allen Klassen, Zeigern zu Klassen und unterstützten primitiven Datentypen enthält; und (ii) für jede Klasse ("Objektklasse") gemeinsam benutzter Objekte ein Feld von Zeigern zu ClassInfo, wobei jedes Element des Feldes zu einer Basisklasse zeigt, von welcher die Objektklasse abgeleitet ist.
  • GenType gibt den in Schritt 303 in C-Code aufgebauten Vererbungsbaum aus, welcher kompiliert wird, um den Vererbungsbaum als eine statische Datenstruktur sowohl im Server- als auch Client-Adreßraum zu erzeugen. Zusätzlich generiert GenType auch den Code, um die _ tpyeof()-Memberfunktion für jede Klasse zu implementieren. Die _typeof()-Funktion greift auf die list-Datenstruktur zu, um den Typencode eines Objekts wiederzugewinnen. Der Quellcode für GenType ist als GenType.C bereitgestellt.
  • Wie zuvor diskutiert, ist, unter der Voraussetzung eines Zeigers zu einem Thang-Objekt, welches in einem größeren Objekt enthalten ist, der Zweck der ClassInfo- Memberfunktion CastDown, einen Zeiger zu entweder einem anderen in dem größeren Objekt enthaltenen Objekt oder dem größeren Objekt selbst wiederzugewinnen. Die für das Downcasten vorgesehene Klasse wird CastDown mit ihrem Namen bereitgestellt. Um einen Zeiger zu dem größeren Objekt zu erhalten, wird eine Funktion root aufgerufen, um den Zeiger "root" des größeren Objekts zurückzugeben. Falls das Downcasten sich auf ein in dem größeren Objekt enthaltenes Objekt bezieht, durchquert CastDown den Vererbungsbaum von der ClassInfo von "root", zurückgegeben von der ClassInfo-Memberfunktion get, in einem Versuch, die vorgesehene Klasse zu erreichen. Falls eine zu dem Namen der vorgesehenen Klasse passende Klasse erreicht ist, berechnet CastDown einen Zeiger zu dem größeren Objekt unter Verwendung des Offsets zwischen der Destruktorfunktion und dem this-Zeiger in jedem in dem Ableitungsweg eingreifenden Objekt. (In der Programmiersprache C++ ist jedes Objekt mit einem Zeiger this ausgestattet, welcher zu dem Objekt selbst zeigt.) Falls der berechnete Zeiger zu dem größeren Objekt zu dem von root zurückgegebenen Zeiger paßt, ist das Downcasten erfolgreich, und der Zeiger zu dem in der angestrebten Klasse enthaltenen Objekt wird zurückgegeben. Anderenfalls wird der Vererbungsbaum weiter durchquert nach einem anderen Vererbungsweg, welcher die vorgesehene Klasse erreicht. Diese Prozedur ist erforderlich, da die Sprache C++ mehrfache Vererbungswege erlaubt.
  • Server 206 ist normalerweise als ein Daemon implementiert. Fig. 4a ist ein Blockdiagramm des Programms, welches eine Daemon Sectd (System Exercise and Confidence Test Daemon) implementiert. Daemon Sectd beherbergt ein Master-Objekt SectController. Sectd und SectController sind jeweils durch die Programmsegmente Sectd.C und SectController.C implementiert, welche in Fig. 4b und 8 aufgelistet sind. Wie in Fig. 4a gezeigt, wird Sectd als ein Anwendungsprogram (d. h. Server 206) unter Verwendung der Benutzerschnittstelle Gifts gestartet (Schritt 401). Sectd erzeugt dann den Master für das verteilte Objekt SectController (Schritt 402) durch Aufrufen der "Server"-seitigen Konstruktorroutine. Wie in dem Programmsegment Sectcontroller.C von Fig. 8 gezeigt, ist eine Methode startTester die einzige in Sectd implementierte Methode der Klasse SectController. Im allgemeinen sind Methoden eines gemeinsam benutzten Objekts nur auf der Serverseite implementiert.
  • Die Konstruktorroutine (Serverseite) für SectController gibt einen Zeiger für das erzeugte SectController-Objekt zurück (Schritt 403). Um mit seinen Clients zu kommunizieren, erzeugt Sectd ein Kommunikationsserverobjekt RpcServer (Schritt 404). RpcServer wird verwendet, um Kommunikation zwischen RPC-Mechanismus 204 und Sectd zu filtern. Fig. 5 ist ein Blockdiagramm, welches eine Implementierung eines RpcServers veranschaulicht. RpcServer ist durch zwei Programmsegmente RpcServer.h und RpcServer.C implementiert. Nach Erzeugen des RpcServers geht Sectd schlafen, wobei es auf Dienstanforderungen von Client-Objekten wie etwa Client 207 der Client-Maschine 251 wartet. Der Fernprozeduraufrufmechanismus 204 ruft eine Routine SectdProg_1 (aufgelistet in Fig. 4c) auf, welche eine Routine in Sectd in Übereinstimmung mit einem von einem Client-Objekt empfangenen Handle aufruft.
  • Wie in Fig. 5 gezeigt, erzeugt Sect einen RpcServer durch Aufrufen der Konstruktorroutine eines RpcServer bei Schritt 501. Diese Konstruktorroutine (i) ruft eine Systemroutine svc_register auf, um einen Transportniveaudienst zum Kommunizieren zwischen RPC-Mechanismus 204 und Sectd zu erzeugen (Schritt 502), und (ii) registriert den RpcServer in dem Registerdienst des Netzwerks (Schritt 503). Der Registerdienst des Netzwerks stellt einen Nachschlagedienst in dem Netzwerk zum Lokalisieren von Programmen bereit. Das Register des Netzwerks empfängt einen Wirtsmaschinennamen, den Programmnamen und eine Version und gibt einen Handle an das angeforderte Programm zurück. Ein Eintrag in dem Netzwerkregisterdienst erlaubt einem entfernten Programm, in einem Fernprozeduraufruf unter Verwendung der Programmnummer auf den RpcServer zuzugreifen.
  • Für jede Methode des verteilten Objekts ist eine Stub-Routine in Sectd und jedem seiner Clients, wie etwa Client 207, vorgesehen. Somit sind, wie in Fig. 2 gezeigt, um einen Fernprozeduraufruf für die Methode StartTester von SectController vorzubereiten, "Stub"-Routinen 202 und 201 vorgesehen, um jeweils in Prozeßräumen von Sectd und Client 207 ausgeführt zu werden. Stub-Routinen 201 und 202 führen typischerweise das durch, was "Marshalling" und "Unmarshalling"-Operationen genannt wird. Marshalling bildet maschinenabhängige Datenstrukturen aus den formalen Parametern des Methodenaufrufs (z. B. Zeiger zu einem Feld) einer Maschine in eine "neutrale" Datenstruktur um, welche an die potentiell unterschiedliche Umgebung einer anderen Maschine übergeben werden kann. Unmarshalling bildet das neutrale, zwischen den Umgebungen ausgetauschte Format in maschinenabhängige Datenstrukturen ab. Wenn zum Beispiel ein Anwendungsprogramm 208 eine Client-Stub-Routine 201 mit einer Liste von Argumenten in maschinenabhängigen Datenstrukturen aufruft, führt die Client-Stub-Routine 201 das Marshalling durch und sendet die gemarshallten Argumente, üblicherweise in der Form einer zwischenprozessualen Nachricht, an RPC-Mechanismus 203. Der RPC-Mechanismus 203 und dessen Gegenstück, RPC-Mechanismus 204, fordert vom Kernel 251 Systemdienste (z. B. Anschlüsse und Protokolle) zum Kommunizieren über Maschinengrenzen hinweg an. Die durch RPC-Mechanismus 203 gesendeten gemarshallten Argumente werden durch RPC-Mechanismus 204 empfangen, welcher wiederum die gemarshallten Argumente an Sectd übergibt. Sectd, welcher ein Daemon-Prozeß ist, ruft eine Stub-Routine 202 auf, um die empfangenen Argumente zu unmarshallen. Die Stub-Routine 202 übergibt dann die ge-unmarshallten Argumente an die lokale Prozedur 205 (z. B. "startTester 14SectControllerFRUiRC5Twine") (Der Name dieses Programms ist ein Beispiel eines verstümmelten Namens. Der erste Teil des Namens, welcher vor dem "_" steht, ist der Name der C++-Memberfunktion, und der zweite Teil des Namens, welcher auf "_" folgt, ist der Signaturanteil. Der Signaturanteil kodiert die Parameterliste zu dieser Memberfunktion. Verstümmelte Namen erlauben eine Implementierung eines "Überladens" in der Programmiersprache C++ ohne Modifizieren der Sprache C. Ein C++- Programm wird, nachdem ein Vorprozessor cpp aus dem C++-Programm einen Quellcode in der Programmiersprache C generiert, typischerweise durch einen C-Compiler kompiliert), welche den
  • tatsächlich angeforderten Dienst der Methode StartTester implementiert. Ergebnisse, sofern vorhanden, werden von der lokalen Prozedur 205 an die Stub-Routine 202 zurückgegeben, welche die Ergebnisse zur Rückgabe an Client 207 marshallt. Rückgabe von Ergebnissen von Sectd an Client 207 folgt in umgekehrter Reihenfolge im wesentlichen dem Weg der gemarshallten Argumente. Stub-Routine 201 unmarshallt das Ergebnis, welches dann an Anwendungsprogramm 208 zurückgegeben wird. Es gibt keine Grenze bezüglich der Anzahl von Clients, wie etwa Client 207, welche Sectd bedienen kann.
  • Das Programmsegment für SectClientController, welches in SectClientController.c von Fig. 6b aufgelistet und in dem Blockdiagramm von Fig. 6a abstrahiert ist, ist ein Beispiel eines Teils eines Client-Prozesses, wie etwa Client 207, welches einen Fernprozeduraufruf bewerkstelligt.
  • Vor dem Herstellen irgendwelcher Fernprozeduraufrufe erzeugt SectClientController ein Objekt der Klasse RpcClient, um einen Kommunikationskanal zwischen ihm selbst und Sectd auszubilden (Schritt 601). Die Klasse RpcClient ist auch von der Klasse sharedThang abgeleitet. Eine Implementierung des RpcClient-Objekts und diesbezüglicher Funktionen werden in den Dateien RpcClient.h, RpcClient.c, RpcUtil.h, RpcUtil.h, Wrapper.h und Wrapper.c gefunden.
  • Wie in Fig. 6a gezeigt, stellt, wenn SectClientController ein RpcClient-Objekt erzeugt, eine Konstruktorroutine von RpcClient (SectClientControllerseitig) eine Anforderung an Systemdienste, um eine vorübergehende Programmnummer anzufordern, welche mit der Versionsnummer präsentiert wird, um einen Transportniveaudienst einzuleiten (Schritt 602). Dieser Transportniveaudienst wird als ein Server in SectClientController zum Empfangen von Nachrichten von dem RpcClient-Objekt von Sectd verwendet, was nachstehend diskutiert wird. (RpcClients von Sectd stellen einen Weg zum Kommunizieren von Statusinformationen von Master-Objekten in Sectd an die Clients von Sectd bereit, wodurch ein Rückrufmechanismus ausgebildet wird.) Somit agiert in Bezug auf von Sectd empfangenen Nachrichten SectClientController als ein Server. Dieser Transportniveaudienst wird mit dem Netzwerkregisterdienst registriert, um zuzulassen, daß Nachrichten von Sectd SectClientController erreichen (Schritt 603). Die Konstruktorroutine von RpcClient stellt dann einen Fernprozeduraufruf (Schritt 604) zu einer entfernten Routine rct_9RpcClientFPCcUlUlR8ManifestUlPC9RpcHandlePC7timeint erval ("rct") in Sectd (durch SectdProg_1, gezeigt in Fig. 4c) her. Der Fernprozeduraufruf an rct sendet an Sectd (i) die vorübergehende Programmnummer und Versionsnummer des Transportniveaudienstes, (ii) den Wirtsmaschinennamen von SectClientController, (iii) ein "Manifest" (siehe unten) von SectClientController (nachstehend erläutert) und (iv) den Index des RpcClient-Objekts in der geteilten Objektliste von SectClientController. Umgekehrt ruft ein Fernprozeduraufruf an rct, welcher in dem Programmsegment in Wrapper.C implementiert ist, in Schritt 605 die Konstruktorroutine (serverseitig) für RpcClient auf, um (i) das empfangene Manifest zu übersetzen, und (ii) weist zum Zwecke eines rückwärtigen Aufrufs als Master des RpcClient von Sectd dem Index in der Liste von Objekten von Sectd den RpcClient von SectClientController zu. Sectd erzeugt auch einen Nachrichten-Daemon ozmsgd (Schritt 606). Der Fernprozeduraufruf an rct gibt ein Manifest, welches die Information zu allen in Sectd implementierten Klassen einschließt, zurück. Der Nachrichten- Daemon ozmsgd ist als eine Einrichtung gedacht, um die Slaves eines Masters in Sectd "zurückzurufen", um die Slaves von entweder (i) einem asynchronen Zustandswechsel in dem Master, (ii) der Erzeugung eines neuen gemeinsam benutzten Objekts in Sectd, oder (iii) der Zerstörung eines gemeinsam benutzten Objekts in Sectd zu unterrichten.
  • In dem herkömmlichen Server-Client-Modell fordert ein Client durch Senden einer Nachricht an einen Server einen Dienst von dem Server an. Der Server bestätigt dann oder gibt, nachdem der angeforderte Dienst durchgeführt ist, ein Ergebnis zurück. In diesem herkömmlichen Modell leitet der Server keine Kommunikation mit dem Client ein. In der vorliegenden Ausführungsform jedoch ist es, da ein Master eines verteilten Objekts einen oder mehrere Clients bedient, manchmal notwendig, daß der Master des verteilten Objekts eine Zustandsänderung des Master-Objekts asynchron kommuniziert. Zu diesem Zweck ruft, in diesem Fall als Client agierend, der Daemon ozmsgd SectClientController und alle ähnlichen Clients von Sectd auf, um den Zustandswechsel des Master-Objekts und die Erzeugung oder Zerstörung eines gemeinsam benutzten Objekts, wie zuvor diskutiert, zu kommunizieren.
  • In der vorliegenden Ausführungsform enthält ein Manifest für jede bekannte Klasse Klassen-"Metainformation". Damit Slave- und Master-Objekte richtig angepaßt werden können, enthält eine solche Metainformation für jede Klasse (i) einen Typencode, welcher die Klasse identifiziert, (ii) den Namen der Klasse, (iii) die Anzahl von Basisklassen, sofern vorhanden, von welchen die Klasse abgeleitet ist, und (iv) die Namen solcher Basisklassen. Zusätzlich enthält ein Manifest für jedes gemeinsam benutzte Objekt in dem das Manifest liefernden Prozeß einen Typencode und den Index des gemeinsam benutzten Objekts in die Liste gemeinsam benutzter Objekte des sendenden Prozesses. Das Manifest wird aus der Struktur list aufgebaut, einem Teil des Vererbungsbaums, welcher durch zuvor beschriebenes GenType erzeugt wird. Die Definition und Implementierung des Klassenmanifests sind in den Dateien manifest.c und manifest.h bereitgestellt.
  • In der vorliegenden Ausführungsform stellt ein Systemdesigner für den Anwendungsprogrammierer alle zu verwendenden Systemobjekte bereit. Obwohl diese Systemobjekte verteilt oder lokal sein können, ist die Implementierung vor dem Anwendungsprogrammierer verborgen. Wenn die SectClientController-Klasse zuerst instanziiert wird, lokalisiert die Konstruktorroutine des SectClientController den Master-SectController von einer Liste gemeinsam benutzter Objekte des Masters, welche von dem von dem SectController empfangenen Manifest erzeugt wird (Schritt 607). Wie durch dieses Beispiel veranschaulicht, erfordert eine Verbindung zwischen einem Master und dem Slave nicht, daß Master- und Slave-Objekt von der gleichen Klasse sind. In dieser Ausführungsform wird Kompatibilität erreicht, nachdem SectClientController eine von SectController abgeleitete Klasse ist. Somit kann der gleiche SectController in Sectd verwendet werden, um eine Zahl von Vorrichtungen, welche zu von der SectController- Klasse abgeleiteten Klassen gehören, zu steuern. Um die Verbindung zu vervollständigen, fordert SectClientController ein "Join" mit dem Master-Objekt SectController in Sectd durch Herstellen eines Aufrufs an eine Funktion JoinWithMaster an (Schritt 608), wobei an JoinWithMaster übergeben wird: (i) ein Zeiger zu SectClientController, (ii) ein Handle Join_With_Slave_1, welcher eine Anweisung an JoinWithMaster darstellt, eine Routine JoinWithSlave aufzurufen, (iii) ein Zeiger zu dem RpcClient von SectClientcontroller, (iv) der Name der Basisklasse "SectController" und (v) ein Index master in die Liste gemeinsam benutzter Objekte von Sectd, wobei master einem SectController-Objekt in Sectd entspricht. Sowohl JoinWithMaster als auch JoinWithSlave sind in den Programmsegmenten der Daten RpcUtil.h und RpcUtil.c aufgelistet.
  • JoinWithMaster erhält das ClassInfo-Objekt, welches einer Klasse SectController entspricht. Das ClassInfo-Objekt wird durch Anwenden der typeof-Methode auf den Namen "SectController" zurückgegeben. Der Index master und der RpcClient werden dann durch die Memberfunktion addMaster von SharedThangId mit dem SectClientController-Objekt verbunden. Danach ruft ein Fernprozeduraufruf (Schritt 609), welcher den Handle Join_With_Slave_1 verwendet, durch SectdProgl die Funktion rjoinWithSlave_FP11SharedThangP9RpcClientUi ("rjoin") in Sectd auf, um einen Index von SectClientController in eine Liste gemeinsam benutzter Objekte von SectClientController an Sectd zu liefern.
  • Der Fernprozeduraufruf an rjoin übergibt an Sectd (i) den Index master, welcher SectController in der Liste von SharedThang's von Sectd identifiziert, und (ii) die Indizes von RpcClient und SectClientController in die Liste gemeinsam benutzter Objekte von SectClientcontroller. Um mit dem entsprechenden RpcClient in Sectd zusammenzupassen, wird der Index von RpcClient gegen einen Zeiger zu dem entsprechenden in RpcClient enthaltenen Objekt der Klasse SharedThang ausgetauscht. Dieser SharedThang-Zeiger wird wiederum zu einem Zeiger zu dem durch vorgenannten Sectd erzeugten RpcClient-Objekt downgecastet. rjoin ruft dann die lokale Routine JoinWithSlave, um den SectController von Sectd mit der RemoteId zu verknüpfen, welche ausgebildet ist durch (i) den übergebenen Index von SectClientController und (ii) das entsprechende RpcClient-Objekt von Sectd. Dieses RemoteId-Objekt ist in die slaves-Liste von SectController unter Verwendung der addClient-Memberfunktion von SharedThangId eingegeben.
  • Um sicherzustellen, daß die Implementierung für den Anwendungsprogrammierer transparent ist, sieht die vorliegende Erfindung einen Mechanismus vor, welcher für einen Fernprozeduraufruf eine "lokale Prozeduraufrufsemantik" bewahrt. Bei einer lokalen Prozeduraufrufsemantik wartet der Client-Prozeß auf den Prozeduraufruf, um in der gleichen Weise wie eine Prozedur in dem Speicherraum des Client-Prozesses zurückzuspringen. Des weiteren wird aufgrund der Schwierigkeit, in einem herkömmlichen Fernprozeduraufruf sprachenunabhängige Fehlerbehandlungsmechanismen zu implementieren, ein in der entfernten Umgebung auftretender Fehler oft nicht an die lokale Umgebung zurückgegeben. Statt dessen gibt die aufrufende Prozedur nach einer gewissen Zeit eine Zeitablaufnachricht zurück, wenn die erwarteten Ergebnisse nicht empfangen werden. Jedoch kann eine lokale Prozeduraufrufsemantik nur bewahrt werden, wenn der Fehlerbehandlungsmechanismus für Fernprozeduraufrufe ebenfalls ununterscheidbar von dem Fehlerbehandlungsmechanismus für lokale Prozeduraufrufe gemacht wird.
  • In einer herkömmlichen Implementierung von Fernprozeduraufrufen führt der Client eine sequentielle Ausführung in seinem Prozeßraum fort, bis eine explizite "Warte"-Anweisung ausgeführt wird. Eine solche Implementierung ist unerwünscht, da das Anwendungsprogramm sowohl über eine Kenntnis einer entfernten Implementierung als auch eine Synchronisierung mit einem entfernten Ereignis verfügen muß.
  • Fernprozeduraufrufe können durch Anstoßen einer Stub- Routine, wie etwa Stub-Routine 201, in der mit Bezug auf Fig. 2 beschriebenen Art und Weise in SectClientController bewirkt werden. In dieser Ausführungsform werden Stub-Routinen 201 und 202 unter Verwendung eines durch eine "Skript"-Datei (das "oz"-Skript) implementierten Stub-Routinen-Generators gleichzeitig generiert. Eine Skript-Datei ist ein Programm, welches durch einen UNIX-Befehlszeileninterpreter (im UNIX-Jargon eine "Shell" genannt) ausführbar ist.
  • Fig. 7a und 7b sind jeweils die Blockdiagramme der Stub-Routinen SectController::startTester und rstartTester_14SectControllerFRUiRC5Twine ("rstartTester"), welche durch das oz-Skript für die Master- und Slave-Objekte erzeugt werden, welches die verteilte Klasse SectController in SectClientController und Sectd implementiert. Fig. 8 ist der Quellcode in Datei SectController.C für die tatsächliche Implementierung der Klasse SectController in Sectd, welche zusätzlich zu Konstruktor- und Destruktorfunktionen eine Memberfunktion SectController::StartTester aufweist. Nachdem sich StartTester in Sectd befinden soll, geschieht der Zugriff von SectClientController auf StartTester durch die durch das oz-Skript generierte Stub-Routine. Das oz-Skript generiert jeweils zwei Stub-Routinen für SectController in Dateien svc_SectController.C und clnt_SectController.C zur Kompilierung mit Sectd und SectClientController. Zum Zwecke des Kompilierens von SectClientController enthält sectClientController.C die Datei clnt_SectController.C. Für den Zweck eines Kompilierens des Servers 206 enthält SectController.C svc Controller.C. Nachdem die Memberfunktion StartTester tatsächlich nur in Sectd implementiert ist, ist der Rumpf der Memberfunktion SectController::StartTester nur für eine Kompilierung in Sectd enthalten. Der durch das oz-Skript in Sectd generierten Stub-Routine ist das Zeichen "r" vorangestellt, um es von dem tatsächlichen SectController::StartTester- Code zu unterscheiden. Damit wird, wie in Fig. 8 gezeigt, die alternative Compiler-Direktive "#if defined(Server)" verwendet, wo eine Implikation in der Sectd zugehörigen Version von SectController.C (d. h. svc- SectController) erwünscht ist, und die alternative Compiler-Direktive "#if defined(oz)" wird verwendet, wo eine Implikation in der SectClientController zugehörigen SectController.C (d. h. SectController::StartTester-Stub) erwünscht ist. Als ein Kompilierungsergebnis wird eine Objektdatei SectController.o für jede Version von SectController.C zum Verknüpfen mit seinem jeweiligen Client oder Server erhalten. Anwendungsprogramme, welche die Client-Version von SectController.o verküpfen, müssen nicht wissen, daß SectController ein verteiltes Objekt ist.
  • Wie in Fig. 7a gezeigt, erhält SectController::startTester den Index masterid (d. h. den Index in die Sectd zugehörige Liste gemeinsam benutzter Objekte) von SectController (Schritt 701). Die vorzeichenlose lange Ganzzahl handle, welche die aufzurufende Memberfunktion (d. h. rstartTester) kodiert, wird dann durch die Memberfunktion rwhich von RpcClient wiedergefunden, wobei der Name der Memberfunktion auf handle abgebildet wird. Die Argumente an die Memberfunktion parm1 und parm2, die Adresse masterid des Masters und das RpcClient-Objekt rid.id werden dann in einer Pufferstruktur der Klasse XdrBuffer bereitgestellt, welche durch die RPC-Mechanismen 203 und 204 unterstützt wird (Schritt 703). Der Puffer und die Zahl handle der entfernten Funktion werden durch den RPC-Mechanismus an Sectd übergeben (Schritt 704). Fig. 9a ist der Quellcode der beispielhaften Stub-Routine von Fig. 7a, welche durch das oz- Skript für SectClientController generiert wird.
  • Fig. 7b ist ein Blockdiagrammbeispiel der Stub-Routine rStartTester, welche durch das oz-Skript für Sectd eines Objekts der Klasse SectController erzeugt wird. Wie in Fig. 7b gezeigt, wird der Index des dem Master zugehörigen RpcClient-Objekts in die Liste gemeinsam benutzter Objekte von Sectd aus der von SectClientController empfangenen Nachricht extrahiert (Schritt 750). Dieser Index des RpcClient-Objekts wird dann verwendet, um einen Zeiger in dem Speicherraum von Sectd zu dem in RpcClient enthaltenen SharedThang-Objekt wiederzufinden, wobei die SharedThang::get(id)-Memberfunktion verwendet wird (Schritt 751). Der Zeiger wird dann downgecastet, um ein Zeiger zu einem Objekt der Klasse RpcClient zu werden (Schritt 752). Die verbleibenden Parameter von XdrBuffer werden dann verwendet, um den Index id eines SectControllers in der Liste der gemeinsam benutzten Objekte von Sectd und Parameter parm1 und parm2 von startTester zu erhalten (Schritt 753). Der Index id wird verwendet, um einen Zeiger, welcher dem in SectController enthaltenen SharedThang-Objekt entspricht, wiederzufinden. Dieser Zeiger wird dann in einen Zeiger zu einem Objekt der Klasse SectController downgecastet (Schritt 754). rstartTester ruft dann die tatsächliche lokale Prozedur StartTester als eine Memberfunktion der Klasse SectController auf (Schritt 755). Falls in dem lokalen Prozeduraufruf kein Fehler aufgetreten ist, wird der Rückgabewert in Variable parm1 und der Fehlercode LPC- _Success zurückgegeben (Schritt 756). Anderenfalls werden Ausnahmen durch eine von zwei catch-Anweisungen aufgefangen, und der Fehlercode wird zurückgegeben. Auf diese Weise wird eine Ausnahme an die Stub-Routine in SectClientController zurückübergeben. Somit bewahrt die vorliegende Erfindung die lokale Aufrufsemantik in einem Fernprozeduraufruf. Fig. 9b ist der Quellcode der beispielhaften Stub-Routine rstartTester von Fig. 7b, welche durch das oz-Skript für Sectd generiert wird.
  • Fig. 10 ist ein Blockdiagramm, welches die Betriebsweise des oz-Skripts veranschaulicht. Der Fachmann wird verstehen, daß viele Variationen verwendet werden können, um die Stub-Routinen bereitzustellen. Solche Variationen schließen die Verwendung eines durch andere als eine Shell verwendbaren Programms oder die Verwendung von anderen Textverarbeitungsdienstprogrammen als awk ein, sind aber nicht darauf beschränkt. Das oz-Skript der vorliegenden Ausführungsform empfängt als Eingang eine Spezifikationsdatei und akzeptiert wählbare Befehlszeilenargumente. Diese Befehlszeilenargumente spezifizieren, (i) ob Namen in der Spezifikationsdatei "unverstümmelt" sein müssen (Option -raw); (ii) ob eine Client-Stub-Routinen- Datei zu erzeugen ist (Option -c); (iii) ob eine Server- Stub-Routinen-Datei zu erzeugen ist (Option -s); (iv) ob die Kompiliererdirektiven für eine alternative Implikation der Server- oder Client-Stub-Routinen-Dateien an den Rumpf der das verteilte Objekt implementierenden.C-Datei angehängt werden sollen (Option -m); und (v) ob Handles zu den entfernten Funktionen, z. B. rstartTester, zur Implikation zu dem Programm, z. B. SectProg_1, welches durch den RPC-Mechanismus auf der Serverseite aufgerufen wird, generiert werden sollten (Option -h).
  • Fig. 11 ist der Inhalt der durch das oz-Skript verwendeten Spezifikationsdatei, um die in Fig. 7a und 7b veranschaulichten Stub-Routinen für SectController zu generieren. Um die Generierung der zuvor diskutierten Stub- Routinen zu veranschaulichen, reicht eine Betrachtung der ersten Zeile in der Spezifikationsdatei aus.
  • Wie in Fig. 10 gezeigt, analysiert das oz-Skript die Befehlszeile und extrahiert aus der Befehlszeile Argumente zum Festlegen der inneren Zustände des oz-Skripts (Schritt 1001). Je nachdem, ob die Option -raw gesetzt ist, werden Namensverstümmelungsoperationen an der Spezifikationsdatei durchgeführt (Schritt 1002). Das Verstümmeln übersetzt den Namen einer C++-Funktion in einen eindeutigen Namen, welcher eine Kodierung der Parameterliste der Funktion enthält. Die Ergebnisse der Namensverstümmelung der Spezifikationsdatei werden in einer neuen Datei input (die "Input"-Datei) gespeichert. In dieser Ausführungsform wurde ein anderes Shell-Skript "mangle" verwendet, um die Namensverstümmelung durchzuführen. Jedoch sind andere Shell-Skripte, welche im wesentlichen mit den in der obigen Referenz dargelegten Namensverstümmelungsregeln übereinstimmen, gleichermaßen anwendbar. Falls die Option -raw nicht gesetzt ist, wird die Spezifikationsdatei in die Input-Datei direkt kopiert (Schritt 1003), wobei der Namensverstümmelungsschritt umgangen wird. Zusätzlich werden, wenn die Option -m gesetzt ist, alternative Compiler-Direktiven der Quellcodedatei der verteilten Klasse hinzugefügt (Schritt 1004). Die Input-Datei wird dann geparst, um aus den unverstümmelten Namen eine Liste der in der Input-Datei dargestellten Basisklassen zu extrahieren (Schritt 1005). Zum Beispiel werden in der von der Spezifikationsdatei von Fig. 11 abgeleiteten Input-Datei zwei Basisklassen "SectTester" und "SectController" aus der Input-Datei extrahiert. Die extrahierte Liste von Basisklassen wird in eine "Basislisten"-Datei eingebracht.
  • In den nächsten Schritten 1006 und 1007 werden awk- Befehlsdateien svc.awk und clnt.awk vorbereitet. Die Befehlsdatei svc.awk (i) stellt die erforderlichen Kopfdateischnittstellen mit der Fernprozeduraufrufeinrichtung und Deklaration anderer Datenstrukturen, wie etwa SharedThangld, bereit, (ii) prüft eine Input-Temporärdatei auf einen Memberfunktionsaufruf, (iii) stellt in dem Server-Objekt Unmarshalling-Anweisungen zum Übergeben von Parametern des Input-Typs zu tatsächlichen Implementierungen des verteilten Objekts bereit und (iv) stellt Marshalling-Anweisungen zum Zurückgeben von Werten von Parametern anderer Input/Output-Typen bereit. Die Befehlsdatei svc.awk stellt auch eine Anweisung in dem Output-Serverobjekt zum Downcasten eines SharedThang-Objekts zu der in der Input-Temporärdatei spezifizierten Basisklasse bereit.
  • Die Befehlsdatei clnt.awk stellt auch Schnittstellen mit der Fernprozeduraufrufeinrichtung und eine Deklaration von Datenstrukturen bereit. Zusätzlich marshallt clnt.awk Parameter vom Input-Typ, um einen Fernprozeduraufruf unter Verwendung der Input-Parameter zu erzeugen und Unmarshalling-Anweisungen zur Ausgabe oder bidirektionale Parameter, deren Werte von dem Fernprozeduraufruf zurückgegeben werden, bereitzustellen.
  • In Schritt 1008 wird die Basislisten-Datei verwendet, um für jede Basisklasse Memberfunktionsaufrufe von der Input-Datei zu extrahieren, um in eine Output-Temporärdatei plaziert zu werden. Diese Temporärdatei wird dann in Schritt 1009 durch beide Befehlsdateien clnt.awk und svc.awk verwendet, um die Output-Stub-Routinen-Dateien svc_< base> .C und clnt_< base> .C zu generieren (wobei < base> der Name der Basisklasse, z. B. vorgenannter SectController, ist).
  • In Schritt 1010 werden die Memberfunktionen der Klasse SectController in Handles kodiert, um in eine Datei SectdProg.c eingeführt zu werden. SectdProg.c enthält eine Sectd-Funktion SectProg_1, welche über eine Schaltanweisung Funktionen in Sectd in Übereinstimmung mit dem an den RPC-Mechanismus gelieferten Handle aufruft.
  • Die vorstehende Beschreibung veranschaulicht besondere Ausführungsformen der vorliegenden Erfindung, beschränkt die vorliegende Erfindung aber nicht. Zahlreiche Modifikationen und Variationen sind innerhalb des Umfangs der vorliegenden Erfindung möglich. Zum Beispiel ist, obwohl die vorstehend bereitgestellte, detaillierte Beschreibung eine Implementierung in der Programmiersprache C++ als ein Beispiel verwendet, die vorliegende Erfindung auf jede objektorientierte Programmiersprache anwendbar. Die vorliegende Erfindung wird durch die nachfolgenden Ansprüche dargelegt.

Claims (20)

1. Struktur zum gemeinsamen Benutzen von Datenobjekten in Anwendungsprogrammen (208, 205) eines verteilten Rechnersystems, wobei das verteilte Rechnersystem erste (207, 203, 251) und zweite (206, 204, 250) Rechner aufweist, wobei die Struktur aufweist:
eine erste Anwendungsebenenschnittstelle (201) in dem ersten Rechner (207, 203, 251) zu einem ersten Fernprozeduraufrufmechanismus (203);
eine zweite Anwendungsebenenschnittstelle (202) in dem zweiten Rechner (206, 204, 250) zu einem zweiten Fernprozeduraufrufmechanismus (204);
Mittel (250, 251) in dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner zum Koppeln des ersten (203) und zweiten (204) Fernprozeduraufrufmechanismus, zum Befördern von Daten zwischen dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner;
erste, mit der ersten Anwendungsebenenschnittstelle (201) gekoppelte Mittel zum Bereitstellen einer Datenstruktur, welche eine Basisklasse (SharedThang) gemeinsam benutzter Objekte darstellt, wobei jedes gemeinsam benutzte Objekt durch Prozesse (206, 207) in dem ersten (207, 203, 251) und zweiten (206, 204, 205) Rechner abrufbar ist;
zweite, mit der zweiten Anwendungsebenenschnittstelle (202) gekoppelte Mittel zum Bereitstellen der Datenstruktur, welche die Basisklasse (SharedThang) gemeinsam benutzter Objekte darstellt; erste, mit der ersten Anwendungsebenenschnittstelle (201) gekoppelte Mittel zum Bereitstellen von Datenstrukturen, welche eine Mehrzahl von Klassen gemeinsam benutzter Objekte darstellen, von denen jede in Übereinstimmung mit einer Hierarchie von Klassen von der Basisklasse (SharedThang) abgeleitet ist, wobei jedes gemeinsam benutzte Objekt in jeder der Mehrzahl von Klassen gemeinsam benutzter Objekte durch Prozesse (206, 207) in dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner abrufbar ist;
zweite, mit der zweiten Anwendungsebenenschnittstelle (202) gekoppelte Mittel zum Bereitstellen der Datenstrukturen, welche die Mehrzahl von Klassen gemeinsam benutzter Objekte darstellen;
erste Mittel in dem ersten Rechner (207, 203, 251) zum Aufbauen (Schritt 303) eines Vererbungsbaums, dessen Wurzel sich in einer die Basisklasse (SharedThang) darstellenden Datenstruktur befindet, wobei der Vererbungsbaum Datenstrukturen aufweist, welche Beziehungen zwischen den Klassen gemeinsam benutzter Objekte und der Basisklasse (SharedThang) in Übereinstimmung mit der Hierarchie von Klassen darstellt;
zweite Mittel in dem zweiten Rechner (206, 204, 250) zum Aufbauen (Schritt 303) des Vererbungsbaums in dem zweiten Rechner (206, 204, 250);
erste Mittel (201) in dem ersten Rechner (207, 203, 251) zum Durchqueren des Vererbungsbaums, um eine Datenstruktur, welche eine Beziehung zwischen einem ersten Objekt und einem zweiten Objekt darstellt, in dem ersten Rechner (207, 203, 251) auf zubauen, wobei das erste Objekt in einem maschinenunabhängigen Format durch einen Prozess (206) in dem zweiten Rechner (206, 204, 250) durch den ersten und zweiten Fernprozeduraufrufmechanismus (203, 204) angegeben wird; und
zweite Mittel (202) in dem zweiten Rechner (206, 204, 250) zum Durchqueren des Vererbungsbaums, um eine Datenstruktur, welche eine Beziehung zwischen einem ersten Objekt und einem zweiten Objekt darstellt, in dem zweiten Rechner (206, 204, 250) auf zubauen, wobei das erste Objekt in einem maschinenunabhängigen Format durch einen Prozess (207) in dem ersten Rechner (207, 203, 251) durch den ersten und zweiten Fernprozeduraufrufmechanismus (203, 204) angegeben wird.
2. Verfahren zum gemeinsamen Benutzen von Datenobjekten in Anwendungsprogrammen (208, 205) eines verteilten Rechnersystems, wobei das verteilte Rechnersystem erste (207, 203, 251) und zweite (206, 204, 250) Rechner aufweist, wobei das Verfahren die Schritte aufweist:
Bereitstellen einer ersten Anwendungsebenenschnittstelle (201) in dem ersten Rechner (207, 203, 251) zu einem ersten Fernprozeduraufrufmechanismus (203) in dem ersten Rechner (207, 203, 251);
Bereitstellen einer zweiten Anwendungsebenenschnittstelle (202) in dem zweiten Rechner (206, 204, 250) zu einem zweiten Fernprozeduraufrufmechanismus (204) in dem zweiten Rechner (206, 204, 250);
Koppeln der ersten (203) und zweiten (204) Fernprozeduraufrufmechanismen in dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner, um Daten zwischen dem ersten (207, 203, 251) und zweiten (206, 207, 250) Rechner zu befördern; Bereitstellen einer Datenstruktur sowohl in dem ersten (207, 203, 251) als auch dem zweiten (206, 204, 250) Rechner zum Darstellen einer Basisklasse (SharedThang) gemeinsam benutzter Objekte in dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner und Bereitstellen von Datenstrukturen sowohl in dem ersten (207, 203, 251) als auch in dem zweiten (206, 204, 250) Rechner zum Darstellen einer Mehrzahl von Klassen gemeinsam benutzter Objekte, von denen jede in Übereinstimmung mit einer Hierarchie von Klassen von der Basisklasse (SharedThang) abgeleitet wird, wobei jedes gemeinsam benutzte Objekt in jeder der Mehrzahl von Klassen gemeinsam benutzter Objekte durch Prozesse (206, 207) in dem ersten (207, 203, 251) und zweiten (206, 204, 250) Rechner abrufbar ist; und
Aufbauen eines Vererbungsbaums, dessen Wurzel sich in einer die Basisklasse (SharedThang) darstellenden Datenstruktur befindet, in sowohl dem ersten (207, 203, 251) als auch dem zweiten (206, 204, 250) Rechner, wobei der Vererbungsbaum Datenstrukturen aufweist, welche in Übereinstimmung mit einer Hierarchie Beziehungen zwischen der Mehrzahl von Klassen gemeinsam benutzter Objekte und der Basisklasse (SharedThang) darstellen; und
Durchqueren des Vererbungsbaums in sowohl dem ersten (207, 203, 251) als auch dem zweiten (206, 204, 250) Rechner, um eine Datenstruktur aufzubauen, welche ein Verhältnis zwischen einem ersten Objekt und einem zweiten Objekt darstellt, immer wenn das erste Objekt in einem maschinenunabhängigen Format durch einen Prozess (206, 207) in einem von dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner angegeben wird und dem anderen von dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner über die Fernprozeduraufrufmechanismen (203, 204) in dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner zur Verfügung gestellt wird.
3. Struktur nach Anspruch 1, wobei jedes der gemeinsam benutzten Objekte ein Serverobjekt (206) in einem ausgewählten von dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner und ein Clientobjekt (207) in dem anderen von dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner aufweist, wobei das Server- (206) und das Clientobjekt (207) über die erste (201) und zweite (202) Anwendungsebenenschnittstelle kommunizieren.
4. Struktur nach Anspruch 3, wobei das Clientobjekt (207) zu entweder (a) der Serverobjektklasse gemeinsam benutzter Objekte oder (b) einer Klasse gemeinsam benutzter Objekte, welche von der Serverobjektklasse gemeinsam benutzter Objekte abgeleitet ist, gehört.
5. Struktur nach Anspruch 3, wobei das Serverobjekt (206) mit einer Mehrzahl von Methoden ausgestattet ist, welche auf dem ausgewählten Rechner auszuführen sind, und das Clientobjekt (207) auf jede der Methoden über einen Fernprozeduraufruf über die erste (201) und zweite (202) Anwendungsebenenschnittstelle zugreift (Schritt 704).
6. Struktur nach Anspruch 5, die weiter Mittel (201, 202) zum Berechnen eines Zeigers zu entweder (a) einem Elternobjekt, welches ein gemeinsam benutztes Objekt enthält, oder (b) einem in dem Elternobjekt enthaltenen Objekt auf der Grundlage des Vererbungsbaums und unter Verwendung eines Zeigers zu dem gemeinsam benutzen Objekt aufweist.
7. Struktur nach Anspruch 6, wobei das Serverobjekt (206) eine Liste gemeinsam benutzter Objekte pflegt und wobei das Clientobjekt (207) eine Methode in einem der gemeinsam benutzten Objekte in der Liste unter Verwendung eines Index in die Liste angibt, wobei das Serverobjekt (206) dann den Index nimmt, um einen Zeiger zu der Methode unter Verwendung der Mittel (201, 202) zum Berechnen eines Zeigers zu erhalten.
8. Struktur nach Anspruch 5, wobei das Serverobjekt (206) ein Ausführungsergebnis einer beliebigen der Methoden an das Clientobjekt (207) über die erste (201) und zweite (202) Anwendungsebenenschnittstelle zurückgibt (Schritt 755) und das Clientobjekt (207) in einem Ruhezustand wartet (Schritt 705), bis das Ergebnis empfangen wird.
9. Struktur nach Anspruch 5, wobei das Serverobjekt (206) eine beliebige Fehlermeldung, welche während der Ausführung einer beliebigen der Methoden erzeugt wird, über die erste (201) und zweite (202) Anwendungsebenenschnittstelle an das Clientobjekt (207) zurückgibt (Schritt 756).
10. Struktur nach Anspruch 3, wobei das Clientobjekt (207) ein Serverkommunikationsobjekt (clientseitiger RPC-Client) und eine Nachricht erzeugt, welche das Serverobjekt (206) über eine Erzeugung des Serverkommunikationsobjekts (clientseitiger RPC-Client) benachrichtigt, und wobei als Antwort auf die Nachricht das Serverobjekt (206) ein Clientkommunikationsobjekt (serverseitiger RPC-Client) zum Senden von Nachrichten zu dem Clientobjekt (207) erzeugt.
11. Struktur nach Anspruch 4, wobei das Serverobjekt (206) an das Clientobjekt (207) ein Servermanifest schickt, welches die Serverobjektklasse und Klassen, von welchen die Serverobjektklasse abgeleitet ist, auflistet, und wobei das Clientobjekt (207) an das Serverobjekt (206) ein Clientmanifest schickt (Schritt 604), welches die Clientobjektklasse und Klassen, von welchen die Clientobjektklasse abgeleitet ist, auflistet.
12. Verfahren nach Anspruch 2, welches weiter den Schritt eines Implementierens jedes der gemeinsam benutzten Objekte als ein Serverobjekt (206) in einem ausgewählten aus dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner und ein Clientobjekt (207) in dem anderen von dem ersten (207, 203, 251) und dem zweiten (206, 204, 250) Rechner aufweist, wobei das Server- (206) und das Clientobjekt (207) über die erste (201) und zweite (202) Anwendungsebenenschnittstelle kommunizieren.
13. Verfahren nach Anspruch 12, welches weiter den Schritt eines Bereitstellens des Clientobjekts (207) in entweder (a) der Serverobjektklasse gemeinsam benutzter Objekte oder (b) einer Klasse gemeinsam benutzter Objekte, welche von der Serverobjektklasse gemeinsam benutzter Objekte abgeleitet wird, aufweist.
14. Verfahren nach Anspruch 13, welches weiter die Schritte aufweist:
Ausstatten des Serverobjekts (206) mit einer Mehrzahl von Methoden, welche auf dem ausgewählten Rechner ausgeführt werden sollen; und Zugreifen (Schritt 704) auf jede der Methoden von dem Clientobjekt (207) über einen Fernprozeduraufruf über die erste (201) und zweite (202) Anwendungsebenenschnittstelle.
15. Verfahren nach Anspruch 14, welches weiter den Schritt eines Berechnens eines Zeigers zu entweder (a) einem Elternobjekt, welches ein gemeinsam benutztes Objekt enthält oder (b) einem in dem Elternobjekt enthaltenen Objekt in sowohl dem ersten (207, 203, 251) als auch dem zweiten (206, 204, 250) Rechner auf der Grundlage des Vererbungsbaums und unter Verwendung eines Zeigers zu dem gemeinsam benutzten Objekt aufweist.
16. Verfahre n nach Anspruch 15, welches weiter die Schritte aufweist:
Pflegen einer Liste gemeinsam benutzter Objekte in dem Serverobjekt (206);
Angeben eines Index in die Liste, wenn auf eine beliebige Methode in einem der gemeinsam benutzten Objekte in der Liste zugegriffen wird; und Nehmen des Index, um einen Zeiger zu der Methode unter Verwendung des Schritts zum Berechnen eines Zeigers zu erhalten.
17. Verfahren nach Anspruch 14, welches weiter die Schritte aufweist:
Zurückgeben (Schritt 756) eines Ausführungsergebnisses einer beliebigen der Methoden von dem Serverobjekt (206) an das Clientobjekt (207) über die erste (201) und zweite (202) Anwendungsebenenschnittstelle, und Warten (Schritt 705) in einem Ruhezustand des Clientobjekts (207), bis das Ergebnis empfangen wird.
18. Verfahren nach Anspruch 14, welches weiter den Schritt (756) eines Zurückgebens einer beliebigen Fehlermeldung, welche während einer Ausführung einer beliebigen der Methoden erzeugt wird, über die erste (201) und zweite (202) Anwendungsebenenschnittstelle an das Clientobjekt (207) aufweist.
19. Verfahren nach Anspruch 12, welches weiter die Schritte aufweist:
Erzeugen (Schritt 601) eines Serverkommunikationsobjekts (clientseitiger RPC-Client) und einer Nachricht, welche das Serverobjekt (206) über die Erzeugung des Serverkommunikationsobjekts (clientseitiger RPC-Client) unterrichtet, in dem Clientobjekt (207); und
Erzeugen (Schritt 606) eines Clientkommunikationsobjekts (serverseitiger RPC-Client) in dem Serverobjekt (206) zum Senden von Nachrichten an das Clientobjekt (207) als Antwort auf die Nachricht.
20. Verfahren nach Anspruch 13, welches weiter die Schritte aufweist:
Senden eines Servermanifests, welches die Serverobjektklassen und Klassen, von welchen die Serverobjektklasse abgeleitet ist, auflistet, an das Clientobjekt (207); und
Senden eines Clientmanifests, welches die Clientobjektklasse und Klassen, von welchen die Clientobjektklasse abgeleitet ist, auflistet, an das Serverobjekt (206).
DE69331440T 1992-08-28 1993-08-26 Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem. Expired - Fee Related DE69331440T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/938,102 US5307490A (en) 1992-08-28 1992-08-28 Method and system for implementing remote procedure calls in a distributed computer system
PCT/US1993/007886 WO1994006083A1 (en) 1992-08-28 1993-08-26 Method and system for implementing remote procedure calls in a distributed computer system

Publications (2)

Publication Number Publication Date
DE69331440D1 DE69331440D1 (de) 2002-02-14
DE69331440T2 true DE69331440T2 (de) 2002-08-22

Family

ID=25470900

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69331440T Expired - Fee Related DE69331440T2 (de) 1992-08-28 1993-08-26 Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem.

Country Status (5)

Country Link
US (1) US5307490A (de)
EP (1) EP0657047B1 (de)
JP (1) JPH08504975A (de)
DE (1) DE69331440T2 (de)
WO (1) WO1994006083A1 (de)

Families Citing this family (238)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5526491A (en) * 1992-09-22 1996-06-11 International Business Machines Corporation System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure
EP0592080A2 (de) * 1992-09-24 1994-04-13 International Business Machines Corporation Verfahren und Gerät für Kommunikation zwischen Prozessen in einem Multirechnersystem
EP0669020B1 (de) * 1992-11-13 1997-04-02 Microsoft Corporation Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe
JP3503957B2 (ja) * 1992-11-25 2004-03-08 富士通株式会社 遠隔データベースの制御方法及び装置
US5566302A (en) * 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US6157961A (en) * 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
DE69327448T2 (de) * 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5390325A (en) * 1992-12-23 1995-02-14 Taligent, Inc. Automated testing system
US5452459A (en) * 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
US5774719A (en) * 1993-01-08 1998-06-30 Digital Equipment Corporation Method for comparing data structures that cross address space boundaries
WO1994022078A2 (en) * 1993-03-23 1994-09-29 Apple Computer, Inc. Apparatus and method for a relocatable file format
US5848234A (en) * 1993-05-21 1998-12-08 Candle Distributed Solutions, Inc. Object procedure messaging facility
US6718399B1 (en) 1993-05-21 2004-04-06 Candle Distributed Solutions, Inc. Communications on a network
CA2097540C (en) * 1993-06-01 1998-05-12 William G. O'farrell Accessing remote data objects in a distributed memory environment
US6226690B1 (en) * 1993-06-14 2001-05-01 International Business Machines Corporation Method and apparatus for utilizing proxy objects to communicate with target objects
JP3365576B2 (ja) * 1993-06-14 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトの実行方法および装置
US6751796B1 (en) 1993-06-25 2004-06-15 Microsoft Corporation Integration of systems management services with an underlying system object model
CA2124720C (en) * 1993-06-25 2002-10-22 Michael R. C. Seaman Integration of systems management services with an underlying system object model
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5586317A (en) * 1993-07-30 1996-12-17 Apple Computer, Inc. Method and apparatus for implementing I/O in a frame-based computer system
GB9316948D0 (en) * 1993-08-14 1993-09-29 Ibm Programming aid for distributed computing systems
US6289390B1 (en) 1993-08-18 2001-09-11 Microsoft Corporation System and method for performing remote requests with an on-line service network
CA2107299C (en) * 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5596579A (en) * 1993-10-01 1997-01-21 International Business Machines Corporation High performance machine for switched communications in a heterogeneous data processing network gateway
US5517645A (en) * 1993-11-05 1996-05-14 Microsoft Corporation Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager
US5485617A (en) 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5548726A (en) * 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
FR2714746B1 (fr) * 1993-12-31 1996-02-02 Bull Sa Procédé de simulation d'une architecture "serveur" à partir d'une architecture "client".
US5812129A (en) * 1994-01-03 1998-09-22 International Business Machines Corp. Method and system for accessing functions of a user interface environment from processes running outside of the user interface environment
US6813769B1 (en) 1997-10-28 2004-11-02 Microsoft Corporation Server application components with control over state duration
US5832219A (en) * 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
GB2288477A (en) * 1994-04-05 1995-10-18 Ibm Communications system for exchanging data between computers in a network.
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
DE69530731D1 (de) * 1994-07-22 2003-06-18 Sun Microsystems Inc Verfahren und Gerät für Speicherplatzeffiziente Kommunikation zwischen Prozessen
US5778228A (en) * 1994-08-16 1998-07-07 International Business Machines Corporation Method and system for transferring remote procedure calls and responses over a network
CA2153445C (en) * 1994-09-08 2002-05-21 Ashok Raj Saxena Video optimized media streamer user interface
US5684984A (en) * 1994-09-29 1997-11-04 Apple Computer, Inc. Synchronization and replication of object databases
US5625818A (en) * 1994-09-30 1997-04-29 Apple Computer, Inc. System for managing local database updates published to different online information services in different formats from a central platform
JP3361663B2 (ja) * 1994-10-03 2003-01-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 通信管理方法
US5544310A (en) * 1994-10-04 1996-08-06 International Business Machines Corporation System and method for testing distributed systems
US5870089A (en) * 1994-10-27 1999-02-09 Dazel Corporation Apparatus and process for distributing information using an electronic package representation
US5758074A (en) * 1994-11-04 1998-05-26 International Business Machines Corporation System for extending the desktop management interface at one node to a network by using pseudo management interface, pseudo component interface and network server interface
US5793965A (en) * 1995-03-22 1998-08-11 Sun Microsystems, Inc. Method and apparatus for determining the type of an object in a distributed object system
EP0735472A3 (de) * 1995-03-31 2000-01-19 Sun Microsystems, Inc. Verfahren und Gerät für Verschwörung zwischen Objekten
US5724503A (en) * 1995-03-31 1998-03-03 Sun Microsystems, Inc. Method and apparatus for interpreting exceptions in a distributed object system
US5724512A (en) * 1995-04-17 1998-03-03 Lucent Technologies Inc. Methods and apparatus for storage and retrieval of name space information in a distributed computing system
US6249822B1 (en) 1995-04-24 2001-06-19 Microsoft Corporation Remote procedure call method
US6418324B1 (en) * 1995-06-01 2002-07-09 Padcom, Incorporated Apparatus and method for transparent wireless communication between a remote device and host system
US20040264402A9 (en) * 1995-06-01 2004-12-30 Padcom. Inc. Port routing functionality
US6901433B2 (en) * 1995-06-07 2005-05-31 Microsoft Corporation System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service
US5713017A (en) * 1995-06-07 1998-01-27 International Business Machines Corporation Dual counter consistency control for fault tolerant network file servers
US5956489A (en) * 1995-06-07 1999-09-21 Microsoft Corporation Transaction replication system and method for supporting replicated transaction-based services
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5956712A (en) * 1995-06-07 1999-09-21 International Business Machines Corporation Byte range locking in a distributed environment
US5978773A (en) * 1995-06-20 1999-11-02 Neomedia Technologies, Inc. System and method for using an ordinary article of commerce to access a remote computer
US5933599A (en) * 1995-07-17 1999-08-03 Microsoft Corporation Apparatus for presenting the content of an interactive on-line network
US6691299B1 (en) 1995-07-19 2004-02-10 Ricoh Company, Ltd. Object-oriented communications framework system with support for multiple remote machine types
US5732261A (en) * 1995-07-19 1998-03-24 Ricoh Company, Ltd. Method of using an object-oriented communication system with support for multiple remote machine types
US5956509A (en) 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US5892946A (en) * 1995-09-12 1999-04-06 Alcatel Usa, Inc. System and method for multi-site distributed object management environment
US5682534A (en) * 1995-09-12 1997-10-28 International Business Machines Corporation Transparent local RPC optimization
US5815708A (en) * 1995-10-06 1998-09-29 Sun Microsystems, Inc. Method and apparatus for dynamically loading method call exception code in response to a software method exception generated in a client/server computer system
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US5915112A (en) * 1996-01-02 1999-06-22 International Business Machines Corporation Remote procedure interface with support for multiple versions
US5938733A (en) * 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5809235A (en) * 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US6260074B1 (en) * 1996-03-30 2001-07-10 Sun Microsystems, Inc. Method and apparatus for passing generic objects in a distributed system
US6281893B1 (en) * 1996-04-04 2001-08-28 Sun Microsystems, Inc. Method and apparatus for providing an object oriented approach to a device independent graphics control system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6393497B1 (en) * 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US5991823A (en) * 1996-06-26 1999-11-23 Sun Microsystems, Inc. Low overhead object adaptor
US6044409A (en) 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US6275871B1 (en) * 1996-07-03 2001-08-14 Siemens Aktiengesellschaft Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem
US5867650A (en) * 1996-07-10 1999-02-02 Microsoft Corporation Out-of-band data transmission
US5946463A (en) * 1996-07-22 1999-08-31 International Business Machines Corporation Method and system for automatically performing an operation on multiple computer systems within a cluster
US5781703A (en) * 1996-09-06 1998-07-14 Candle Distributed Solutions, Inc. Intelligent remote agent for computer performance monitoring
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6175879B1 (en) * 1997-01-29 2001-01-16 Microsoft Corporation Method and system for migrating connections between receive-any and receive-direct threads
US6067580A (en) * 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US6408342B1 (en) * 1997-03-28 2002-06-18 Keith E. Moore Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment
US6321348B1 (en) * 1997-04-07 2001-11-20 E-Parcel, Inc. System for remote internet consulting, servicing and repair
US5948107A (en) * 1997-05-28 1999-09-07 Intel Corporation Method of handling errors in complex inheritance hierarchies
US6065045A (en) * 1997-07-03 2000-05-16 Tandem Computers Incorporated Method and apparatus for object reference processing
US6157959A (en) * 1997-07-03 2000-12-05 Tandem Computers, Incorporated Method and apparatus for providing portable kernel-mode support for fast interprocess communication
US6567861B1 (en) * 1997-09-17 2003-05-20 International Business Machines Corporation Method and apparatus for remotely running objects using data streams and/or complex parameters
US6253256B1 (en) * 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6631425B1 (en) 1997-10-28 2003-10-07 Microsoft Corporation Just-in-time activation and as-soon-as-possible deactivation or server application components
US6134594A (en) 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6047289A (en) * 1997-11-07 2000-04-04 Novell, Inc. Method and apparatus for directed data propagation
US6170065B1 (en) 1997-11-14 2001-01-02 E-Parcel, Llc Automatic system for dynamic diagnosis and repair of computer configurations
US6016496A (en) * 1997-11-20 2000-01-18 International Business Machines Corporation Method and apparatus for an object-oriented object for retrieving information from local and remote databases
US6405264B1 (en) * 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6510460B1 (en) 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6397252B1 (en) * 1997-12-19 2002-05-28 Electronic Data Systems Corporation Method and system for load balancing in a distributed object system
WO1999044133A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6901596B1 (en) 1998-05-07 2005-05-31 Hewlett-Packard Development Company, L.P. Method of communicating asynchronous events to remote procedure call clients
US6378004B1 (en) * 1998-05-07 2002-04-23 Compaq Computer Corporation Method of communicating asynchronous elements from a mini-port driver
US6138269A (en) * 1998-05-20 2000-10-24 Sun Microsystems, Inc. Determining the actual class of an object at run time
US6256596B1 (en) * 1998-06-30 2001-07-03 Autodesk, Inc. Extensible framework for capturing feature information in a neutral format
US6289012B1 (en) 1998-08-03 2001-09-11 Instanton Corporation High concurrency data download apparatus and method
US6425017B1 (en) 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US7305451B2 (en) * 1998-08-24 2007-12-04 Microsoft Corporation System for providing users an integrated directory service containing content nodes located in different groups of application servers in computer network
JP2000099332A (ja) 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7778260B2 (en) * 1998-10-09 2010-08-17 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) * 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7293107B1 (en) 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8078727B2 (en) 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6385661B1 (en) * 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6163794A (en) 1998-10-23 2000-12-19 General Magic Network system extensible by users
US6988123B2 (en) * 1998-11-06 2006-01-17 Seiko Epson Corporation Methods and apparatus for remote execution of an application over the internet
US6636891B1 (en) * 1998-11-06 2003-10-21 Seiko Epson Corporation Methods and apparatus for controlling an input or output device over the internet
US6631409B1 (en) * 1998-12-23 2003-10-07 Worldcom, Inc. Method and apparatus for monitoring a communications system
US6922708B1 (en) 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6748455B1 (en) 1999-02-23 2004-06-08 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events with filtering
US6829770B1 (en) 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US6845393B1 (en) 1999-06-14 2005-01-18 Sun Microsystems, Inc. Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US7280995B1 (en) 1999-08-05 2007-10-09 Oracle International Corporation On-the-fly format conversion
US6549916B1 (en) 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US7418435B1 (en) 1999-08-05 2008-08-26 Oracle International Corporation Multi-model access to data
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6512519B1 (en) 1999-10-27 2003-01-28 Autodesk, Inc. Infrastructure for shape event handlers
US6947965B2 (en) 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US6920636B1 (en) * 1999-12-15 2005-07-19 Microsoft Corporation Queued component interface passing for results outflow from queued method invocations
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US7185005B1 (en) 2000-05-12 2007-02-27 Oracle International Corporation Nested transactions in a file system
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6721807B2 (en) * 2000-08-10 2004-04-13 International Business Machines Corporation Extensible and efficient double dispatch in single-dispatch object-oriented programming languages
AU2001283464A1 (en) * 2000-08-31 2002-03-13 Padcom, Inc. Method and apparatus for routing data over multiple wireless networks
GB2368411B (en) * 2000-10-25 2004-01-28 Proksim Software Inc Sharing data over a network
US7058648B1 (en) 2000-12-01 2006-06-06 Oracle International Corporation Hierarchy-based secured document repository
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20050198379A1 (en) * 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7562146B2 (en) * 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
US6871228B2 (en) * 2001-06-29 2005-03-22 International Business Machines Corporation Methods and apparatus in distributed remote logging system for remote adhoc data analysis customized with multilevel hierarchical logger tree
EP1292109A1 (de) * 2001-08-27 2003-03-12 Ricoh Company, Ltd. Informationsverarbeitungssystem
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7644171B2 (en) * 2001-09-12 2010-01-05 Netmotion Wireless, Inc. Mobile networking system and method using IPv4 and IPv6
US7853933B2 (en) * 2001-09-29 2010-12-14 Siebel Systems, Inc. Computing system and method to perform compile-time extension for world wide web application
US20030120697A1 (en) * 2001-12-21 2003-06-26 Lockheed Martin Corporation System and method for adapting a software control in an operating environment
US7984157B2 (en) * 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7661129B2 (en) * 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US7353521B1 (en) 2002-10-19 2008-04-01 Borland Software Corporation Object oriented distributed software system with methodology for piggybacked reflective callbacks
US20040170181A1 (en) * 2003-02-27 2004-09-02 Padcom, Inc. Prioritized alternate port routing
US7158985B1 (en) * 2003-04-09 2007-01-02 Cisco Technology, Inc. Method and apparatus for efficient propagation of large datasets under failure conditions
US7089066B2 (en) * 2003-04-24 2006-08-08 Colorado Vnet, Llc Distributed control systems and methods
US20040218591A1 (en) * 2003-04-29 2004-11-04 Craig Ogawa Bridge apparatus and methods of operation
US8694510B2 (en) * 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US8229932B2 (en) 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7930277B2 (en) * 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
US20050243857A1 (en) * 2004-04-30 2005-11-03 Padcom, Inc. Simultaneously routing data over multiple wireless networks
US7587721B2 (en) * 2004-05-20 2009-09-08 Sap Ag Sharing objects in runtime systems
US7681184B1 (en) 2004-05-24 2010-03-16 Borland Software Corporation System and methodology for cross language type system compatibility
US20070208946A1 (en) * 2004-07-06 2007-09-06 Oracle International Corporation High performance secure caching in the mid-tier
US7627547B2 (en) * 2004-11-29 2009-12-01 Oracle International Corporation Processing path-based database operations
US8131766B2 (en) * 2004-12-15 2012-03-06 Oracle International Corporation Comprehensive framework to integrate business logic into a repository
US7921076B2 (en) * 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7634771B2 (en) * 2005-04-29 2009-12-15 Sap (Ag) Object generation in packages
US7587705B2 (en) * 2005-04-29 2009-09-08 Sap (Ag) Calls and return calls using client interfaces
US7669181B2 (en) * 2005-04-29 2010-02-23 Sap (Ag) Client interfaces for packages
US8073841B2 (en) * 2005-10-07 2011-12-06 Oracle International Corporation Optimizing correlated XML extracts
US8356053B2 (en) * 2005-10-20 2013-01-15 Oracle International Corporation Managing relationships between resources stored within a repository
US8949455B2 (en) 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
US7898968B2 (en) * 2006-09-15 2011-03-01 Citrix Systems, Inc. Systems and methods for selecting efficient connection paths between computing devices
US7827177B2 (en) * 2006-10-16 2010-11-02 Oracle International Corporation Managing compound XML documents in a repository
US7797310B2 (en) * 2006-10-16 2010-09-14 Oracle International Corporation Technique to estimate the cost of streaming evaluation of XPaths
US9183321B2 (en) 2006-10-16 2015-11-10 Oracle International Corporation Managing compound XML documents in a repository
US20090064134A1 (en) * 2007-08-30 2009-03-05 Citrix Systems,Inc. Systems and methods for creating and executing files
US20090222818A1 (en) * 2008-02-29 2009-09-03 Sap Ag Fast workflow completion in a multi-system landscape
US8189466B2 (en) 2008-03-14 2012-05-29 Neomedia Technologies, Inc Messaging interchange system
US7958112B2 (en) * 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
US8656419B2 (en) * 2009-07-02 2014-02-18 Ca, Inc. Dynamic distributed evaluator
US10296313B2 (en) * 2014-11-18 2019-05-21 Roger James Poon Safely consuming dynamically-typed code from a statically-typed programming language

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4914586A (en) * 1987-11-06 1990-04-03 Xerox Corporation Garbage collector for hypermedia systems
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
AU628264B2 (en) * 1990-08-14 1992-09-10 Oracle International Corporation Methods and apparatus for providing a client interface to an object-oriented invocation of an application
DE69126857T2 (de) * 1991-01-18 1998-01-08 Ibm Objektorientierte Programmierungsplattform

Also Published As

Publication number Publication date
DE69331440D1 (de) 2002-02-14
JPH08504975A (ja) 1996-05-28
EP0657047A4 (de) 1995-08-30
EP0657047A1 (de) 1995-06-14
WO1994006083A1 (en) 1994-03-17
US5307490A (en) 1994-04-26
EP0657047B1 (de) 2002-01-09

Similar Documents

Publication Publication Date Title
DE69331440T2 (de) Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem.
DE69615978T2 (de) Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69719620T2 (de) Vorrichtung und Verfahren zur Bestimmung von Server-Cluster-Topologien
DE69733739T2 (de) Rechnersystem und Verfahren zum Testen eines Netzwerkmanagement-Agenten (TMN-Agenten)
DE69032191T2 (de) Anordnung und Verfahren zur Realisierung von Hochleistungskommunikation zwischen Softwareprozessen
DE69528749T2 (de) Objektorientierte Programmierschnittstelle zur Entwicklung und zur Ausführung einer Netzwerkverwaltungsapplikation auf einer Netzwerkkommunikationsinfrastruktur
DE69309485T2 (de) Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe
DE69329577T2 (de) Verfahren und system für implementierung-unabhängige schnittstellenspezifikation
DE69636887T2 (de) System und Verfahren,um verschiedenen Anbietern von Namen zu ermöglichen,sich dynamisch einer Namensföderation anzuschliessen
DE69617509T2 (de) Vorrichtung und Verfahren zur Feststellung von Objekttypen in einem verteilten Objektsystem
DE69425318T2 (de) Verfahren und System für Fernausführung von Codes
DE69518446T2 (de) Typsicheres Rahmenwerk für dynamisch erweiterbare Objekte
DE69622144T2 (de) Allgemeines Fernprozeduraufrufsystem und allgemeines Fernprozeduraufrufverfahren
DE69327448T2 (de) Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
DE69128952T2 (de) Gerät und Verfahren zur Entkupplung von Datenaustauschdetails zur Beschaffung einer Hochleistungskommunikation zwischen Softwareprozessen
DE69328162T2 (de) Gerät und Verfahren zum Verfügbarstellen eines Teiles eines Namensraumes als ein Teil eines anderen Namensraumes
DE69727933T2 (de) Verfahren und gerät zum beschreiben einer definierten schnittstelle, einer operation und eines datentyps in einer schnittstellendefinitionssprache
DE69228621T2 (de) Objektorientiertes verteiltes Rechnersystem
DE69122830T2 (de) Verteiltes Konfigurationsprofil für ein Rechnersystem
DE69523939T2 (de) Verfahren zur erzeugung von objektstrukturen für den zugriff auf konventionelle, nicht objekt-orientierte geschäftsanwendungen
DE69727381T2 (de) Verfahren zum transportieren von in einer schnittstellendefinitionssprache definierten datenstrukturen zwischen heterogenen systemen
DE69323675T2 (de) Partner-Mechanismus zum Verbinden von Systemen mit einer Umgebung für verteilte Berechnungen (UVB) und non-UVB Systemen zum Betrieb in einem Netzwerksystem
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE69406013T2 (de) Objektorientiertes netz-protokoll-konfigurationssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee