DE69606184T2 - Klient-server-brücke - Google Patents
Klient-server-brückeInfo
- Publication number
- DE69606184T2 DE69606184T2 DE69606184T DE69606184T DE69606184T2 DE 69606184 T2 DE69606184 T2 DE 69606184T2 DE 69606184 T DE69606184 T DE 69606184T DE 69606184 T DE69606184 T DE 69606184T DE 69606184 T2 DE69606184 T2 DE 69606184T2
- Authority
- DE
- Germany
- Prior art keywords
- server
- client
- bridge
- interface
- request
- 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
Links
- 238000000034 method Methods 0.000 claims description 76
- 230000004044 response Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 42
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 15
- 230000001360 synchronised effect Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101001074449 Crotalus durissus terrificus Phospholipase A2 inhibitor CNF Proteins 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 235000008429 bread Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Description
- Die vorliegende Erfindung betrifft die verteilte Datenverarbeitung in einer Client-Server-Umgebung und insbesondere die Verwendung von Brücken zwischen Clients und Servern in einer solchen Umgebung.
- Vor der Entwicklung der objektorientierten Programmierung war eine Form der Programmierung gebräuchlich, die als strukturierte Programmierung bekannt ist, und diese Form der Programmierung findet nach wie vor in großem Umfang Anwendung. Bei dieser Technik werden zuerst verschiedene Funktionen definiert, und das Programm besteht dann darin, dass diese definierten Funktionen zu entsprechenden Zeiten aufgerufen werden, um das Gesamtziel des Anwendungsprogramms zu erreichen. Diese Funktionen definieren die Methoden, die zur Durchführung von Operationen an den Daten verwendet werden, aber die Daten selbst definieren sie nicht. Die strukturierte Programmierung schaffte die Möglichkeit für einen Ansatz, der auf dem Modulkonzept beruht - eine wesentliche Verbesserung gegenüber dem "Spaghetticode", der schwierig zu korrigieren und zu verwalten war. Dennoch bleiben einige Nachteile der strukturierten Programmierung bestehen, wie zum Beispiel die "semantische Lücke" zwischen den Konzepten und den Definitionseinheiten in der Welt, die von dem Programm gestaltet wird, und den Konzepten in der Programmiersprache, die Beschaffenheit des Textes des Programmcodes und die Beschränkungen bei der Wiederverwendbarkeit von Code-Modulen.
- Danach wurde ein neues Denkmuster in der Programmierung entwickelt, das als objektorientierte Programmierung bezeichnet wird. Bei diesem Verfahren werden anstelle von Funktionen "Klassen" definiert. Die Klassendefinitionen definieren die Methoden, die jede beliebige Instanz dieser Klasse ausführen kann, und die Attribute (oder Daten), die eine Instanz dieser Klasse enthält. Ein Objekt ist ein Teil einer Klasse und kann tatsächlich die Methoden ausführen, die in der Klassendefinition definiert sind. Ein Objekt besitzt Werte, die zu jedem der von der Klasse definierten Attribute gehören. Ein Objekt besitzt null oder mehr Attribute, und es verfügt über null oder mehr Methoden, die an dem Objekt ausgeführt werden können.
- Die Schnittstelle zu dem Objekt ist die Art und Weise, in der über die Methoden auf die Attribute zugegriffen werden kann. Alle von dieser Klasse abgeleiteten Objekte benutzen die Schnittstelle dieser Klasse gemeinsam. Die Art und Weise der Realisierung eines Objekts wird vor der Anwendung, die das Objekt ausruft, verborgen. Solange sich die Schnittstelle zu dem Objekt nicht ändert, kann die Realisierung vollständig geändert werden, ohne dass die Anwendung davon betroffen wird.
- Als ein einfaches Beispiel für dieses Verfahren zur Beschreibung des äußeren "Erscheinungsbilds" eines Objekts, ohne dass es notwendig ist zu beschreiben, wie das Objekt im Inneren "aussieht" oder was es im Inneren "tut", und um die beträchtlichen Vorteile dieser objektorientierten Programmierung darzustellen, mag man sich analogiehalber einen gewöhnlichen Toaster vorstellen, dessen Gestaltung nach dem objektorientierten Ansatz vorgenommen werden könnte. Die externe "Schnittstelle " würde aus dem Drehknopf bestehen, der im Wesentlichen einen Parameter zur Einstellung des gewünschten Bräunegrads des Toasts darstellt, der Öffnung, in die das Brot gesteckt wird, und einem Hebel zur Durchführung dieses Einsteckvorgangs und zur Aktivierung des Toasters. Das wichtige Konzept ist, dass der Endbenutzer eines solchen Haushaltsgeräts "das Innere" des Toasters nicht zu kennen braucht, um ihn zu verwenden, z. B. ob Wärme durch Elektrizität oder durch chemische oder andere Mittel zugeführt wird. Alles, was der Benutzer tun müsste, bestünde in der Herstellung eines korrekten Anschlusses zu diesen externen Dingen.
- Mit dieser Analogie fortfahrend, besteht das Schöne an dieser Weiterentwicklung in der Programmierung darin, dass der Gestalter des Objekts, bei dem es sich um ein Modul eines Programmiercodes handeln kann, das die Ausgestaltung eines Toasters vornimmt, sich darauf konzentrieren kann, das Innere des Toasters zu verbessern, ihn beispielsweise leistungsfähiger zu machen, ohne dem Benutzer die Handhabung des Objekts zu erschweren, insofern als das Innere für den Benutzer transparent ist. Abstrakter ausgedrückt, die objektorientierte Technik kann folglich hauptsächlich als eine Technik betrachtet werden, die den Vorteil der Trennung der Schnittstelle eines Objekts von dessen Realisierung bietet. Im Zusammenhang mit Software kann das Innere des Objekts dadurch neu geschrieben und verbessert werden, ohne dass das ganze Anwendungsprogramm neu geschrieben werden muss, solange sich die externen "Dreh knöpfe" usw. und ihr erwartetes Verhalten nicht verändert haben.
- Damit sich die Erfindung leichter und besser verstehen lässt, sei hinsichtlich weiterer allgemeiner Hintergrundinformationen in Bezug auf die Objekttechnik auf "Object Oriented Technology - A Managers Guide" von David A. Taylor, Copyright 1990, Servio Corporation, verwiesen.
- Mit der Entwicklung der objektorientierten Programmierung wurden mehrere "Objektmodelle" von verschiedenen Organisationen und Softwarehäusern weiter verfeinert und weiterentwickelt. Diese gaben die Art und Weise an, in der Objekte und ihre externen Schnittstellen definiert werden sollten, wobei diese verschiedenen Objektmodelle unter anderem Merkmale der Kapselung und Vererbung aufwiesen. Auf einer entsprechend hohen Stufe sind diese verschiedenen Objektmodelle sehr ähnlich. Beispiele sind das System Object Model (SOM), Common Lisp Object System (CLOS), Smalltalk und C++. Tm Wesentlichen sind diese verschiedenen Objektmodelle einfach ein Regelwerk, das die Frage, was ein Objekt ist, beantwortet, wobei jedes Modell etwas andere Antworten gibt, wenn es auf tiefer angesiedelten Stufen geprüft wird. Beispielsweise unterscheiden sich verschiedene Objektmodelle in ihrer Sprachsyntax und in der Funktionsweise der Kapselung und Vererbung.
- Als direkte Folge dieser Unterschiede bestand ein Problem, das durch das Vorhandensein von verschiedenen objektorientierten Sprachen und Objektmodellen geschaffen wurde, darin, dass eine Zusammenarbeit der Objektprogramme, die in vielen verschiedenen dieser Sprachen geschrieben wurden, nicht erreicht werden konnte. Dieses Problem wirkte sich nachteilig auf eines der Hauptversprechen der Objekttechnik aus, nämlich die Wiederverwendbarkeit von Code. In dem Bemühen, dieses Problem anzugehen, das der Industrie zu schaffen machte, erzielte ein Ausschuss ein Ergebnis in Form der Common Object Request Broker Architecture (CORBA), die eine standardisierte Schnittstellendefinitionssprache (Interface Definition Language (IDL)) beinhaltete. Im Kern traf die Industrie eine Vereinbarung darüber, wie Schnittstellen eines Objekts angegeben werden, d. h. ein Standard zur Definition von Objektschnittstellen wurde geschaffen, so dass von einem Lieferanten definierte Objekte von einem anderen verwendet werden konnten. Weitere Informationen finden sich in "The Common Object Request Broker: Architecture and Specification", OMG Document Number 91.12.1 Revision 1.1.
- Der in der CORBA-Architektur beschriebene Object Request Broker (ORB) ist mit dem Remote Procedure Call (RPC) vergleichbar, der denjenigen vertraut ist, die in UNIX-Betriebssystemumgebungen arbeiten (UNIX ist ein ausschließlich durch X/Open Co. Ltd. lizenziertes Warenzeichen).
- Ein System nach dem Stand der Technik ist in Fig. 1 veranschaulicht, die ein Blockdiagramm eines in einer Client/Server-Umgebung befindlichen Object Request. Broker nach dem Stand der Technik darstellt.
- Der ORB ist in zwei Teile geteilt, von denen der Teil 50 in jedem der Clients, die den ORB verwenden, und der Teil 52 in jedem der Server, die den ORB unterstützen, ausgeführt werden. Ebenso wie ein RPC ist ein ORB ein Mechanismus, der Client- Anwendungen 48, die in einem Adressraum 53 tätig sind, eine Kommunikation mit Objekten 51 in einem anderen Adressraum 54 ermöglicht. Die Objekte 51, die sich in dem anderen Adressraum 54 befinden, bei dem es sich nicht um denselben Adressraum handelt, in dem die Client-Anwendung 48 ausgeführt wird, also den Adressraum 53, werden als "ferne" Objekte bezeichnet. Objekte, die sich in demselben Adressraum 53 befinden, in dem sich auch die Client-Anwendung 48 befindet, werden als "lokale" Objekte bezeichnet. Ein ORB 50 fängt einen Aufruf von einer Client-Anwendung 48 in einem Adressraum 53 ab, bindet ihn in ein Netzwerkprotokoll ein, decodiert den Aufruf für das Zielobjekt 51 in einem anderen Adressraum 54 und sendet die Ergebnisse an die aufrufende Client-Anwendung 48 zurück. Dadurch kann eine Client-Anwendung 48, die in einem Adressraum (lokal) arbeitet, mit Objekten 51 in einem anderen Adressraum (fern) kommunizieren. Der ORB ist eine Verbesserung gegenüber dem RPC, da er so ausgelegt ist, dass er den höheren Grad an Flexibilität und Leistung bereitstellt, den die objektorientierte Programmierung bietet. Die Funktion eines Stellvertreterobjekts 49 wird nachstehend näher erläutert.
- Proceedings of the Second International Workshop on Object Orientation in Operating Systems, Dourdon, Frankreich, 24, bis 25. September 1992, Los Alamitos, CA, USA, IEEE CONPUT. SOC. PRESS, Seiten 212 bis 220, beschreiben einen solchen Object Request Broker nach dem Stand der Technik.
- "Objektmodelle" wurden von verschiedener Organisationen und Softwarehäusern entwickelt. Die Objektmodelle geben die Art und Weise an, in der Objekte und ihre externen Schnittstellen zu definieren sind. Eines dieser Objektmodelle ist das System Object Model (SOM) von der IBM Corporation. Bei SOM laufen alle Anwendungen, die Objekte verwenden, in einem einzigen Adressraum, in dem sich auch die Objekte befinden. Eine Entwicklung innerhalb von SOM ist ein Gerüst aus Objektklassen mit der Bezeichnung Distributed System Object Model (DSOM). Bei DSOM können Anwendungen (die in Clients laufen) in einem Adressraum auf Objekte in einem anderen Adressraum (wie zum Beispiel einem Adressraum, der einem Server gehört) zugreifen. Diese Adressräume können sich in demselben System oder in verschiedenen Systemen befinden. Tatsächlich brauchen die Systeme nicht dieselbe Plattform auszuführen. Eine Client-Anwendung beispielsweise, die in einem Adressraum auf einem OS/2-System läuft, kann auf ein Objekt zugreifen, das sich in einem Adressraum auf einem AIX/6000-System befindet, oder umgekehrt. Sowohl SOM als auch DSOM sind in "SOMobjects: A Practical Introduction to SOM and DSOM" beschrieben, veröffentlicht von der IBM Corporation, Copyright 1994, Bestellnummer GG24-4357- 00.
- Die Europäische Patentanmeldung 0 501 610 beschreibt einen Mechanismus, der es Objekten in verschiedenen Prozessen erlaubt zu kommunizieren. Programme werden ausdrücklich so geschrieben, dass sie die Übertragungsschnittstelle Application Programming Interface (Anwendungsprogrammierschnittstelle, API) benutzen.
- Das oben erwähnte System Object Model (SOM) ist ein Objektmodell, das CORBA und IDL entspricht. Entsprechung bedeutet, dass SOM-Objekte der CORBA-Semantik folgen und in der Syntax von IDL definiert werden.
- Das DSOM-Gerüst ermöglicht Realisierungen von Objekten, bei denen der Client-Programmierer nicht den Ort oder die Art der Plattform kennen muss, an dem beziehungsweise auf der ein Zielobjekt verwirklicht wird. Die Übertragungseinrichtungen, die für diese Kommunikation zwischen Prozessen verwendet werden, werden vor dem Programmierer vollständig verborgen.
- In einer Client-Server-Architektur werden Anwendungsprogramme in bestimmte Tasks aufgeteilt, die als einzelne Komponenten ausgeführt werden. Jeder der Komponenten wird eine Rolle als Client oder als Server zugewiesen. Eine einzelne Komponente kann für bestimmte Zwecke die Rolle eines Servers und für andere Zwecke die Rolle eines Client übernehmen. Jede der Komponenten arbeitet unabhängig und übernimmt bestimmte Verantwortungen. Diejenigen Komponenten, denen die Rolle eines Client zugewiesen wird, fordern Dienste von einem Server an, indem sie Methodenaufrufe auf einem Objekt in einem Serverprozess durchführen. Diejenigen Komponenten, denen die Rolle eines Servers zugewiesen wird, erbringen Dienste, indem sie diese Methodenaufrufe empfangen, die Methoden auf dem geeigneten Objekt aufrufen und die Ergebnisse an den Client zurücksenden. Der Nachrichtenaustausch zwischen den Clients und den Servern erfolgt mit Hilfe eines vorher festgelegten Protokolls. Server können viele Clients bedienen, und Clients können die Dienste von vielen Servern in Anspruch nehmen.
- Sofern der Client oder der Server nicht über einen bestimmten internen Code verfügen, ist es in einem solchen System nicht möglich, die Anforderungen, die von dem Client an den Server gestellt werden, zu überwachen oder zu protokollieren oder mit diesen Anforderungen verbundene Daten zu überwachen oder zu protokollieren. Gegebenenfalls ist es erwünscht, solche Anfor derungen zum Zweck der Fehlerbestimmung zu überwachen oder zu protokollieren.
- In dem vorstehend beschriebenen System ist eine gleichmäßige Verteilung der Arbeitslast zwischen Servern nicht möglich, außer wenn der Client so ausgelegt wurde, dass er eine solche Funktion zur gleichmäßigen Verteilung der Arbeitslast in sich selbst beinhaltet. Nachteile der Integration einer solchen Funktion zur gleichmäßigen Verteilung der Arbeitslast in den Client selbst sind der mit jeder Anforderung verbundene Mehraufwand im Client und die Komplexität, mit der jeder der Clients, der eine solche Funktion zur gleichmäßigen Verteilung der Arbeitslast enthält, behaftet wird. Eine gleichmäßige Verteilung der Arbeitslast ist wünschenswert, um die Gesamtleistungsfähigkeit für den Client zu verbessern, indem der Server ausgewählt wird, der die beste Leistungsfähigkeit bietet.
- Zwischen jedem der Clients und jedem der Server, von dem der Client Dienste anfordern können möchte, muss es eine Kommunikationsverbindung geben. In einem System, in dem es viele Clients und viele Server gibt, hat dies eine beträchtliche Unübersichtlichkeit zur Folge.
- Die Verlagerung von Funktionen ermöglicht Anwendungsprogrammen den Zugriff auf Dateien, die einem anderen System gehören, indem sie Dateisteuerungsanforderungen übermitteln, und die Übertragung von Daten an oder von Warteschlangen mit Übergangsdaten oder mit Zwischenspeichern in anderen Systemen, indem sie Anforderungen für Übergangsdaten und Zwischenspeicherfunktionen übermitteln. Sie ermöglicht auch die Einleitung von Transaktionen in anderen Systemen, die Protokolle vom Typ SNA LU Type 6 ausführen. Mit Hilfe von Einträgen in einer Ressourcendefinitionstabelle kann der Systemprogrammierer angeben, dass sich die genannte Ressource nicht auf dem lokalen (oder anfordernden) System, sondern auf einem fernen (oder besitzenden) System befindet. Die Verwendung der Funktionsverlagerung ist sowohl für das anfordernde als auch das ferne System transparent. Die Protokollierung und die Überwachung von Anforderungen und zugehörigen Daten sind möglich, müssen aber für jede Anwendung, in der eine solche Überwachung erwünscht ist, getrennt ausgeführt werden. Weitere Informationen über die Verlagerung von Funktionen findet man in "CICS/ESA V4.1 Intercommunication Guide", veröffentlicht von der IBM Corporation, Copyright 1977, 1994, Bestellnummer SC33-1181-00.
- Mit Stellvertretern kann einer lokalen Anwendung, die in einem Client ausgeführt wird, der Zugriff auf ferne Ressourcen in einem Server gestattet werden. Ein Stellvertreter ist ein Objekt, wie beispielsweise das Stellvertreterobjekt 49 in Fig. 1, das ein anderes Objekt darstellt, seine Nachrichten empfängt und sie in irgendeiner Weise verarbeitet. Dies schließt oftmals die Weiterleitung der Nachricht an das Zielobjekt, wie beispielsweise das Zielobjekt 51 in Fig. 1, ein. Stellvertreter stellen in der objektorientierten Programmierung ein bekanntes Verfahren dar und werden von DSOM (Distributed System Object Model) verwendet - eine ausführliche Beschreibung findet sich im Benutzerhandbuch SOMobjects Developer Toolkit User's Guide Version 2.0, das Bestandteil der SOMobjects Publications ist und von der IBM Corporation veröffentlicht wurde, Copyright 1994, Bestellnummer S96F-E649. Ein Stellvertreter empfängt Anforderungsnachrichten vor, einem Client, die an einen Server gesendet werden müssen, und er empfängt Antwort nachrichten vom Server, die an den Client gesendet werden müssen. Er kann keine asynchronen Antwortnachrichten vom Server für den Client empfangen. Ein Stellvertreter ist grundsätzlich einem einzigen Zielobjekt in einem Server und nicht mehreren Objekten in einem einzigen Server oder In mehreren Servern zugeordnet.
- Die Europäische Patentanmeldung 0 518 195 beschreibt eine plattformunabhängige Anwendungsprogrammierschnittstelle (Application Programming Interface, API), die durch Bibliotheksroutinen, die mit Anwendungsprogrammen verbunden sind, realisiert wird. Die Anwendungsprogramme sind speziell für die API geschrieben, und die Client- und Serverprozesse müssen ausdrücklich Kenntnis von der API haben und sie verwenden. Das Problem bei dieser Ausführung ist, dass sie keinen transparenten Mechanismus bereitstellt, um Client-Server-Datenflüsse abzufangen, ohne dass sich der Client und der Server der Umleitung bewusst sind.
- Die PCT-Patentanmeldung WO 95/17718 beschreibt eine objektorientierte Schnittstelle zu Remote Procedure Calls (RPCs), die in das Betriebssystem integriert ist. Client- und Serverprogramme werden speziell so geschrieben, dass sie die RPC Application Programming Interface (API) verwenden, wenn sie miteinander kommunizieren. Diese Ausführung stellt ebenfalls keinen transparenten Mechanismus bereit, um Client-Server-Datenflüsse abzufangen, ohne dass sich der Client und der Server der Umleitung bewusst sind.
- In dem Artikel "Building a better app, SQL style", PC Magazine, Band 13, Nummer 10, 31. Mai 1994, beschreibt G. Gagnon ein Verfahren, mit dem sich eine gemeinsame API auf viele verschiedene APIs abbilden lässt.
- In dem Artikel "SQL*NET version 2: client/server networking is easier with SQL*NET V2 and the MultiProtocol Interchange", DBMS, Band 5, Nummer 9, August 1992, beschreibt S. Roti eine zwischengeschaltete Komponente, die eine Umsetzung von einer API in eine andere API vornimmt. Die Vermittlereinheiten werden speziell so geschrieben, dass sie die Umsetzungsaufgabe, die ihnen abverlangt wird, ausführen. Ohne die Vermittlereinheit kommunizieren die für die beiden APIs geschriebenen Komponenten nicht.
- Folglich stellt die Erfindung eine Brücke zur Verwendung zwischen einem Client und einem Server in einem verteilten objektorientierten Datenverarbeitungssystem bereit, wobei die Brücke eine Schnittstelle zu einem Stellvertreterobjekt festlegt, das sich im Adressraum des Client befindet, die der Schnittstelle eines Servers entspricht, und eine Schnittstelle zum Server, die der Schnittstelle eines Stellvertreterobjekts entspricht, das sich im Adressraum des Client befindet, wobei die Brücke zwischen dem Stellvertreterobjekt, das sich im Adressraum des Client befindet, und dem Server transparent eingefügt wird und eine Kennung verzeichnet, die dem Stellvertreterobjekt zugeordnet ist, das sich im Adressraum des Client befindet.
- In einer ersten Ausführungsform arbeiten der Client und der Server asynchron, die Brücke wird von einem Client und einem Server durch Vererbung abgeleitet, die Brücke überschreibt Me thoden, die sie von dem Server geerbt hat, um den Namen des Client, der die Anforderung stellt, zu verzeichnen und um die Anforderung an den Server weiterzuleiten, und die Brücke überschreibt Methoden, die sie von dem Client geerbt hat, um Antwortparameter an den Client weiterzuleiten.
- In einer zweiten Ausführungsform arbeiten der Client und der Server synchron, die Brücke wird von einem Server durch Vererbung abgeleitet, und sie überschreibt Methoden, die sie von dem Server geerbt hat, um die Methoden auf dem Server aufzurufen und um Antwortparameter an den Client weiterzuleiten.
- In einer bevorzugten Ausführungsform umfasst die Brücke des Weiteren ein Mittel zur Überwachung und Protokollierung von Anforderungen zwischen dem Client und dem Server und von Daten, die zu diesen Anforderungen gehören. In einer bevorzugten Ausführungsform umfasst die Brücke darüber hinaus auch ein Mittel zur gleichmäßigen Verteilung der Arbeitslast zwischen den Servern. Eine solche gleichmäßige Verteilung der Arbeitslast kann vorgenommen werden, indem Antwortzeiten gemessen und als Antwort auf die gemessene Antwortzeit Anforderungen von Clients an Server geleitet werden. In einer weiteren bevorzugten Ausführungsform ist die Brücke mit m Clients und n Servern verbunden (wobei n und m ganze Zahlen größer oder gleich 2 sind) und verringert die Anzahl der Netzwerkverbindungen von n*m auf n+m.
- Vorzugsweise sind die Schnittstellen zwischen Objekten CORBA- Schnittstellen, und das verteilte objektorientierte Datenverarbeitungssystem verwendet DSOM-Klassenbibliotheken. Jedoch ist die Erfindung nicht auf die Anwendung in CORBA-konformen Systemen oder die Verwendung solcher Klassenbibliotheken be schränkt. Das verteilte objektorientierte System könnte beispielsweise dem Component Object Model (COM) von Microsoft entsprechen, oder es könnte Klassenbibliotheken der Distributed Object Management Facility (DOMF) verwenden, die von SunSoft als Distributed Object Environinent und von Hewlett- Packard Co. als ORB Plus erhältlich sind.
- Die Erfindung stellt auch ein Verfahren zum Betreiben eines verteilten Client-Server-Datenverarbeitungssystems bereit, das die Schritte der Festlegung einer Schnittstelle für eine Brücke in der Weise umfasst, dass die Schnittstelle zu einem Stellvertreterobjekt, das sich im Adressraum des Client befindet, der Schnittstelle eines Servers entspricht, der Festlegung einer Schnittstelle zum Server, die der Schnittstelle eines Stellvertreterobjekts entspricht, das sich im Adressraum des Client befindet, und des Verzeichnens einer Kennung durch die Brücke, die dem Stellvertreterobjekt zugeordnet ist, das sich im Adressraum des Client befindet.
- In einer ersten Ausführungsform arbeiten der Client und der Server asynchron, und der Schritt der Festlegung einer Schnittstelle zum Client umfasst das Ableiten der Schnittstelle zum Client von einem Server durch Vererbung und das Überschreiben von Methoden, die von dem Server geerbt wurden, um den Namen des Client, der die Anforderung stellt, zu verzeichnen und um die Anforderung an den Server weiterzuleiten, und der Schritt der Festlegung einer Schnittstelle zum Server umfasst das Ableiten der Schnittstelle zum Server von einem Client durch Vererbung und das Überschreiben von Methoden, die von dem Client geerbt wurden, um Antwortparameter an den Client weiterzuleiten.
- In einer zweiten Ausführungsform arbeiten der Client und der Server synchron, und der Schritt der Festlegung einer Schnittstelle zum Client umfasst das Ableiten der Schnittstelle zum Client von einem Server durch Vererbung und das Überschreiben von Methoden, die von dem Server geerbt wurden, um die Methoden auf dem Server aufzurufen und um Antwortparameter an den Client weiterzuleiten.
- Die Erfindung stellt auch ein verteiltes objektorientiertes Datenverarbeitungssystem bereit, das einen oder mehr Server, einen oder mehr Clients und eine Brücke, wie sie vorstehend beschrieben wurde, umfasst.
- Ausführungsformen der Erfindung werden nun anhand eines Beispiels und mit Bezug auf die beiliegenden Zeichnungen beschrieben, in denen:
- Fig. 1 ein Blockdiagramm eines Object Request Broker nach dem Stand der Technik ist, der sich in einer Client/Server-Umgebung befindet;
- Fig. 2 ein Blockschaltbild eines Datenverarbeitungssystem nach dem Stand der Technik ist, das sich zum Einsatz mit der vorliegenden Erfindung eignet;
- Fig. 3 ein Blockdiagramm eines Systems ist, das zusammen mit einer Brücke der vorliegenden Erfindung einen Client und einen Server nach dem Stand der Technik enthält, die für einen asynchronen Betrieb konfiguriert sind;
- Fig. 4 ein Flussdiagramm des asynchronen Betriebs eines Client und eines Servers nach dem Stand der Technik ist;
- Fig. 5 ein Flussdiagramm des asynchronen Betriebs des Systems von Fig. 3 gemäß der vorliegenden Erfindung ist;
- Fig. 6 ein Blockdiagramm eines Systems ist, das zusammen mit einer Brücke der vorliegenden Erfindung einen Client und einen Server nach dem Stand der Technik enthält, die für einen synchronen Betrieb konfiguriert sind;
- Fig. 7 ein Flussdiagramm des synchronen Betriebs eines Client und eines Servers nach dem Stand der Technik ist;
- Fig. 8 ein Flussdiagramm des synchronen Betriebs des Systems von Fig. 6 gemäß der vorliegenden Erfindung ist;
- Fig. 9 ein Blockdiagramm ist, das die gleichmäßige Verteilung der Arbeitslast zwischen mehreren Servern unter Verwendung einer Brücke gemäß der vorliegenden Erfindung zeigt;
- Fig. 10 ein Blockschaltbild ist, das die dem Stand der Technik entsprechende Verbindung von mehreren Clients mit mehreren Servern zeigt; und
- Fig. 11 ein Blockschaltbild ist, das die Verbindung von mehreren Clients mit mehreren Servern unter Verwendung einer Brücke gemäß der vorliegenden Erfindung zeigt.
- Die Erfindung kann auf einer Vielzahl von Rechnern oder einem Rechnerverbund unter mehreren verschiedenen Betriebssystemen ausgeführt werden. Der Rechner könnte beispielsweise ein Personal Computer, ein Minicomputer, ein Großrechner oder ein Rechner sein, der in einem aus anderen Rechnern bestehenden verteilten Netzwerk betrieben wird. Obwohl die jeweilige Wahl des Rechners lediglich durch die Anforderungen an die Kapazität des Arbeitsspeichers und des Plattenspeichers eingeschränkt wird, könnten Rechner der Rechnerserie IBM PS/2 bei der vorliegenden Erfindung verwendet werden (IBM ist ein eingetragenes Warenzeichen, und PS/2 ist ein Warenzeichen der IBM Corporation). Weitere Informationen über die Rechnerserie PS/2 von IBM findet der Leser im "Technical Reference Manual Personal System/2 (Model 80)", IBM Corporation Teile-Nr. 68X 2256, Bestellnummer SGSX-2254. Ein Betriebssystem, das auf einem Personal Computer vom Typ IBM PS/2 lauftähig ist, ist das Betriebssystem OS/2 2.0 von IBM. Weitere Informationen über das Betriebssystem IBM OS/2 2.0 findet der Leser in "OS/2 2.0 Technical Library, Programming Guide Vol. 1, 2, 3, Version 2.00", Bestellnummern 10G6261, 10G6495, 10G6494 (OS/2 ist ein Warenzeichen der IBM Corporation).
- Alternativ dazu ist das Rechnersystem möglicherweise ein System der Rechnerreihe IBM RISC System/6000, die unter dem Betriebssystem AIX laufen (RISC System/6000 und AIX sind Warenzeichen der IBM Corporation). Die verschiedenen Modelle der Rechnerreihe RISC System/6000 sind in vielen Veröffentlichun gen der IBM Corporation beschrieben, zum Beispiel in "RISC System/6000, 7073 and 7016 POWERstation and POWERserver Hardware Technical Reference", Bestellnummer SA2: 3-2644-00 (POWERstation und POWERserver sind Warenzeichen der IBM Corporation). Das Betriebssystem AIX ist in "General Concepts and Procedure -- AIX Version 3 for RISC System/6000", Bestellnummer SC23-2202- 00, sowie in anderen Veröffentlichungen der IBM Corporation beschrieben.
- In Fig. 2 ist ein Rechner 10, der eine Systemeinheit 11, eine Tastatur 12, eine Maus 13 und einen Bildschirm 14 umfasst, in Form eines Blockschaltbildes gezeigt. Die Systemeinheit 11 enthält einen Systembus oder eine Vielzahl von Systembussen 21, an den beziehungsweise an die verschiedene Komponenten angeschlossen sind und über den/die die Kommunikation zwischen den verschiedenen Komponenten erfolgt. Der Mikroprozessor 22 ist mit dem Systembus 21 verbunden und wird von einem Nur- Lese-Speicher (ROM) 23 und einem Direktzugriffsspeicher (RAM) 24, die ebenfalls an den Systembus 21 angeschlossen sind, unterstützt. Ein Mikroprozessor der Rechnerreihe IBM PS/2 ist ein Mikroprozessor der Mikroprozessorfamilie von Intel, zu der die Mikroprozessoren vom Typ 386 oder 486 gehören. Jedoch können andere Mikroprozessoren einschließlich, aber nicht darauf beschränkt, Prozessoren der Mikroprozessorfamilie von Motorola, wie beispielsweise die Mikroprozessoren vom Typ 68000, 68020 oder 68030, und verschiedene Reduced-Instruction-Set- Computer-(RISC-)Mikroprozessoren, wie beispielsweise der von IBM hergestellte PowerPC-Chip, oder andere Mikroprozessoren von Hewlett Packard, Sun, Motorola und anderen Herstellern in dem bestimmten Rechner verwendet werden.
- ROM 23 enthält neben anderem Code das Basic Input-Output System (BIOS), das grundlegende Hardwareoperationen, wie zum Beispiel die interaktive Kommunikation, sowie die Plattenlaufwerke und die Tastatur steuert. RAM 24 ist der Hauptspeicher, in den das Betriebssystem und Anwendungsprogramme geladen werden. Der Speicherverwaltungschip 25 ist mit dem Systembus 21 verbunden und steuert Direktspeicherzugriffsoperationen einschließlich der Weiterleitung von Daten zwischen dem RAM 24 und dem Festplattenlaufwerk 26 sowie dem Diskettenlaufwerk 27. Das CD-ROM-Laufwerk 32, das ebenfalls an den Systembus 21 angeschlossen ist, dient zur Speicherung einer großen Datenmenge, z. B. eines Multimediaprogramms oder einer Multimediapräsentation.
- Verschiedene E/A-Steuereinheiten sind ebenfalls mit diesem Systembus 21 verbunden: die Tastatur-Steuereinheit 28, die Maus- Steuereinheit 29, die Video-Steuereinheit 30 und die Audio- Steuereinheit 31. Die Tastatur-Steuereinheit 28 stellt erwartungsgemäß die Hardwareschnittstelle für die Tastatur 12 bereit, die Maus-Steuereinheit 29 stellt die Hardwareschnittstelle für die Maus 13 bereit, die Video-Steuereinheit 30 bildet die Hardwareschnittstelle für den Bildschirm 14, und die Audio-Steuereinheit 31 bildet die Hardwareschnittstelle für die Lautsprecher 15a und 15b. Eine E/A-Steuereinheit 40, wie beispielsweise ein Token-Ring-Adapter, ermöglicht die Übertragung an andere, ähnlich konfigurierte Datenverarbeitungssysteme über ein Netzwerk 46.
- In einer der bevorzugten Ausführungen der Erfindung befindet sich der Satz von Befehlen 48 bis 52, der zuvor mit Bezug auf Fig. 1 beschrieben wurde, im Direktzugriffsspeicher 24 von einem oder mehr Datenverarbeitungssystemen, die im Allgemeinen in der vorstehend beschriebenen Art und Weise konfiguriert sind. Bis er vom Datenverarbeitungssystem benötigt wird, kann der Befehlssatz in einem anderen Rechnerspeicher, zum Beispiel im Festplattenlaufwerk 26 oder in einem auswechselbaren Speicher, wie zum Beispiel einer optischen Platte, zur schließlichen Verwendung im CD-ROM-Laufwerk 32 oder auf einer Diskette zur schließlichen Verwendung im Diskettenlaufwerk 27 abgelegt werden. Die Speicheradressräume, die mittels der ORBs miteinander verbunden werden, können sich in getrennten Systemen befinden, die über das Netzwerk 46 miteinander kommunizieren, oder sie können zwei oder mehr Adressräume 53, 54 im Speicher eines einzigen Datenverarbeitungssystems sein, wie in Fig. 2 dargestellt ist.
- Bezug nehmend auf Fig. 3, wird bei der vorliegenden Erfindung eine Brücke 300 zwischen dem Client 53 und dem Server 54 eingefügt. Die Brücke 300 hat den Zweck, Anforderungen vom Client 53 zu empfangen, die für den Server 54 bestimmt sind, die Anforderungen an den Server 54 weiterzuleiten, Antworten vom Server 54 zu empfangen, die für den Client 53 bestimmt sind, und die Antworten an den Client 53 weiterzuleiten. Die Brücke 300 stellt eine Schnittstelle zum Client 53 dar, die der des Servers 54 entspricht, und eine Schnittstelle zum Server 54, die der des Client 53 entspricht. Auf diese Weise können weder der Client 53 noch der Server 54 das Vorhandensein der Brücke 300 feststellen, und beide arbeiten so, als wäre sie nicht vorhanden.
- Zwei Ausführungsformen der Erfindung werden beschrieben, eine für den Betrieb in einer asynchronen Umgebung und eine für den Betrieb in einer synchronen Umgebung. In einer asynchronen Umgebung (die in Fig. 5 gezeigt ist) fährt der Client 53 mit anderen Verarbeitungsaufgaben fort, während er auf eine Antwort vom Server 54 wartet. In einer synchronen Umgebung (die in Fig. 8 gezeigt ist) wartet der Client 53 auf eine Antwort vom Server 54, bevor er mit der Verarbeitung fortfährt.
- Nehmen wir nochmals Bezug auf Fig. 3, welche die Bestandteile einer Brücke 300 zur Verwendung mit einem Client und einem Server enthält, die in einer asynchronen Betriebsart arbeiten. Der Client 53, die Brücke 300 und der Server 54 enthalten alle etwas, das in der Terminologie von DSOM als Server-Objekt bezeichnet wird. Diese Server-Objekte sind jeweils als das Server-Objekt des Client 404, das Server-Objekt der Brücke 301 und das Server-Objekt des Servers 501 gezeigt. Diese Objekte sind nicht mit den Funktionen zu verwechseln, die ein Server ausführt, oder mit dem Server selbst. Ein Server-Objekt ist ein Objekt, das Objekte in einem Server verwaltet, damit Client-Anwendungen Objekte in Servern erzeugen und löschen können. Es stellt auch fest, welches Objekt in einem Server eine Anforderung verarbeiten soll und sendet diese Anforderungen, die es für den Server empfängt, zur Ausführung an das festgestellte Objekt.
- Der Client 53 enthält mindestens ein Objekt mit der Bezeichnung Objekt des Client 403, das im Client die Anforderung für einen vom Server 54 zu erbringenden Dienst stellt. Eine Client-Anwendung (nicht gezeigt) ruft das Objekt des Client 403 zur Ausführung von Operationen an Daten auf. Diese Operationen werden entweder lokal im Objekt des Client 403 selbst oder fern ausgeführt, indem das Objekt des Client 403 Dienste von einem Server 54 anfordert. Der Server 54 enthält mindestens ein Objekt mit der Bezeichnung Objekt des Servers 503 (das nicht mit einem Server-Objekt zu verwechseln ist). Dies entspricht einem Zielobjekt, das zuvor mit Bezug auf die Fig. 1 und 2 beschrieben wurde. Es handelt sich dabei um das Objekt, das tatsächlich die vom Objekt des Client 403 angeforderten Dienste erbringt. Die Brücke 300 enthält ein Objekt mit der Bezeichnung Objekt der Brücke 304, das die Funktionen der Brücke selbst bereitstellt.
- Der Client 53, die Brücke 300 und der Server 54 enthalten alle etwas, das in der DSOM-Terminologie als Stellvertreterobjekt bezeichnet wird. Ein Stellvertreterobjekt ist ein Objekt, das als lokaler Vertreter eines fernen Zielobjekts dient. Ein Stellvertreterobjekt erbt die Schnittstelle des Zielobjekts, so dass es auf dieselben Methoden antwortet. Auf dem Stellvertreterobjekt aufgerufene Methoden werden nicht lokal ausgeführt, sondern zur Ausführung an das wirkliche Zielobjekt weitergeleitet. Ein Programm, das in einem Client läuft, hat für jedes ferne Objekt in einem Server, an dem es Operationen ausführt, immer ein lokales Stellvertreterobjekt im Client. Das Stellvertreterobjekt enthält einen Zeiger auf den Speicherplatz im Server, an dem sich das Zielobjekt befindet. Immer wenn eine Anforderung an einen fernen Server gestellt wird, eine Methode auf einem fernen Objekt aufzurufen, wird das Stellvertreterobjekt von der DSOM-Laufzeitumgebung erzeugt.
- Der Client 53 enthält ein Stellvertreterobjekt mit der Bezeichnung Server-Stellvertreter der Brücke 401, bei dem es sich um den lokalen Vertreter des Server-Objekts der Brücke 301 handelt. Der Client ist der Meinung, dass dies das Server- Objekt des Servers 501 in dem Server darstellt, der die Dienste erbringt. Ebenso enthält die Brücke 300 ein Stellvertreterobjekt mit der Bezeichnung Server-Stellvertreter des Servers 302, bei dem es sich um den lokalen Vertreter des Server- Objekts des Servers 501 handelt. Wie vorstehend erklärt wurde, ist ein Server-Objekt ein Objekt, das Objekte im Server verwaltet.
- Der Client 53 enthält auch ein Stellvertreterobjekt mit der Bezeichnung Objektstellvertreter der Brücke 402, bei dem es sich um den lokalen Vertreter des Objekts der Brücke 304 handelt. Der Client ist der Meinung, dass dies das Objekt 503 in dem Server darstellt, der die Dienste erbringt. Ebenso enthält die Brücke 300 ein Stellvertreterobjekt mit der Bezeichnung Objektstellvertreter des Servers 303, bei dem es sich um den lokalen Vertreter des Objekts des Servers 503 handelt. Diese Stellvertreter werden bei den Übertragungen zwischen dem Client 53 und dem Server 54 verwendet, die vom Client 53 eingeleitet werden. In einem asynchronen System werden Übertragungen auch vom Server 54 eingeleitet, wenn er eine Antwort für den Client 53 hat. Diese Übertragungen werden mittels eines Objektstellvertreters der Brücke 502, der sich im Server 54 befindet und dem Server 54 die Kommunikation mit der Brücke 300 ermöglicht, und mittels eines Objektstellvertreters des Client 305 erreicht, der sich in der Brücke 300 befindet und der Brücke 300 die Kommunikation mit den Client 53 ermöglicht.
- Wie nun aus der vorstehenden Beschreibung hervorgeht, werden die in Fig. 3 gezeigten Objekte und die Stellvertreterobjekte, die sich im oberen Teil eines jeden der Blöcke befinden, die den Client 53, die Brücke 300 und den Server 54 darstellen, bei der Erzeugung, der Löschung und Positionierung von Objekten durch den Client und die Brücke verwendet. Die in Fig. 3 gezeigten Objekte und die Stellvertreterobjekte, die sich im unteren Teil eines jeden der Blöcke befinden, die den Client 53, die Brücke 300 und den Server 54 darstellen, werden bei dem Übertragungsprozess zwischen dem Client 53, der Brücke 300 und dem Server 54 verwendet.
- Fig. 4 zeigt den Dialogverkehr zwischen einem Client nach dem Stand der Technik und einem Server nach dem Stand der Technik über ein Netzwerk nach dem Stand der Technik in einer asynchronen Umgebung. In einer asynchronen Umgebung leitet der Client eine Kommunikation mit dem Server ein, indem er an den Server eine Anforderung für die Erbringung eines Dienstes stellt. Der Server bestätigt die Anforderung, und der Client fährt mit anderen Verarbeitungsaufgaben fort. Der Server kann die Anforderung nach einer Verzögerung abarbeiten, während er gegebenenfalls auch andere Verarbeitungsaufgaben zum Abschluss bringt. Wenn der Server die Anforderung abgearbeitet hat, leitet er eine weitere Kommunikation mit dem Client ein, indem er dem Client eine Antwort zukommen lässt. Diese Kommunikation wird von dem "Server" eingeleitet, der tatsächlich eine Anforderung an den "Client" stellt, wobei diese Anforderung darin besteht, die Antwort von der vorherigen Anforderung anzunehmen. Unter diesen Umständen ist zu berücksichtigen, dass der "Server" und der "Client" vertauschte Rollen haben, wobei der Server den Client um Annahme der Antwort nachsucht. Dies ist der Grund dafür, dass der Client im asynchronen Betrieb ein Server-Objekt benötigt.
- Im Schritt 310 stellt der Client eine Anforderung für einen vom Server zu erbringenden Dienst. Diese Anforderung wird im Schritt 320 über das Netzwerk an den Server übertragen. Im Schritt 322 sendet der Server eine sofortige Bestätigung an den Client. Im Schritt 330 nimmt der Server die Anforderung für die Erbringung eines Dienstes an und geht dazu über, die Anforderung für die Erbringung eines Dienstes im Schritt 332 zu verarbeiten. Während der Server die Anforderung verarbeitet, bringt der Client im Schritt 312 andere Verarbeitungsaufgaben zum Abschluss. Vor der Verarbeitung dieser Anforderung ist der Server möglicherweise auch mit der Verarbeitung anderer Anforderungen beschäftigt. Nachdem die Verarbeitung der Anforderung im Schritt 332 abgeschlossen wurde, sendet der Server im Schritt 334 eine Antwort 324 an den Client. Die Antwort wird im Schritt 314 empfangen, und der Client fährt mit der Verarbeitung fort.
- Fig. 5 zeigt den Dialogverkehr, der stattfindet, wenn eine Brücke in das asynchrone System von Fig. 4 eingefügt wird. Die Interaktionen des Client in den Schritten 310, 312 und 314 sind gleich wie in Fig. 4, ebenso wie die Interaktionen des Servers in den Schritten 330, 332 und 334. Die Anforderung 320, die sofortige Rückgabe 322 und die Antwort 324 werden zwischen dem Client und der Brücke und zwischen der Brücke und dem Server in entsprechende Reaktionen aufgeteilt. Die Arbeitsweise der Brücke als Reaktion auf diese Interaktionen wird nun beschrieben. Im Schritt 310 wird eine Anforderung 320A vom Client an die Brücke übertragen. Im Schritt 410 sendet die Brücke eine sofortige Bestätigung 322A an den Client, und die Brücke nimmt die Anforderung für die Erbringung eines Dienstes 320A an. Statt die Anforderung zu verarbeiten, verzeichnet die Brücke im Schritt 412 den Namen des Client und bringt jedwede zusätzliche Verarbeitung im Schritt 414 zum Abschluss.
- Bei dieser zusätzlichen Verarbeitung kann es sich um jedwede zusätzliche Verarbeitung handeln, die gewünscht wird, um die Anforderung von dem Client oder deren zugehörige Daten vollständig zu verarbeiten. Eine solche Verarbeitung kann Änderungen an der Anforderung oder den zugehörigen Daten vornehmen, oder sie kann die Anforderung und die zugehörigen Daten unverändert lassen. Beispiele für eine solche Verarbeitung sind unter anderem:
- 1. Die Tatsache, dass die in der Anforderung ausführlich angegebene Methode mit Parametern aufgerufen wurde, die gleich den zu der Anforderung gehörenden Daten sind und protokolliert werden können;
- 2. die Verarbeitung kann durchgeführt werden, um festzustellen, an welchen von mehreren Servern diese Anforderung weitergeleitet werden muss, um eine gleichmäßige Verteilung der Arbeitslast zwischen den Servern vorzunehmen, wobei die Ergebnisse dieser Verarbeitung zur Feststellung dienen, wohin die Anforderung geleitet wird; oder
- 3. die Anforderung kann geprüft werden, um festzustellen, an welchen Server der Client seiner Meinung nach die Anforderung geschickt hat, und dann wird die Anforderung von der Brücke an diesen Server geleitet.
- Im Schritt 416 leitet die Brücke die Anforderung für die Erbringung eines Dienstes 320B an den Server weiter. Im Schritt 330 sendet der Server eine sofortige Bestätigung 322B an die Brücke. Während der Server die Anforderung verarbeitet, bringt die Brücke im Schritt 420 andere Verarbeitungsaufgaben zum Abschluss. Nachdem die Verarbeitung der Anforderung durch den Server im Schritt 332 abgeschlossen wurde, sendet der Server im Schritt 334 eine Antwort 324A an die Brücke. Die Antwort wird im Schritt 430 empfangen, und jedwede zusätzliche Verarbeitung, wie beispielsweise die Protokollierung der Parameter, die der Server an den Client zurückgesandt hat, wird im Schritt 432 von der Brücke durchgeführt. Im Schritt 434 leitet die Brücke dann die Antwort 324B an den Client weiter.
- Eine Brücke (300 in Fig. 3) wird von einem Client-Objekt und einem Server-Objekt durch Vererbung abgeleitet. Das bedeutet, dass die Brücke die Schnittstelle (das heißt alle Attribute und Methoden) von sowohl dem Client-Objekt als auch dem Server-Objekt erbt. Das Beispiel 1 zeigt, wie eine Brücke in der Sprache IDL bei einem asynchronen System definiert wird. Beispiel 1 - Definition einer asynchronen Brückenklasse
- Nehmen wir nochmals Bezug auf Fig. 6, welche die Bestandteile einer Brücke 300 zur Verwendung mit einem Client 53 und einem Server 54 enthält, die in einer synchronen Betriebsart arbeiten. Die Brücke 300 und der Server 54 enthalten ein Server-Objekt. Diese Server-Objekte sind jeweils als das Server-Objekt der Brücke 301 und das Server-Objekt des Servers 501 gezeigt. Der Server 54 enthält mindestens ein Objekt mit der Bezeichnung Objekt des Servers 503 (das nicht mit einem Server-Objekt zu verwechseln ist). Dies ist das Objekt, das tatsächlich die von dem Client angeforderten Dienste erb ringt. Die Brücke 300 enthält ein Objekt mit der Bezeichnung Objekt der Brücke 304, das die Funktionen der Brücke selbst bereitstellt.
- Der Client 53 enthält ein Stellvertreterobjekt mit der Bezeichnung Server-Stellvertreter der Brücke 401, bei dem es sich um den lokalen Vertreter des Server-Objekts der Brücke 301 handelt. Der Client ist der Meinung, dass dies das Server- Objekt des Servers 501 in dem Server darstellt, der die Dienste erbringt. Ebenso enthält die Brücke 300 ein Stellvertreterobjekt mit der Bezeichnung Server-Stellvertreter des Servers 302, bei dem es sich um den lokalen Vertreter des Server- Objekts des Servers 501 handelt. Wie vorstehend erklärt wurde, ist ein Server-Objekt ein Objekt, das Objekte im Server verwaltet.
- Der Client 53 enthält auch ein Stellvertreterobjekt mit der Bezeichnung Objektstellvertreter der Brücke 402, bei dem es sich um den lokalen Vertreter des Objekts der Brücke 304 handelt. Der Client ist der Meinung, dass dies das Objekt 503 in dem Server darstellt, der die Dienste erbringt. Ebenso enthält die Brücke 300 ein Stellvertreterobjekt mit der Bezeichnung Objektstellvertreter des Servers 303, bei dem es sich um den lokalen Vertreter des Objekts des Servers 503 handelt. Diese Stellvertreter werden bei den Übertragungen zwischen dem Client 53 und dem Server 54 verwendet, die vom Client 53 eingeleitet werden.
- In einem synchronen System werden Übertragungen nur vom Client 53 eingeleitet. Diese Übertragungen werden mittels des Objektstellvertreters der Brücke 402, der sich im Client 53 befindet und dem Client 53 die Kommunikation mit der Brücke 300 ermöglicht, und mittels eines Objektstellvertreters des Servers 303 erreicht, der sich in der Brücke 300 befindet und der Brücke 300 die Kommunikation mit dem Server 54 ermöglicht.
- Wie aus Fig. 6 hervorgeht, werden die Objekte und die Stellvertreterobjekte, die sich im oberen Teil eines jeden der Blöcke befinden, die den Client 53, die Brücke 300 und den Server 54 darstellen, bei der Erzeugung, der Löschung und Positionierung von Objekten durch den Client und die Brücke verwendet. Die Objekte und die Stellvertreterobjekte, die sich im unteren Teil eines jeden der Blöcke befinden, die den Client 53, die Brücke 300 und den Server 54 darstellen, werden bei dem Übertragungsprozess zwischen dem Client 53, der Brücke 300 und dem Server 54 verwendet.
- Fig. 7 zeigt den Dialogverkehr zwischen einem Client nach dem Stand der Technik und einem Server nach dem Stand der Technik über ein Netzwerk nach dem Stand der Technik in einer synchronen Umgebung. In einer synchronen Umgebung leitet der Client eine Kommunikation mit dem Server ein, indem er an den Server eine Anforderung für die Erbringung eines Dienstes stellt. Der Server arbeitet die Anforderung ab und schickt das Ergebnis an den Client zurück, indem er einfach die sich aus der Verarbeitung der Anforderung ergebenden Parameter zurückgibt (??). Der Server leitet keine Übertragung mit dem Client ein, um die Anwort zurückzusenden. Der Client 53 empfängt die Antwort einfach über Rückgabeparameter von der Methode, die er auf dem Server 54 aufgerufen hat.
- Bei dem System nach dem Stand der Technik gibt es zwei Unterschiede zwischen dem Betrieb in einer asynchronen Umgebung, die vorstehend mit Bezug auf Fig. 4 beschrieben wurde, und einer synchronen Umgebung. Der erste Unterschied ist, dass der Client, nachdem er im Schritt 310 eine Anforderung für die Erbringung eines Dienstes gestellt hat, andere Verarbeitungsaufgaben im Schritt 312 nicht zum Abschluss bringt, sondern stattdessen im Schritt 510 auf eine Antwort vom Server wartet. Der zweite Unterschied ist, dass der Server im Schritt 322 keine sofortige Bestätigung an den Client schickt. Ansonsten sind die nummerierten Schritte in Fig. 7 mit den entsprechenden nummerierten Schritten in Fig. 4 identisch.
- Fig. 8 zeigt den Dialogverkehr, der stattfindet, wenn eine Brücke in das synchrone System von Fig. 7 eingefügt wird. Die Interaktionen des Client in den Schritten 310 und 314 sind gleich wie in Fig. 7, ebenso wie die Interaktionen des Servers in den Schritten 330, 332 und 334. Die Anforderung 320 und die Antwort 324 werden zwischen dem Client und der Brücke und zwischen der Brücke und dem Server in entsprechende Reaktionen aufgeteilt. Die Arbeitsweise der Brücke als Reaktion auf diese Interaktionen wird nun beschrieben.
- Im Schritt 410 nimmt die Brücke die Anforderung für die Erbringung eines Dienstes 320A an. Statt die Anforderung zu verarbeiten, verzeichnet die Brücke den Namen des Client im Schritt 412 und bringt jedwede zusätzliche Verarbeitung im Schritt 414 zum Abschluss. Diese zusätzliche Verarbeitung kann beliebige oder alle Elemente der zusätzlichen Verarbeitung enthalten, die vorstehend in Verbindung mit der asynchronen Umgebung und mit Bezug auf Fig. 5 beschrieben wurden. Im Schritt 416 leitet die Brücke die Anforderung für die Erbringung eines Dienstes an den Server weiter. Während der Server die Anforderung verarbeitet, wartet die Brücke im Schritt 610 auf eine Antwort vom Server. Nachdem der Server im Schritt 332 die Verarbeitung der Anforderung abgeschlossen hat, sendet er im Schritt 334 eine Antwort 324A an die Brücke. Die Antwort wird im Schritt 430 empfangen, und im Schritt 432 führt die Brücke jedwede zusätzliche Verarbeitung durch, wie zum Beispiel die Protokollierung der vom Server an den Client zurückgesandten Parameter. Im Schritt 434 leitet die Brücke 300 dann die Antwort 324B an den Client weiter.
- Wie aus der vorstehenden Beschreibung hervorgeht, arbeitet der Client synchron mit der Brücke, und folglich ist die Schnittstelle, die der Client von der Brücke sieht, genauso ausgelegt, als würde der Client direkt mit dem Server kommunizieren. Die Brücke arbeitet synchron mit dem Server, und folglich ist die Schnittstelle, die der Server von der Brücke sieht, genauso ausgelegt, als würde der Server direkt mit dem Client kommunizieren.
- Eine Brücke wird nur von einem Server abgeleitet. Ausdrückliche Client-Objekte brauchen nicht vorhanden zu sein, da ein Client 53 einfach eine Methode auf einem Server 54 aufruft und die Antwort über Rückgabeparameter in genau dieser Methode empfängt. Vom Server 54 wird keine getrennte Kommunikation eingeleitet. Das Beispiel 2 zeigt, wie ein Objekt 300 für ein synchrones System definiert wird. Beispiel 2 - Definition einer synchronen Brückenklasse
- Der Aufbau und die Definition einer Brücke wurden vorstehend sowohl für den asynchronen Betrieb als auch den synchronen Be trieb näher bezeichnet. Nachdem eine Brücke zur Verwendung in einer der beiden Betriebsarten definiert worden ist, muss die definierte Brücke transparent zwischen den Client und den Server eingefügt werden, so dass bei einer Anforderung, einen Server zu erzeugen, stattdessen eine Brücke mit der vollständigen Schnittstelle eines Server-Objekts erzeugt wird.
- Der Client 53 und der Server 54 enthalten Instanzen von jeweiligen Client- und Server-Klassen. Es gibt viele verschiedene Methoden, die zum Auffinden von fernen Objekten, zur Erzeugung einer Instanz eines fernen Objekts und zum Aufrufen von Methoden auf fernen Objekten verwendet werden können.
- Eine typische, repräsentative Methode nach dem Stand der Technik wird nun beschrieben, wobei nochmals Bezug auf Fig. 1 genommen wird.
- 1. Ein DSOM Object Manager (SOMD_ObjectMgr) (der sich in 50 befindet) wurde entweder bei der Initialisierung des Client erzeugt oder muss jetzt durch Aufruf der Funktion SOMD_Init () erzeugt werden, die im Client 53 als Teil des Object Request Broker 50 zur Verfügung steht.
- 2. Der Client 53 führt eine Methode auf dem SOMD_ObjectMgr aus, um einen Server 54 einer geeigneten Objektklasse zur Verwendung mit dem Client 53 zu lokalisieren.
- SOMD_ObjectMgr erzeugt im Client 53 ein Stellvertreterobjekt (das sich in 50 befindet) als lokalen Vertreter für das Server-Objekt (das sich in 52 befindet) auf dem fernen Server 54. Man beachte, dass im fernen Server 54 noch kein Server-Objekt vorhanden ist.
- 3. Der Client 53 gibt einen Methodenaufruf somdCreateObj() auf dem Server-Stellvertreterobjekt aus. In dem Methodenaufruf ist als Parameter die Klasse des Zielobjekts 51 enthalten, das der Client erzeugen möchte. Mit dem fernen Server wird eine Verbindung aufgebaut, und auf dem fernen Server 54 wird ein Server-Objekt (nicht gezeigt) der geeigneten Klasse erzeugt. Sobald das Server-Objekt (nicht gezeigt) erzeugt worden ist, erzeugt es selbst ein Zielobjekt 51 der angeforderten Klasse im Server 54. Als Teil der Rückgabeparameter werden dem Client 53 Informationen geliefert, die es ihm ermöglichen, für das Zielobjekt 51 ein Stellvertreterobjekt 49 zu erzeugen.
- 4. Der Client ist nun in der Lage, Methodenaufrufe auf seinem lokalen Stellvertreterobjekt 49 auszugeben, die auf dem Zielobjekt 51 ausgeführt werden, und die Ergebnisse werden an den Client 53 zurückgesandt.
- Es kann mehr als eine Klasse von Server-Objekten geben. Beispielsweise kann es eine Klasse von Servern zur Verwendung bei der Erbringung von Druckdiensten, eine weitere für Dateispeicherdienste und noch eine für Übertragungsdienste geben. Nach dem Stand der Technik kommunizieren diese ohne die Hilfe der vorliegenden Erfindung miteinander.
- Das Verfahren, mit dem die Brücke transparent zwischen den Client und den Server eingefügt wird, wird nun mit Bezug auf Fig. 3 beschrieben.
- Eine Brückenklasse wird erzeugt, die einer jeden der Server- Objektklassen nach dem Stand der Technik; entspricht. Das Server-Objekt des Servers 501 ist eine Instanz einer Server-Ob jektklasse nach dem Stand der Technik. Das Server-Objekt der Brücke 301 ist eine Unterklasse der vorgegebenen Serverklasse. In dem obigen Beispiel kann es eine Brückenklasse von Servern zur Verwendung bei der Erbringung von Druckdiensten, eine andere für Dateispeicherdienste und noch eine für Übertragungsdienste geben.
- Das Server-Objekt (das von der Serverklasse geerbt wurde) im Rahmen der Definition einer jeden Brückenserverklasse wird geändert, so dass es, wenn das Server-Objekt der Brücke 301 als Teil einer Brückenserverklasse erzeugt wird, die Änderungen enthält. Die Änderungen werden an der Methode, die Zielobjekte erzeugt, und der Methode, die vom Server-Objekt empfangene Methoden Zielobjekten im Server zuweist, vorgenommen.
- Die geänderte Methode zur Erzeugung des Objekts des Servers 503 (eines Zielobjekts) nimmt die Anforderung vom Client zur Erzeugung eines Objekts des Servers 503 in einem Server an und konstruiert an seiner Stelle ein Brückenobjekt 304.
- Die geänderte Methode, die vom Server-Objekt der Brücke 301 empfangene Methoden Objekten des Servers 503 (Zielobjekten) im Server zuweist, verzeichnet einfach den Namen des Client (Schritt 412 in Fig. 5), bringt die zusätzliche Verarbeitung zum Abschluss (Schritt 414 in Fig. 5) und ruft die ursprüngliche Zuweisungsmethode auf, um die Methode dem Objekt zuzuweisen.
- Bezug nehmend auf Fig. 9, kann ein einzelner Client 53 unter Verwendung der Brücke 300 der vorliegenden Erfindung, die vor stehend beschrieben wurde, Dienste von mehreren Servern 54A bis 54D anfordern. Der Client weiß nicht, dass die Anforderungen auf verschiedenen Servern 54A bis 54D ausgeführt werden. Die Brücke 300 entscheidet, an welchen der diversen Server 54A bis 54D die Anforderung geleitet werden soll.
- Eine gleichmäßige Verteilung der Arbeitslast zwischen jedem der diversen Server 54A bis 54D lässt sich ohne zusätzliche Programmierung entweder im Client 53 oder in den Servern 54A bis 54D erreichen. In einer Ausführungsform, die eine gleichmäßige Verteilung der Arbeitslast erreicht, verwendet die Brücke 300 einen "Round-Robin"-Algorithmus. Bei diesem Algorithmus wird jede neue Anforderung eines Client an den nächsten Server 54A bis 54D in Folge geleitet. In einer anderen Ausführungsform, die dem Erreichen einer gleichmäßigen Verteilung der Arbeitslast dient, werden die von jedem der Server 54A bis 54D erhaltenen Antwortzeiten gemessen, und komplexere Algorithmen, die dem Fachmann bekannt sind, werden verwendet, um die Arbeitslast gleichmäßig zwischen den Servern 54A bis 54D zu verteilen. Beide Ausführungsformen können realisiert werden, ohne Änderungen am Code in einem der Server 54A bis 54D oder im Client 53 vornehmen zu müssen.
- Fig. 10 zeigt drei Clients 53A bis 53C, die an drei nach dem Stand der Technik verbundene Server 54A bis 54C angeschlossen sind. Jeder der Clients 53A bis 53C hat eine Verbindung 901 bis 909 zu jedem der Server 54A bis 54C. Somit gibt es zwischen den Clients und den Servern insgesamt neun Verbindungen 901 bis 909.
- Bezug nehmend auf Fig. 11, kann es mit der Brücke 300 der vorliegenden Erfindung, die vorstehend beschrieben wurde, meh rere Clients 53A bis 53C geben, die Dienste von mehreren Servern 54A bis 54C anfordern, ohne dass einer der Clients 53A bis 53C weiß, dass die Anforderungen auf verschiedenen Servern 54A bis 54C ausgeführt werden oder dass die Server 54A bis 54C andere Anforderungen für andere Clients 53A bis 53C ausführen. Die Brücke 300 entscheidet, an welchen der diversen Servern 54A bis 54C jede einzelne Anforderung von jedem der Clients 53A bis 53C geleitet werden soll.
- Die Anzahl der Verbindungen im Netzwerk wird verringert, indem alle Anforderungen durch die Brücke 300 geleitet werden. In verallgemeinerter Form wird die Anzahl der Verbindungen in einem System mit n Clients 53 und m Servern 54 von n*m auf n+m verringert.
Claims (13)
1. Brücke (300) zur Verwendung zwischen einem Client (53) und
einem Server (54) in einem verteilten objektorientierten
Datenverarbeitungssystem, wobei die Brücke eine
Schnittstelle zu einem Stellvertreterobjekt hat, das sich im
Adressraum des Client befindet, die der Schnittstelle
eines Servers entspricht, und eine Schnittstelle zum Server,
die der Schnittstelle eines Stellvertreterobjekts
entspricht, das sich im Adressraum des. Client befindet, wobei
die Brücke zwischen dem Stellvertreterobjekt, das sich im
Adressraum des Client befindet, und dem Server transparent
eingefügt wird und eine Kennung verzeichnet, die dem
Stellvertreterobjekt zugeordnet ist, das sich im
Adressraum des Client befindet.
2. Brücke (300) nach Anspruch 1, wobei:
der Client (53) und der Server (54) asynchron arbeiten;
die Brücke von einem Client und einem Server durch
Vererbung abgeleitet wird;
die Brücke Methoden überschreibt, die sie von dem Server
geerbt hat, um den Namen des Client, der die Anforderung
stellt, zu verzeichnen und um die Anforderung an den
Server weiterzuleiten; und
die Brücke Methoden überschreibt, die sie von dem Client
geerbt hat, um Antwortparameter an den Client
weiterzuleiten.
3. Brücke (300) nach Anspruch 1, wobei:
der Client (53) und der Server (54) synchron arbeiten;
die Brücke von einem Server durch Vererbung abgeleitet
wird; und
die Brücke Methoden überschreibt, die sie von dem Server
geerbt hat, um die Methoden auf dem Server aufzurufen und
um Antwortparameter an den Client zurückzusenden.
4. Brücke (300) nach Anspruch 1, die des Weiteren ein Mittel
zur Überwachung und Protokollierung von Anforderungen
zwischen dem Client (53) und dem Server (54) und von Daten,
die zu diesen Anforderungen gehören, umfasst.
5. Brücke (300) nach Anspruch 1, die des Weiteren ein Mittel
zur gleichmäßigen Verteilung der Arbeitslast zwischen den
Servern (54) umfasst.
6. Brücke (300) nach Anspruch 5, wobei das Mittel zur
gleichmäßigen Verteilung der Arbeitslast Antwortzeiten misst und
als Antwort auf die gemessene Antwortzeit Anforderungen
von den Clients (53) an die Server (54) leitet.
7. Brücke (300) nach Anspruch 1, wobei:
das verteilte objektorientierte Datenverarbeitungssystem m
Clients (53) und n Server (54) umfasst (wobei n und m
ganze Zahlen größer oder gleich 2 sind), wobei jeder der m
Clients in der Lage ist, Dienste von jedem der n Server
anzufordern;
die Brücke mit den m Clients und den n Servern verbunden
ist; und
die Brücke dadurch die Anzahl der Verbindungen zwischen
den m Clients und den n Servern von n*m auf n+m
verringert.
8. Brücke (300) nach einem der Ansprüche 1 bis 7, wobei die
Schnittstellen zwischen Objekten CORBA-Schnittstellen
sind.
9. Brücke (300) nach Anspruch 8, wobei das verteilte
objektorientierte Datenverarbeitungssystem
DSOM-Klassenbibliotheken verwendet.
10. Verfahren zum Betreiben eines verteilten Client-Server-
Datenverarbeitungssystems, das die folgenden Schritte
umfasst:
Festlegen einer Schnittstelle für eine Brücke (300) in der
Weise, dass die Schnittstelle zu einem
Stellvertreterobjekt, das sich im Adressraum des Client (53) befindet, der
Schnittstelle eines Servers (54) entspricht und die
Schnittstelle zu einem Server der Schnittstelle eines
Stellvertreterobjekts entspricht, das sich im Adressraum
des Client befindet;
Transparentes Einfügen der Brücke zwischen dem
Stellvertreterobjekt, das sich im Adressraum des Client befindet,
und dem Server; und
Verzeichnen einer Kennung durch die Brücke, die dem
Stellvertreterobjekt zugeordnet ist, das sich im Adressraum des
Client befindet.
11. Verfahren nach Anspruch 11, wobei der Client (53) und der
Server (54) asynchron arbeiten und der Schritt der
Festlegung einer Schnittstelle Folgendes umfasst:
Ableiten der Schnittstelle zu einem Client von einem
Server durch Vererbung;
Überschreiben von Methoden, die von, dem Server geerbt
wurden, um den Namen des Client, der die Anforderung stellt,
zu verzeichnen und um die Anforderung an den Server
weiterzuleiten;
Ableiten der Schnittstelle zu einem Server von einem
Client durch Vererbung;
und
Überschreiben von Methoden, die von, dem Client geerbt
wurden, um Antwortparameter an den Client weiterzuleiten.
12. Verfahren nach Anspruch 11, wobei der Client (53) und der
Server (54) synchron arbeiten und der Schritt der
Festlegung einer Schnittstelle Folgendes umfasst:
Ableiten der Schnittstelle zu einem Client von einem
Server durch Vererbung; und
Überschreiben von Methoden, die vor, dem Server geerbt
wurden, um die Methoden auf dem Server aufzurufen und um
Antwortparameter an den Client zurückzusenden.
13. Verteiltes objektorientiertes Datenverarbeitungssystem,
das einen oder mehr Server (54), einen oder mehr Clients
(53) und eine Brücke (300) nach einem der Ansprüche 1 bis
7 umfasst.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9518871A GB2305270A (en) | 1995-09-15 | 1995-09-15 | Bridge for a client-server environment |
PCT/GB1996/000247 WO1997010546A1 (en) | 1995-09-15 | 1996-02-07 | Bridge for a client-server environment |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69606184D1 DE69606184D1 (de) | 2000-02-17 |
DE69606184T2 true DE69606184T2 (de) | 2000-07-13 |
Family
ID=10780751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69606184T Expired - Fee Related DE69606184T2 (de) | 1995-09-15 | 1996-02-07 | Klient-server-brücke |
Country Status (6)
Country | Link |
---|---|
US (1) | US5862328A (de) |
EP (1) | EP0850446B1 (de) |
JP (1) | JP3605416B2 (de) |
DE (1) | DE69606184T2 (de) |
GB (1) | GB2305270A (de) |
WO (1) | WO1997010546A1 (de) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052718A (en) * | 1997-01-07 | 2000-04-18 | Sightpath, Inc | Replica routing |
JP2001514833A (ja) | 1997-03-12 | 2001-09-11 | ノマディックス・リミテッド・ライアビリティ・カンパニー | ノーマッド変換器またはルータ |
US6157960A (en) * | 1997-05-07 | 2000-12-05 | International Business Machines Corporation | Technique for programmatically creating distributed object programs |
CA2204971A1 (en) * | 1997-05-09 | 1998-11-09 | Michael Cheng | Uniform access to and interchange between objects employing a plurality of access methods |
US6907450B1 (en) * | 1997-07-25 | 2005-06-14 | Siemens Aktiengesellschaft | Method and apparatus for the synchronized representation of network contents |
EP0911727A3 (de) * | 1997-10-24 | 2002-08-14 | Sun Microsystems, Inc. | Verfahren, Gerät, Vorrichtung und Programprodukt für eine Klient-Server-Ungebung |
GB9725742D0 (en) * | 1997-12-04 | 1998-02-04 | Hewlett Packard Co | Object gateway |
US6633922B1 (en) * | 1997-12-15 | 2003-10-14 | International Business Machines Corporation | Object access mechanism that dynamically switches between multiple distributed access models |
US6003083A (en) * | 1998-02-19 | 1999-12-14 | International Business Machines Corporation | Workload management amongst server objects in a client/server network with distributed objects |
JPH11338720A (ja) * | 1998-05-28 | 1999-12-10 | Nec Software Ltd | クライアントサーバ間通信制御方法及び装置及び記録媒体 |
US6490623B1 (en) * | 1998-08-24 | 2002-12-03 | International Business Machines Corporation | System, method and computer readable code for encapsulating system, language and device independent communications socket functionality in a lightweight uniform communications object model |
FR2784479B1 (fr) * | 1998-10-09 | 2000-11-17 | Bull Cp8 | Protocole d'echange interne de donnees entre applications d'un objet portatif multi-applications et objet portatif multi-applications correspondant |
US20040154027A1 (en) * | 1998-10-14 | 2004-08-05 | Jean-Jacques Vandewalle | Method and means for managing communications between local and remote objects in an object oriented client server system in which a client application invokes a local object as a proxy for a remote object on the server |
JP2003527763A (ja) * | 1998-10-16 | 2003-09-16 | シルバーストリーム・ソフトウェア・インコーポレーテッド | 分散オブジェクト・システム用の接続集線装置 |
US8713641B1 (en) | 1998-12-08 | 2014-04-29 | Nomadix, Inc. | Systems and methods for authorizing, authenticating and accounting users having transparent computer access to a network using a gateway device |
US8266266B2 (en) | 1998-12-08 | 2012-09-11 | Nomadix, Inc. | Systems and methods for providing dynamic network authorization, authentication and accounting |
US7194554B1 (en) | 1998-12-08 | 2007-03-20 | Nomadix, Inc. | Systems and methods for providing dynamic network authorization authentication and accounting |
JP4745478B2 (ja) | 1999-01-29 | 2011-08-10 | キヤノン株式会社 | ネットワークプリントシステム及び情報処理装置及びその制御方法 |
DE19910345A1 (de) * | 1999-03-09 | 2000-09-21 | Siemens Ag | Verfahren zur Nachrichtenübertragung zwischen einer einem ersten Prozeß zugewiesenen Clientinstanz und wenigstens einer mindestens einem weiteren Prozeß zugewiesenen Serverinstanz innerhalb eines verteilten Systems |
WO2000057300A1 (en) * | 1999-03-22 | 2000-09-28 | Interlink Computer Communications Ltd. | Automatic interface generation for an enterprise resource |
US6370436B1 (en) * | 1999-03-26 | 2002-04-09 | Emware, Inc. | Distributed objects for a computer system |
US6829642B1 (en) * | 1999-07-01 | 2004-12-07 | International Business Machines Corporation | Method and system for automatically and optimally selecting a TN3270 server in an internet protocol network |
JP3461146B2 (ja) * | 1999-09-28 | 2003-10-27 | 株式会社ジャストシステム | 時間認証システム、ネットワークシステム、サーバ装置及びクライアント装置、並びに記録媒体 |
US8190708B1 (en) | 1999-10-22 | 2012-05-29 | Nomadix, Inc. | Gateway device having an XML interface and associated method |
EP1122644A1 (de) * | 2000-01-14 | 2001-08-08 | Sun Microsystems, Inc. | Verfahren und Vorrichtung zur dynamischen Versendung von Funktionsanrufen von einer ersten zu einer zweiten Ausführungsumgebung |
EP1117035A1 (de) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Komponenten-Dienste für eine Laufzeitumgebung |
EP1117033A1 (de) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Dynamische Sendefunktion |
EP1117220A1 (de) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Verfahren und Vorrichtung zur Protokollübersetzung |
WO2001073550A2 (en) * | 2000-03-29 | 2001-10-04 | Nextset Software Inc. | System and method of generating and using proxy beans |
US7162542B2 (en) * | 2000-04-13 | 2007-01-09 | Intel Corporation | Cascading network apparatus for scalability |
US6732175B1 (en) * | 2000-04-13 | 2004-05-04 | Intel Corporation | Network apparatus for switching based on content of application data |
US7146422B1 (en) | 2000-05-01 | 2006-12-05 | Intel Corporation | Method and apparatus for validating documents based on a validation template |
EP1168752A1 (de) | 2000-06-23 | 2002-01-02 | Matra Nortel Communications | Zugriffsteuerung in Client-Server-Systemen |
WO2002010917A1 (en) | 2000-07-27 | 2002-02-07 | Bea Systems, Inc. | System and method for concentration and load-balancing of requests |
US7003481B2 (en) * | 2000-08-25 | 2006-02-21 | Flatrock Ii, Inc. | Method and apparatus for providing network dependent application services |
US7032002B1 (en) * | 2000-09-06 | 2006-04-18 | Xanboo, Inc. | Service broker for processing data from a data network |
US6941560B1 (en) * | 2000-12-19 | 2005-09-06 | Novell, Inc. | XML-based integrated services event system |
US20020103850A1 (en) * | 2001-01-31 | 2002-08-01 | Moyer Stanley L. | System and method for out-sourcing the functionality of session initiation protocol (SIP) user agents to proxies |
JP2002237815A (ja) * | 2001-02-08 | 2002-08-23 | Pioneer Electronic Corp | ネットワークシステム、ネットワーク運用方法、仲介モジュール及び端末装置並びに情報記録媒体及びプログラム |
US20020112013A1 (en) * | 2001-02-12 | 2002-08-15 | Fiona Walsh | Method for generating commercial email communications while preserving Internet privacy |
US7958024B2 (en) | 2001-03-15 | 2011-06-07 | Versata Development Group, Inc. | Method and apparatus for processing sales transaction data |
US7925513B2 (en) * | 2001-03-15 | 2011-04-12 | Versata Development Group, Inc. | Framework for processing sales transaction data |
US7908304B2 (en) | 2001-03-15 | 2011-03-15 | Versata Development Group, Inc. | Method and system for managing distributor information |
US6915520B2 (en) * | 2001-04-06 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | Java C++ proxy objects |
US20020169863A1 (en) * | 2001-05-08 | 2002-11-14 | Robert Beckwith | Multi-client to multi-server simulation environment control system (JULEP) |
US7904326B2 (en) * | 2001-06-29 | 2011-03-08 | Versata Development Group, Inc. | Method and apparatus for performing collective validation of credential information |
US7003570B2 (en) * | 2001-10-05 | 2006-02-21 | Bea Systems, Inc. | System for integrating java servlets with asynchronous messages |
US7065541B2 (en) * | 2001-10-10 | 2006-06-20 | International Business Machines Corporation | Database migration |
US6757899B2 (en) | 2001-10-11 | 2004-06-29 | Harris Corporation | Dynamic CORBA gateway for CORBA and non-CORBA clients and services |
US7096249B2 (en) * | 2002-03-29 | 2006-08-22 | Intel Corporation | Method and system for distributing applications |
FR2852753B1 (fr) * | 2003-03-18 | 2005-06-03 | Twd Ind | Systeme de transmission de donnees client/serveur securise |
US7424721B2 (en) * | 2003-05-19 | 2008-09-09 | Sun Microsystems, Inc. | Inter-object communication interface bridge |
US7454758B2 (en) * | 2004-02-05 | 2008-11-18 | Aol Llc, A Delaware Limited Liability Company | Inter-process communication on a computer |
US7444536B1 (en) | 2004-04-16 | 2008-10-28 | Sun Microsystems, Inc. | RMI-IIOP request failover mechanism |
JP5025116B2 (ja) | 2005-10-25 | 2012-09-12 | キヤノン株式会社 | 情報処理装置及びその制御方法ならびにプログラム |
US8527991B2 (en) * | 2007-09-27 | 2013-09-03 | Proximal System Corporation | Apparatus, system, and method for cross-system proxy-based task offloading |
US11263286B2 (en) | 2019-12-23 | 2022-03-01 | Amadeus S.A.S. | System and method for legacy-based access to non-legacy data |
EP3842959A1 (de) * | 2019-12-23 | 2021-06-30 | Amadeus S.A.S. | System und verfahren für einen legacy-basierten zugriff auf nicht-legacy-daten |
FR3105476B1 (fr) * | 2019-12-23 | 2022-12-09 | Amadeus | Système et procédé pour un accès basé sur un environnement d’exploitation hérité à des données non héritées |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0501610B1 (de) * | 1991-02-25 | 1999-03-17 | Hewlett-Packard Company | Objektorientiertes verteiltes Rechnersystem |
JPH0778775B2 (ja) * | 1991-06-12 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アプリケーション・プログラム間における情報交換システム及び方法 |
JP3055970B2 (ja) * | 1991-06-20 | 2000-06-26 | 富士通株式会社 | オブジェクト指向言語間インタフェース実現方法および装置 |
DE69232164T2 (de) * | 1991-08-22 | 2002-07-18 | Sun Microsystems, Inc. | Netzwerkvideoanbietergerät und-verfahren |
JPH05113959A (ja) * | 1991-10-23 | 1993-05-07 | Hitachi Ltd | リモ−トプロシジヤコ−ル要求代行処理方法および装置 |
US5329619A (en) * | 1992-10-30 | 1994-07-12 | Software Ag | Cooperative processing interface and communication broker for heterogeneous computing environments |
JPH09502547A (ja) * | 1992-11-13 | 1997-03-11 | マイクロソフト コーポレイション | 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム |
US5452459A (en) * | 1993-01-08 | 1995-09-19 | Digital Equipment Corporation | Method and apparatus for allocating server access in a distributed computing environment |
JPH06301618A (ja) * | 1993-04-15 | 1994-10-28 | Matsushita Electric Ind Co Ltd | 遠隔手続き呼び出し方法 |
US6226690B1 (en) * | 1993-06-14 | 2001-05-01 | International Business Machines Corporation | Method and apparatus for utilizing proxy objects to communicate with target objects |
US5491800A (en) * | 1993-12-20 | 1996-02-13 | Taligent, Inc. | Object-oriented remote procedure call networking system |
JPH07225685A (ja) * | 1994-02-09 | 1995-08-22 | Hitachi Ltd | 分散オブジェクト指向システム構築方法 |
-
1995
- 1995-09-15 GB GB9518871A patent/GB2305270A/en not_active Withdrawn
-
1996
- 1996-02-07 WO PCT/GB1996/000247 patent/WO1997010546A1/en active IP Right Grant
- 1996-02-07 EP EP96901892A patent/EP0850446B1/de not_active Expired - Lifetime
- 1996-02-07 DE DE69606184T patent/DE69606184T2/de not_active Expired - Fee Related
- 1996-02-07 JP JP51173197A patent/JP3605416B2/ja not_active Expired - Fee Related
- 1996-09-06 US US08/709,087 patent/US5862328A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1997010546A1 (en) | 1997-03-20 |
JP3605416B2 (ja) | 2004-12-22 |
EP0850446B1 (de) | 2000-01-12 |
EP0850446A1 (de) | 1998-07-01 |
DE69606184D1 (de) | 2000-02-17 |
GB9518871D0 (en) | 1995-11-15 |
JPH10511794A (ja) | 1998-11-10 |
GB2305270A (en) | 1997-04-02 |
US5862328A (en) | 1999-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69606184T2 (de) | Klient-server-brücke | |
DE69630480T2 (de) | Verfahren, Vorrichtung und Datenstrukturen zur Objektverwaltung | |
DE69615978T2 (de) | Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs | |
DE69129479T2 (de) | Verteiltes Rechnersystem | |
DE69220093T2 (de) | Verarbeitungsnetzwerk für verteilte anwendungsprogramme. | |
DE69523939T2 (de) | Verfahren zur erzeugung von objektstrukturen für den zugriff auf konventionelle, nicht objekt-orientierte geschäftsanwendungen | |
DE69429686T2 (de) | Transaktionsverwaltung in objektorientiertem System | |
DE69635337T2 (de) | Erweiterbares und austauschbares system von netzwerkkomponenten | |
DE69328162T2 (de) | Gerät und Verfahren zum Verfügbarstellen eines Teiles eines Namensraumes als ein Teil eines anderen Namensraumes | |
DE69405405T2 (de) | Objektorientiertes, auf regeln basiertes protokollsystem | |
DE69425318T2 (de) | Verfahren und System für Fernausführung von Codes | |
DE3852324T2 (de) | Verfahren und System zur Netzwerkverwaltung. | |
DE69329577T2 (de) | Verfahren und system für implementierung-unabhängige schnittstellenspezifikation | |
DE69617509T2 (de) | Vorrichtung und Verfahren zur Feststellung von Objekttypen in einem verteilten Objektsystem | |
DE68925866T2 (de) | Computersystem mit Verarbeitungsrechner | |
DE69820566T2 (de) | Verfahren, Vorrichtung, und Programmprodukt zum Zugriff auf einen Server-basierten Verwaltungsinformationsdienst | |
DE69622144T2 (de) | Allgemeines Fernprozeduraufrufsystem und allgemeines Fernprozeduraufrufverfahren | |
DE60126016T2 (de) | Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen | |
DE68919631T2 (de) | Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung. | |
DE69131745T2 (de) | Verfahren und Gerät zum Verschaffen einer Kundenschnittstelle zu einem objektorientierten Aufruf eines Anwendungsprogramms | |
DE69608166T2 (de) | Rechnernetzwerk für WWW-Anbieter-Datenzugriff auf das Internet | |
DE68919976T2 (de) | Verfahren zur Herstellung von aktuellen Terminaladressen für Systemanwender die verteilte Anwendungsprogramme in einer SNA LU 6.2-Netzwerkumbegung verarbeiten. | |
DE69804107T2 (de) | Eingebautes grafisches programmierungssystem | |
DE69129091T2 (de) | System und Verfahren zum Emulieren einer Fensterverwaltungsumgebung mit einer einheitlichen Fensterschnittstelle | |
DE69131245T2 (de) | Verfahren und Gerät zum Verschaffen von dynamischen Aufrufen von Anwendungsprogrammen in einer verteilten heterogenen Umgebung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |