-
Technisches Gebiet
-
Die Lösung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung betrifft das Gebiet der Datenverarbeitung. Insbesondere betrifft diese Lösung verteilte Anwendungen.
-
Technischer Hintergrund
-
Verteilte Anwendungen sind in modernen Datenverarbeitungssystemen weit verbreitet, speziell im Internet. Bei einer verteilten Anwendung bietet ein Server-Computer (oder einfach „Server”) einen Dienst, der von einer großen Anzahl von Benutzern genutzt werden kann, die mithilfe ihrer Client-Computer (oder einfach „Clients”) auf den Server zugreifen – im Allgemeinen per Fernzugriff über ein Datenaustauschnetzwerk. Auf diese Weise kann die verteilte Anwendung in eine Verarbeitungsschicht (auf ihrer Server-Seite) und eine Darstellungsschicht (auf ihrer Client-Seite) aufgeteilt werden; dadurch können die Verarbeitungsoperationen auf dem Server konzentriert werden, dessen Ressourcen von allen Clients gemeinsam genutzt werden (mit einer konsequenten Vereinfachung einer Verwaltung der verteilten Anwendung und der Clients). Ein typisches Beispiel einer verteilten Anwendung ist der Zugriff auf eine Website im Internet. In diesem Fall nutzt der Benutzer jedes Clients einen Web-Browser (oder einfach „Browser”), um gewünschte Webseiten der Website herunterzuladen; der Benutzer kann anschließend durch Interaktion mit den Webseiten Daten eingeben, Befehle übermitteln und Informationen anzeigen.
-
Zur Interaktion mit der verteilten Anwendung gehört die Übermittlung einer Reihe von Benutzeranforderungen auf dem Client (über den Web-Browser oder eine beliebige andere Benutzerschnittstelle), die anschließend zum Server übertragen werden; der Server verarbeitet die Benutzeranforderungen und gibt an den Client entsprechende Server-Antworten zurück. Im Allgemeinen muss der Benutzer nach der Übermittlung jeder Benutzeranforderung warten, bis die entsprechende Server-Antwort vom Server zurückgegeben wird, bevor er die Interaktion mit der verteilten Anwendung fortsetzen kann.
-
Ein Problem der verteilten Anwendungen besteht darin, dass die Server-Antworten bei kritischen Betriebsbedingungen möglicherweise mit einer relativ langen Verzögerung ab der Übermittlung der entsprechenden Benutzeranforderungen auf dem Client empfangen werden. Zum Beispiel kann ein Grund dieser Verzögerung ein Belastungszustand des Servers sein, entweder aufgrund technischer Probleme (d. h. beschränkte Ressourcen oder Fehlfunktion) oder aufgrund von Skalierbarkeitsproblemen (d. h. hohe Anzahl von Clients, die auf den Server zugreifen); der Server kann in diesem Fall tatsächlich die Benutzeranforderungen nicht unverzüglich bedienen. Darüber hinaus kann ein weiterer Grund dieser Verzögerung eine geringe Bandbreite des Datenaustauschnetzwerks sein, entweder aufgrund technischer Probleme (d. h. beschränkte Infrastrukturen oder unterbrochene Leitungen) oder aufgrund von Skalierbarkeitsproblemen (d. h. hohes Datenverkehrsaufkommen); in diesem Fall verlangsamt sich die Übertragung von Daten zwischen den Clients und dem Server tatsächlich.
-
Daher muss der Benutzer bei kritischen Betriebsbedingungen eine relativ lange Zeit warten (ohne etwas zu tun); diese Wartezeit kann bei weitem länger als die Zeit sein, die bei einem Dienstumfang unter normalen Betriebsbedingungen zu erwarten ist (zum Beispiel mehrere zehn Sekunden im Gegensatz zu einem Bruchteil von Sekunden). Alle oben geschilderten Situationen können für den Benutzer sehr lästig sein. In jedem Fall verschlechtert dies die Reaktionsfähigkeit und Leistung der verteilten Anwendung.
-
Dem oben geschilderten Problem wird im Allgemeinen dadurch begegnet, dass die Ressourcen des Servers und die Infrastrukturen des Kommunikationsnetzwerks erweitert und deren Redundanz erhöht werden; dies ist jedoch mit hohen Kosten verbunden und in bestimmten Situationen möglicherweise nicht durchführbar.
-
Darüber hinaus ist es auch möglich, Zwischenspeicherungstechniken auf die Server-Antworten anzuwenden.
-
Insbesondere können die Zwischenspeicherungstechniken bei Proxy-Computern, oder einfach nur „Proxys” (nahe den Clients, zwischen diesen und dem Server), realisiert werden; in diesem Fall werden die Server-Antworten auf den Proxys gespeichert, um bei nachfolgenden Übermittlungen der entsprechenden Benutzeranforderungen von diesen abgerufen werden zu können (anstelle der erneuten Weitergabe bis zum Server). Ein Beispiel dieser Zwischenspeicherungstechniken ist in
JP-A-2004078756 beschrieben (dessen gesamte Offenbarung durch Bezugnahme hierin eingeschlossen ist).
-
Alternativ ist es auch möglich, die Zwischenspeicherungstechniken im Client anzuwenden (zum Beispiel in seinem Web-Browser); in diesem Fall werden die Server-Antworten lokal in einem Cache-Speicher des Clients gespeichert, um bei nachfolgenden Übermittlungen der entsprechenden Benutzeranforderungen direkt von diesem abgerufen werden zu können (ohne sie zum Server übertragen zu müssen). Beispiele dieser Zwischenspeicherungstechniken sind in
US-A-2010/0138485 ,
US-A-2009/0094377 und in „Caching in HTTP –
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html” beschrieben (deren gesamte Offenbarungen durch Bezugnahme hierin eingeschlossen sind); darüber hinaus ist es wie in
US-B-7096418 beschrieben möglich (deren gesamte Offenbarung durch Bezugnahme hierin eingeschlossen ist), Server-Antworten im Cache-Speicher des Clients ungültig zu machen, wenn sie nicht mehr aktuell sind (um zu vermeiden, dass dem Benutzer falsche Informationen bereitgestellt werden).
-
Die Zwischenspeicherungstechniken (entweder auf der Proxy-Ebene oder auf der Client-Ebene) funktionieren jedoch nur bei statischen Benutzeranforderungen, deren Server-Antworten bei den unterschiedlichen Übermittlungen der Benutzeranforderungen im Laufe der Zeit im Allgemeinen dieselben bleiben (wie beispielsweise Bilder, Hintergründe und Symbole). Umgekehrt sind diese Techniken bei dynamischen Benutzeranforderungen (die zum Beispiel veränderliche Parameter aufweisen) völlig wirkungslos; in diesem Fall müssen die Benutzeranforderungen tatsächlich jedes Mal zum Server übertragen werden, um aktuelle, den Benutzeranforderungen entsprechende Server-Antworten zu erhalten.
-
Außerdem ist es wie in
US-A-2009/0049243 beschrieben möglich (dessen gesamte Offenbarung durch Bezugnahme hierin eingeschlossen ist), Informationen über die die Server-Antwort betreffenden Objekte, die auf dem Client gespeichert sind, zusammen mit der entsprechenden Benutzeranforderung zum Server zu übertragen; auf diese Weise weist die an den Client zurückgegebene Server-Antwort nur einen Unterschied in Bezug auf diese Objekte (die auf dem Client bereits verfügbar sind) auf, sodass die Menge von Informationen verringert wird, die über das Datenaustauschnetzwerk übertragen werden. Es sind jedoch nach wie vor dieselben oben erwähnten Nachteile feststellbar, wenn diese (reduzierte) Server-Antwort verspätet ist.
-
Kurzdarstellung
-
Allgemein ausgedrückt beruht die Lösung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung auf dem Gedanken der Vorwegnahme der Server-Antworten auf dem Client, wenn diese verspätet sind.
-
Insbesondere sind ein oder mehrere Aspekte der Lösung gemäß bestimmten Ausführungsformen der Erfindung in den Hauptansprüchen dargelegt, und vorteilhafte Merkmale derselben Lösung sind in den Unteransprüchen dargelegt, wobei die Formulierungen aller Ansprüche hierin durch Bezugnahme wortwörtlich eingeschlossen sind (wobei beliebige vorteilhafte Merkmale, die unter Bezugnahme auf einen bestimmten Aspekt der Lösung gemäß einer Ausführungsform der Erfindung bereitgestellt werden, sinngemäß für alle anderen Aspekte der Lösung gelten).
-
Insbesondere stellt ein Aspekt der Lösung gemäß einer Ausführungsform der Erfindung ein Verfahren zum Interagieren mit einer verteilten Anwendung auf einer Client-Seite davon bereit. In diesem Fall wird einer Server-Antwort auf eine Benutzeranforderung ein Standardwert zugewiesen, wenn sie verspätet ist; darüber hinaus können gegenüber einer verteilten Anwendung danach durchgeführte Operationen rückgängig gemacht werden, wenn sich ein Istwert der Server-Antwort (die später empfangen wird) von diesem Standardwert unterscheidet.
-
Ein weiterer Aspekt der Lösung gemäß einer Ausführungsform der Erfindung stellt ein entsprechendes Computerprogramm (und ein entsprechendes Computerprogrammprodukt) bereit.
-
Ein anderer Aspekt der Lösung gemäß einer Ausführungsform der Erfindung stellt ein entsprechendes Datenverarbeitungssystem bereit.
-
Kurzbeschreibung der Zeichnungen
-
Die Lösung gemäß einer oder mehreren Ausführungsformen der Erfindung sowie deren weitere Merkmale und Vorteile werden am besten unter Bezugnahme auf die folgende eingehende Beschreibung klar, die lediglich als nicht einschränkende Angabe zu verstehen und in Verbindung mit den beigefügten Zeichnungen zu lesen ist (wobei aus Gründen der Vereinfachung übereinstimmende Elemente mit gleichen oder ähnlichen Bezugszeichen bezeichnet sind und ihre Erklärung nicht wiederholt wird, und der Name jedes Objekts allgemein verwendet wird, um sowohl dessen Art als auch dessen Attribute zu bezeichnen – wie beispielsweise Wert, Inhalt und Darstellung). Insbesondere:
-
zeigt 1 ein schematisches Blockschaltbild einer Datenverarbeitungsinfrastruktur, bei der die Lösung gemäß einer Ausführungsform der Erfindung angewendet werden kann.
-
zeigt 2 eine bildliche Darstellung einer beispielhaften Anwendung der Lösung gemäß einer Ausführungsform der Erfindung.
-
zeigt 3 die hauptsächlichen Softwarekomponenten, die verwendet werden können, um die Lösung gemäß einer Ausführungsform der Erfindung zu realisieren, und
-
zeigen 4A bis 4B einen Ablaufplan, der den Ablauf von Aktivitäten im Zusammenhang mit einer Realisierung der Lösung gemäß einer Ausführungsform der Erfindung beschreibt.
-
Beschreibung von Ausführungsformen
-
Unter Bezugnahme insbesondere auf 1 ist dort ein schematisches Blockschaltbild einer Datenverarbeitungsinfrastruktur 100 gezeigt, bei der die Lösung gemäß einer Ausführungsform der Erfindung angewendet werden kann.
-
Die Datenverarbeitungsinfrastruktur 100 weist eine verteilte Architektur auf, die normalerweise auf dem Internet beruht; das Internet wird durch Millionen von Server-Computern (oder einfach „Servern”) 105 gebildet, die untereinander über ein weltweites Datenaustauschnetzwerk 110 verbunden sind. Eine Teilmenge der Server 105, die als „World Wide Web” (oder einfach als „Web”) bezeichnet wird, ermöglicht das Zugreifen auf entsprechende Websites; jede Website weist eine Sammlung von Webseiten auf (die, auf einer Startseite beginnend, untereinander durch entsprechende Hyperlinks verbunden sind). Jede Webseite ist durch ein Hypertext-Dokument (in HTML-Sprache formatiert) festgelegt, wobei der Zugriff auf das Dokument über das HTTP-Protokoll geschieht; zu diesem Zweck wird die Webseite anhand einer entsprechenden URL erkannt und gefunden, die aus einer eindeutigen Zeichenfolge besteht, die gemäß einer Standardsyntax formatiert ist. Benutzer von Client-Computern (oder einfach „Clients”) 115 greifen auf das Internet zu (über Computer, die als Zugangsanbieter fungieren, die in der Figur nicht gezeigt sind), um die durch die Server 105 angebotenen Dienste zu nutzen (und insbesondere die gewünschten Webseiten herunterzuladen).
-
Ein allgemeiner Client 115 (der zum Beispiel aus einem Notebook besteht) weist ein Grundgerüst 150 auf, in dem die Elektronikschaltungen zur Steuerung seines Betriebs untergebracht sind; in der Regel weisen diese Elektronikschaltungen eine zentrale Verarbeitungszeit, einen Arbeitsspeicher, eine Festplatte, Eingabe/Ausgabe-Anschlüsse (zum Beispiel vom Typ USB), einen Funk-Netzadapter (zum Beispiel vom Typ Wi-Fi) und dergleichen auf. Das Grundgerüst 150 ist außerdem mit einem Laufwerk zum Lesen/Schreiben optischer Platten 155 (zum Beispiel CDs und DVDs) ausgerüstet. Ein Monitor 160 (der zur Anzeige von Bildern auf seinem Bildschirm verwendet wird) ist am Grundgerüst 150 angelenkt; dadurch kann der Monitor 160 geöffnet (bei Gebrauch) und nach unten auf das Grundgerüst 150 geklappt sein (im Ruhezustand). Der Betrieb des Notebooks 115 wird mithilfe einer Tastatur 165 und eines Touchpads 170 gesteuert, die in das Grundgerüst 150 integriert sind. Das Notebook 115 kann über ein Wechselstromnetzteil mit Strom versorgt werden, wird aber üblicherweise mithilfe eines im Grundgerüst 150 montierten Akkus ortsunabhängig genutzt.
-
Eine bildliche Darstellung einer beispielhaften Anwendung der Lösung gemäß einer Ausführungsform der Erfindung ist 2 gezeigt.
-
Insbesondere übermittelt ein Nutzer eines allgemeinen Clients eine Benutzeranforderung an eine Client-Seite einer verteilten Anwendung (zum Beispiel durch Auswahl eines Befehls auf einer Webseite, die auf seinem Monitor angezeigt wird). Als Reaktion darauf wird ein Hinweis auf diese Benutzeranforderung an einen zugehörigen Server übertragen, der eine Server-Seite derselben verteilten Anwendung realisiert. Die Client-Seite der verteilten Anwendung geht anschließend in einen Wartezustand, um auf die Server-Antwort auf diese Übermittlung der Benutzeranforderung vom Server zu warten (zum Beispiel durch Anzeigen einer Sanduhr auf dem Monitor des Clients).
-
Wenn bei der Lösung gemäß einer Ausführungsform der Erfindung die Server-Antwort nicht innerhalb eines vorgegebenen Zeitlimits in Bezug auf die Übermittlung der Benutzeranforderung empfangen wird, wird dieser ein Standardwert zugewiesen (zum Beispiel durch Setzen der Server-Antwort auf einen Wert, der mit der höchsten Häufigkeit in dem Teil für dieselbe Benutzeranforderung empfangen wurde).
-
Der Benutzer kann anschließend normal mit der verteilten Anwendung interagieren (als wäre die Server-Antwort bereits empfangen worden); es wird jedoch jetzt jede Operation auf dem Client protokolliert, die gegenüber der verteilten Anwendung durchgeführt wird (beginnend ab der Zuweisung des Standardwertes zur Server-Antwort, die diesen aufweist).
-
Später wird ein Istwert der Server-Antwort vom Server empfangen.
-
Wenn der Istwert der Server-Antwort gleich dem Standardwert ist, der dieser bereits zuvor zugewiesen wurde, wird der Betrieb der verteilten Anwendung normal fortgesetzt (mit den protokollierten Operationen, die gelöscht werden können).
-
Umgekehrt werden, wenn sich der Istwert der Server-Antwort vom Standardwert unterscheidet, der dieser bereits zuvor zugewiesen wurde, die protokollierten Operationen, die ab der Zuweisung des (falschen) Standardwertes zur Server-Antwort durchgeführt wurden, rückgängig gemacht, um zu dem Zustand der verteilten Anwendung vor der Zuweisung des Standardwertes zur Server-Antwort zurückzukehren (mit den protokollierten Operationen, die anschließend gelöscht werden können). Die Server-Antwort wird anschließend auf ihren Istwert gesetzt, um den korrekten Betrieb der verteilten Anwendung wiederherzustellen.
-
Die oben beschriebene Lösung ermöglicht die Verringerung der Wartezeit des Benutzers bei kritischen Betriebszuständen, wenn die Server-Antworten unter Umständen mit einer relativ großen Verzögerung ab der Übermittlung der entsprechenden Benutzeranforderungen auf dem Client empfangen werden (zum Beispiel wegen eines Belastungszustands des Servers und/oder einer geringen Bandbreite des Datenaustauschnetzwerks). Auf diese Weise kann die Wartezeit aufrechterhalten werden, die bei normalem Dienstumfang unter normalen Betriebsbedingungen zu erwarten ist. Dadurch erhöhen sich die Reaktionsfähigkeit und Leistung der verteilten Anwendung erheblich (da die Server-Antworten dem Benutzer als im Voraus empfangen erscheinen).
-
Die oben erwähnten Vorteile werden auf einer statistischen Grundlage erreicht. Wenn der Standardwert korrekt (d. h. gleich dem Istwert) ist, wird die Wartezeit des Benutzers tatsächlich verringert (um den Unterschied zwischen der Verzögerung der Server-Antwort in Bezug auf die Übermittlung der Benutzeranforderung und dem Zeitlimit); umgekehrt wird, wenn der Standardwert falsch ist (d. h. sich vom Istwert unterscheidet), die Wartezeit des Benutzers erhöht (um die zusätzliche Zeit, die zur Rückgängigmachung der protokollierten Operationen vergeudet wird). Daher ist bei einem ordnungsgemäß festgelegten Standardwert die Wahrscheinlichkeit, den Standardwert korrekt (und dann eine verringerte Wartezeit) zu haben, weit höher als die Wahrscheinlichkeit, ihn falsch (und eine erhöhte Wartezeit) zu haben; darüber hinaus ist, wenn die Server-Antworten eine geringe Auswirkung auf den Betrieb der verteilten Anwendung haben (zum Beispiel bestehen sie aus einfachen Aktualisierungen der Webseiten mit der Änderung kleiner Objekte davon), die Erhöhung der Wartezeit zum Rückgängigmachen der protokollierten Operationen (wenn der Standardwert falsch ist), weitaus niedriger als deren Verringerung (wenn der Standardwert korrekt ist). Infolgedessen wird die Wartezeit im Durchschnitt verringert; wenn zum Beispiel 10,00 s in 70% der Fälle gespart werden und 1,00 s in den übrigen 30% der Fälle verloren gehen, beträgt die durchschnittliche Verringerung der Wartezeit 7,70s.
-
Das oben beschriebene Ergebnis wird durch ausschließliches Agieren auf der Client-Seite der verteilten Anwendung erreicht. Daher stellt diese Lösung eine sehr hohe Skalierbarkeit bereit.
-
Die hauptsächlichen Softwarekomponenten, die verwendet werden können, um die Lösung gemäß einer Ausführungsform der Erfindung zu realisieren, sind in 3 gezeigt.
-
Diese Softwarekomponenten sind als Ganzes mit dem Bezugszeichen 300 bezeichnet. Die Informationen (Programme und Daten) sind normalerweise auf der Festplatte gespeichert und werden (zumindest teilweise) in den Arbeitsspeicher des allgemeinen Clients 115 geladen, wenn die Programme zusammen mit einem Betriebssystem und anderen Anwendungsprogrammen (die in der Figur nicht gezeigt sind) ausgeführt werden. Die Programme werden am Anfang zum Beispiel von optischen Platten auf die Festplatte installiert.
-
Insbesondere wird ein Web-Browser (oder einfach „Browser”) 305 von einem Benutzer des Clients 115 verwendet, um das Internet zu durchsuchen. Zu diesem Zweck ermöglicht der Browser 305 dem Benutzer, die URLs gewünschter Webseiten einzugeben, die anschließend zur Anzeige auf den Client heruntergeladen werden (von entsprechenden Servern, die in der Figur nicht gezeigt sind); darüber hinaus ermöglicht der Browser 305 dem Benutzer, sich mithilfe entsprechender Hyperlinks schnell zu anderen Webseiten zu bewegen (auf derselben Website oder auf einer anderen). Der Benutzer kann auf verschiedene Weise lokal mit jeder Webseite interagieren; insbesondere kann der Benutzer Benutzeranforderungen übermitteln – zum Beispiel, indem er mit der Maus auf entsprechende Befehle klickt, im Allgemeinen nach dem Eingeben zugehöriger Parameter (z. B. durch Ausfüllen von Eingabefeldern mit der Tastatur). Einige dieser Benutzeranforderungen bewirken die Übertragung von Befehlen, die für diese Anforderungen stehen, auf den entsprechenden Server. Normalerweise realisiert der Browser 305 auch einen Zwischenspeicherungsmechanismus, bei dem Server-Antworten auf statische Benutzeranforderungen in einem Cache-Speicher des Browsers gespeichert werden; auf diese Weise kann die entsprechende Serveranforderung direkt aus dem Cache-Speicher abgerufen werden (ohne das deren Befehl erneut zum Server übertragen werden muss), wenn dieselbe (statische) Benutzeranforderung zukünftig erneut übermittelt wird.
-
Unter Bezugnahme auf dynamische Benutzeranforderungen (die jedes Mal die Übertragung ihrer Befehle an den Server erfordern, um aktuelle Server-Antworten zu erhalten) anstelle statischer kann der Browser 305 ein Asynchronmodul 310 nutzen, das bereits zuvor zusammen mit der Webseite heruntergeladen wurde; beispielsweise kann das Asynchronmodul 310 auf der Ajax-Technologie beruhen, wie in „Ajax: Asynchronously moving forward – http://www.interaktonline.com/files/art/ajax/AJAX%20%20Asynchronously%20Moving%20Forward.pdf", „Responsive web applications using Ajax – http://travi.org/about/AjaxSurvey.pdf” und „Ajax logger client monitoring technique with high installability & scalability – http://www.usenix.org/event/lisa07/posters/nakamura.pdf” beschrieben. In diesem Fall sendet der Browser 305 bei jeder Übermittlung einer Benutzeranforderung einen entsprechenden Scriptaufruf an das Asynchronmodul 310 – zum Beispiel unter Verwendung eines Wrappers (beispielsweise auf der Grundlage des Dojo-Toolkits), der entsprechende Objekte im Zusammenhang mit verschiedenen Realisierungen des Browsers 305 abstrahiert; der Scriptaufruf hat keine blockierende Wirkung, sodass der Benutzer weiterhin mit der Webseite interagieren kann. Das Asynchronmodul 310 überträgt den für die Benutzeranforderung stehenden Befehl zum Server; sobald die Server-Antwort auf diese Übermittlung der Benutzeranforderung vom Server empfangen wurde, gibt das Asynchronmodul 310 sie an den Browser 310 zurück, der einen entsprechenden Teil der Webseite aktualisiert (ohne sie komplett neu zu laden). In diesem Fall wird, wenn der Browser 305 den Zwischenspeicherungsmechanismus realisiert, dies umgangen, indem der Übermittlung der Benutzeranforderung ein eindeutiger Code hinzugefügt wird (zum Beispiel auf der Grundlage eines aktuellen Zeitstempels oder einer Zufallszahl), sodass verhindert wird, dass der Browser 305 die entsprechende Server-Antwort aus dem Cache-Speicher abruft.
-
Bei der Lösung gemäß einer Ausführungsform der Erfindung ist das Asynchronmodul 310 durch eine Überwachungsfunktion 315 erweitert. Die Überwachungsfunktion 315 interagiert mit dem Asynchronmodul 310, um die Übermittlungen der Benutzeranforderungen (oder zumindest eines Teils von ihnen) und die entsprechenden Server-Antworten zu überwachen; darüber hinaus misst die Überwachungsfunktion 315 die Verzögerungen der Server-Antworten in Bezug auf die entsprechenden Übermittlungen der Benutzeranforderungen. Die Überwachungsfunktion 315 speichert entsprechende Verlaufsdaten in einen Datenspeicher 320. Zum Beispiel weisen die Verlaufsdaten eine Häufigkeitstabelle auf; zu jedem Schlüssel, der durch ein Paar <Benutzeranforderung/Wert der Server-Antwort> speichert die Häufigkeitstabelle einen Zählwert der Anzahl, wie oft dieser Wert der Server-Antwort zu dieser Benutzeranforderung empfangen wurde. Darüber hinaus weisen die Verlaufsdaten eine Verzögerungstabelle auf; zu jedem durch eine Benutzeranforderung definierten Schlüssel speichert die Verzögerungstabelle einen Durchschnitt der Verzögerungen, mit denen alle Server-Antworten zu dieser Benutzeranforderung empfangen wurden. Diesbezüglich werden, wenn die Übermittlungen derselben Benutzeranforderung unterschiedliche eindeutige Codes aufweisen (um den Zwischenspeicherungsmechanismus des Browsers 305 zu umgehen), diese eindeutigen Codes in den Schlüsseln der Häufigkeitstabelle und der Verzögerungstabelle verworfen (sodass vermieden wird, dass sie als unterschiedliche Benutzeranforderungen betrachtet werden).
-
Das Asynchronmodul 310 ist ferner durch eine Vorhersagefunktion 325 erweitert. Die Überwachungsfunktion 305 interagiert mit der Vorhersagefunktion 325, um den Standardwert abzurufen, der jeder Server-Antwort zuzuweisen ist, die durch das Asynchronmodul 310 nicht rechtzeitig empfangen wird; insbesondere greift die Vorhersagefunktion 325 auf den Datenspeicher 320 zu, um den Standardwert anhand der entsprechenden Verlaufsdaten festzulegen. Die Vorhersagefunktion 325 wiederum steuert eine Protokollfunktion 330, die jede Operation auf einem entsprechenden Datenspeicher 335 protokolliert, die ab der Zuweisung des Standardwertes zu jeder Server-Antwort durchgeführt wird.
-
Die Überwachungsfunktion 315 ist auch für das Vergleichen des Istwertes jeder Server-Antwort zuständig, die vom Server empfangen wird, nachdem dieser der Standardwert mit diesem Standardwert zugewiesen wurde. Das Asynchronmodul 310 ist ferner durch eine Rollback-Funktion 340 erweitert, die durch die Überwachungsfunktion 315 gesteuert wird. Bei jeder Server-Antwort, deren Istwert sich vom Standardwert unterscheidet, greift die Rollback-Funktion 340 auf den Datenspeicher 335 zu, um die entsprechenden protokollierten Operationen im Browser 305 rückgängig zu machen (und sie anschließend zu löschen).
-
Die oben beschriebenen Module können als reine Scripts realisiert sein, die der Browser 305 als Bestandteil seines Funktionsumfangs unterstützt; in diesem Fall werden die Scripts im Allgemeinen in einer Sandbox ausgeführt (die zu deren Ausführung im Client 115 eine streng kontrollierte Menge von Ressourcen bereitstellt, die insbesondere das Schreiben beliebiger Dateien auf seinen Massenspeicher verhindern); in diesem Fall werden die erforderlichen Informationen im Cache-Speicher des Browsers 305 gespeichert. Alternativ können dieselben Module als zertifizierte Applets oder als Plug-in des Browsers 305 realisiert sein (sodass der Browser die erforderlichen Informationen auf dem Massenspeicher des Clients 115 speichern kann).
-
Ein Ablaufplan, der den Ablauf von Aktivitäten im Zusammenhang mit einer Realisierung der Lösung gemäß einer Ausführungsform der Erfindung beschreibt, ist in 4A bis 4B gezeigt.
-
Insbesondere stellt der Plan einen beispielhaften Prozess dar, der mit einem Verfahren 400 zum Interagieren mit einer allgemeinen verteilten Anwendung auf einer Client-Seite davon realisiert werden kann. Das Verfahren 400 beginnt bei dem schwarzen Startkreis 403 und gelangt anschließend zu Block 406, sobald eine gewünschte Webseite gegenüber dem Browser angefordert wurde (zum Beispiel durch Aufrufen des Browsers und anschließendes Eingeben der URL der Webseite in ein Adressfeld des Browsers). Als Reaktion auf diese Aktion lädt der Browser in Block 409 die HTML-Definition der Webseite von ihrem Server herunter (durch Senden eines entsprechenden Befehls an ihn); der Browser stellt anschließend die Webseite in einem speziellen Fenster bereit, indem er deren HTML-Definition interpretiert, und er lädt beliebige zur Webseite gehörige Scripts (die das oben als Erweiterung erwähnte Asynchronmodul aufweisen).
-
Der Aktivitätsablauf gelangt zu Block 412, sobald der Benutzer des Clients eine Benutzeranforderung übermittelt, die eine beliebige Interaktion mit dem Server einschließt (zum Beispiel zum Anzeigen einer Grafik, die von dort in die Webseite herunterzuladen ist). Als Reaktion darauf sendet der Browser bei Block 415 einen Aufruf bezüglich eines der Benutzeranforderung entsprechenden Scripts an das Asynchronmodul. Als Reaktion darauf überprüft das Asynchronmodul bei Block 418 eine Aktivierung der oben erwähnten Vorwegnahmefunktion für diese Benutzeranforderung (zum Vorwegnehmen ihrer Server-Antwort bei Verspätung); zum Beispiel kann die Vorwegnahmefunktion durch Setzen eines Vorwegnahmemerkers im Script aktiviert werden. Auf diese Weise ist es möglich, die Vorwegnahmefunktion selektiv nur dann zu aktivieren, wenn dies wünschenswert ist; beispielsweise kann die Vorwegnahmefunktion für Benutzeranforderungen aktiviert werden, deren Server-Antworten sich mit einer bestimmten Regelmäßigkeit und/oder in einer relativ langsamen Weise ändern (sodass ihre Standardwerte mit einem akzeptablen Genauigkeitsgrad vorhergesagt werden können), wohingegen sie bei Benutzeranfragen deaktiviert werden kann, deren Server-Antworten völlig unvorhersagbar oder absolut notwendig mit ihren korrekten Werten sind.
-
Wenn die Vorwegnahmefunktion aktiviert ist (d. h., der Vorwegnahmemerker ist gesetzt), geht das Verfahren zu Block 421 über, in dem die Überwachungsfunktion für diese aktuelle Übermittlung der Benutzeranforderung einen Datensatz zu einer Anstehend-Tabelle (der aktuellen Übermittlungen der Benutzeranforderungen, die in der Überwachungsfunktion anstehen – d. h. mit aktivierter Vorwegnahmefunktion und auf die entsprechenden aktuellen Server-Antworten wartend) hinzufügt; der Datensatz weist einen Zeitstempel der aktuellen Übermittlung der Benutzeranforderung und einen Standard-Merker (anfangs nicht gesetzt) auf, der anzeigt, ob der entsprechenden aktuellen Server-Antwort der Standardwert zugewiesen wurde. Darüber hinaus legt die Überwachungsfunktion bei Block 424 gemäß den entsprechenden Verlaufsdaten das Zeitlimit für das Empfangen der aktuellen Server-Antwort fest; zum Beispiel wird dieses Zeitlimit auf ein vorgegebenes Mehrfaches der entsprechenden durchschnittlichen Verzögerung (wie zu der Benutzeranforderung in der Verzögerungstabelle angezeigt, die durch Verwerfen des eindeutiges Codes der aktuellen Übermittlung der Benutzeranforderung abgefragt wird, der zur Umgehung des Zwischenspeicherungsmechanismus des Browsers verwendet wird) gesetzt – wie zum Beispiel auf das 1- bis 3-fache, aber in jedem Fall unterhalb einer allgemeinen Zeitüberschreitung des Browsers für Server-Antworten. Das Verfahren 400 geht anschließend weiter zu Block 427; derselbe Punkt wird auch direkt von Block 418 aus erreicht, wenn die Vorwegnahmefunktion deaktiviert ist (d. h., der Vorwegnahmemerker ist nicht gesetzt). An diesem Punkt stellt das Asynchronmodul durch Übertragen des Befehls, der der Benutzeranforderung entspricht, eine Verbindung zum Server her und überwacht auf einem entsprechenden Socket im Wartezustand das Empfangen der aktuellen Server-Antwort auf die aktuelle Übermittlung der Benutzeranforderung.
-
Die Überwachungsfunktion überwacht bei Block 430 kontinuierlich die aktuellen Übermittlungen der Benutzeranforderungen mit aktivierter Vorwegnahmefunktion, die auf die entsprechenden aktuellen Server-Antworten warten (wie in der Anstehend-Liste angezeigt), die aber dem Standardwert noch nicht zugewiesen wurden (d. h. Standard-Merker nicht gesetzt). Bei jeder dieser aktuellen Übermittlungen der Benutzeranforderungen überprüft die Überwachungsfunktion bei Block 433, ob das entsprechende Zeitlimit (wie in der Anstehend-Tabelle angezeigt) abgelaufen ist. Wenn ja, geht der Aktivitätsablauf zu Block 436 über; in dieser Phase aktiviert die Vorhersagefunktion die Protokollierung der Operationen, die im Browser gegenüber der aktuellen Webseite durchgeführt werden, indem in einer Protokolltabelle ein entsprechender Datensatz angelegt wird. Das Vorhersagemodul sendet anschließend bei Block 439 anhand der entsprechenden Verlaufsdaten den Standardwert der aktuellen Server-Antworten (auf diese aktuelle Übermittlung der Benutzeranforderung). Insbesondere wird der Standardwert auf den Wert der Server-Antwort festgelegt, die zu der Benutzeranforderung am häufigsten empfangen wurde (wie zu der Benutzeranforderung in der Häufigkeitstabelle angezeigt, die durch Verwerfen des eindeutiges Codes der aktuellen Übermittlung der Benutzeranforderung abgefragt wird, der zur Umgehung des Zwischenspeicherungsmechanismus des Browsers verwendet wird). Auf diese Weise beruht die Festlegung des Standardwertes auf einem wahrscheinlichkeitstheoretischen Ansatz, der den Standardwert bereitstellt, der höchstwahrscheinlich korrekt ist.
-
Zu diesem Zweck fragt die Vorhersagefunktion, wenn die Häufigkeitstabelle zu jedem Paar <Benutzeranforderung/Wert der Server-Antwort> den Zählwert der Anzahl speichert, wie oft dieser Wert der Server Antwort zu dieser Benutzeranforderung empfangen wurde, die Häufigkeitstabelle nach dem durch die Benutzeranforderung definierten Schlüssel auf den Datensatz mit dem höchsten Zählwert ab. Beispielsweise betrifft die folgende Häufigkeitstabelle eine Benutzeranforderung U1, zu der die Werte S1, S2, S3, S4, S5 und S6 der vorhergehenden Server-Antworten auf ihre vorhergehenden Übermittlungen 2-mal, 3-mal, 7-mal, 4-mal, 1-mal bzw. 2-mal zurückgegeben wurden:
<Benutzeranforderung/Wert der Server-Antwort> | Zählwert |
<U1/S3> | 7 |
<U1/S4> | 4 |
<U1/S2> | 3 |
<U1/S1> | 2 |
<U1/S6> | 2 |
<U1/S5> | 1 |
-
In diesem Fall wird der Standardwert der aktuellen Server-Antwort für die aktuelle Übermittlung der Benutzeranforderung U1 auf den Wert S3 festgelegt.
-
Bei einer anderen Ausführungsform der Erfindung weist die Häufigkeitstabelle zu jedem Paar <Benutzeranforderung/Wert der Server-Antwort> eine oder mehrere Gruppen von Datensätzen auf; jede dieser Gruppen weist mehrere Datensätze für unterschiedliche Werte einer entsprechenden Übermittlungseigenschaft der vorhergehenden Übermittlungen der Benutzeranforderung auf (zum Beispiel einen Zeitrahmen). Jeder Datensatz speichert dann den Zählwert der Anzahl, wie oft dieser Wert der Server-Antwort zu dieser Benutzeranforderung empfangen wurde, wenn deren vorhergehende Übermittlungen ihrem Wert der entsprechenden Übermittlungseigenschaft entsprachen. Zum Beispiel betrifft die folgende Häufigkeitstabelle eine Benutzeranforderung U1, zu der die Werte S1, S2 und S3 der vorhergehenden Server-Antworten 8-, 2- bzw. 1-mal von Montag bis Freitag und die Werte S1, S4, S2 der vorhergehenden Server-Antworten 3-, 2- bzw. 7-mal von Samstag bis Sonntag zurückgegeben wurden:
<Benutzeranforderung/Wert der Server-Antwort> | Zeitrahmen | Zählwert |
<U1/S1> | Montag bis Freitag | 8 |
<U1/S2> | Montag bis Freitag | 2 |
<U1/S3> | Montag bis Freitag | 1 |
<U1/S2> | Samstag bis Sonntag | 7 |
<U1/S1> | Samstag bis Sonntag | 3 |
<U1/S4> | Samstag bis Sonntag | 2 |
-
Die Vorhersagefunktion fragt anschließend die Häufigkeitstabelle nach dem durch die Benutzeranforderung definierten Schlüssel und den Wert der Übermittlungseigenschaft der aktuellen Übermittlung der Benutzeranforderung auf den Datensatz mit dem höchsten Zählwert ab. Beispielsweise wird der Standardwert der aktuellen Server-Antwort zur aktuellen Übermittlung der Benutzeranforderung U1 in diesem Fall auf den Wert S1 gesetzt, wenn sie von Montag bis Freitag übermittelt wird, während er auf den Wert S2 gesetzt wird, wenn sie von Samstag bis Sonntag übermittelt wird.
-
Die oben beschriebene Realisierung berücksichtigt beim Festlegen des Standardwertes der aktuellen Server-Antwort auch den Trend der vorhergehenden Server-Antworten; dies ermöglicht bei mehreren Situationen in der Praxis die weitere Verbesserung der Genauigkeit der Vorhersage des Standardwertes. Wenn die Benutzeranfrage zum Beispiel zum Überprüfen eines Status eines entfernten Servers dient (mithilfe eines Ping-Befehls auf seinen Host-Namen), ist es möglich, dass dieser entfernte Server im Allgemeinen während der Arbeitstage verfügbar und im Allgemeinen während der arbeitsfreien Tage nicht verfügbar ist (wegen Wartungsarbeiten).
-
Mit dem Voranschreiten zu Block 442 gibt die Vorhersagefunktion den auf diese Weise ermittelten Standardwert an die Überwachungsfunktion zurück, die ihn der aktuellen Server-Antwort zuweist; gleichzeitig wird der Standardwert in dem entsprechenden Datensatz in der Anstehend-Tabelle gespeichert, und seinen Standard-Merker wird gesetzt. Die Überwachungsfunktion gibt anschließend die aktuelle Server-Antwort an das Asynchronmodul zurück, die diese wiederum an den Browser zurückgibt.
-
Sobald durch den Browser bei Block 445 eine nachfolgende Operation gegenüber der Webseite durchgeführt wird, fügt die Protokollfunktion bei Block 448 in dem entsprechenden Datensatz der Protokolltabelle einen Hinweis darauf hinzu. Insbesondere wird diese Operation sofort durchgeführt, wenn der Browser vom Asynchronmodul eine aktuelle Server-Antwort (mit dem Standardwert) empfängt, und er aktualisiert den entsprechenden Teil der Webseite (zum Beispiel durch Anzeigen der angeforderten Grafik auf der Grundlage dieses Standardwertes).
-
Das Verfahren 400 geht anschließend weiter zu Block 451; derselbe Punkt wird auch von Block 433 aus erreicht, wenn das Zeitlimit der aktuellen Übermittlung der Benutzeranforderung nicht abgelaufen ist.
-
In dieser Phase fragt das Asynchronmodul in einer vollständig asynchronen Weise kontinuierlich die aktuellen Übermittlungen der Benutzeranforderungen ab, die auf die entsprechenden aktuellen Server-Antworten warten (d. h. sich noch im Überwachungszustand auf den entsprechenden Sockets befinden). Bei jeder dieser aktuellen Übermittlungen der Benutzeranforderungen überprüft das Asynchronmodul bei Block 454, ob die allgemeine Zeitüberschreitung abgelaufen ist. Wenn ja, geht der Aktivitätsablauf zu Block 457 über, in dem ein Fehlerzustand erreicht wird (und die entsprechende Verbindung mit dem Server geschlossen wird); das Asynchronmodul gibt anschließend einen Fehlercode an den Browser zurück, der dem Benutzer eine entsprechende Fehlermeldung (zum Beispiel in einem Dialogfenster) anzeigt. Darüber hinaus überprüft das Asynchronmodul bei Block 460 die Aktivierung der Vorwegnahmefunktion für die Benutzeranforderung (wie durch den Vorwegnahmemerker in ihrem entsprechenden Script angezeigt). Wenn die Vorwegnahmefunktion aktiviert ist (d. h., der Aktivierungsmerker ist gesetzt), löscht die Protokollfunktion bei Block 463 den Protokolldatensatz der aktuellen Übermittlung der Benutzeranforderung (sofern vorhanden – d. h. wenn der Standard-Merker gesetzt ist), und die Überwachungsfunktion löscht in jedem Fall den entsprechenden Datensatz aus der Anstehend-Liste. Der Aktivitätsablauf wird bei Block 466 wieder zusammengeführt, von Block 460 (bei einer Benutzeranforderung ohne aktivierte Vorwegnahmefunktion) oder von Block 454 (wenn die allgemeine Zeitüberschreitung nicht abgelaufen ist).
-
An diesem Punkt überprüft das Asynchronmodul, ob die aktuelle Server-Antwort auf die aktuelle Übermittlung der Benutzeranforderung empfangen wurde. Wenn ja, überprüft das Asynchronmodul bei Block 469 ferner die Aktivierung der Vorwegnahmefunktion für die Benutzeranforderung (wie durch den Vorwegnahmemerker in ihrem entsprechenden Script angezeigt). Wenn die Vorwegnahmefunktion aktiviert ist (d. h., der Aktivierungsmerker ist gesetzt), geht das Verfahren 400 zu Block 472 über, in dem die Überwachungsfunktion die Häufigkeiten der unterschiedlichen Werte der Server-Antworten auf die Benutzeranforderung entsprechend aktualisiert. Beispielsweise überprüft die Überwachungsfunktion zu diesem Zweck, ob in der Häufigkeitstabelle ein Datensatz zu der Benutzeranforderung vorhanden ist (wobei der eindeutige Code der aktuellen Übermittlung der Benutzeranforderung verworfen wird, der zur Umgehung des Zwischenspeicherungsmechanismus des Browsers verwendet wird), und den Wert der aktuellen Server-Antwort; wenn nicht, wird ein neuer Datensatz für das Paar <Benutzeranforderung/Wert der Server-Antwort> hinzugefügt, und sein Zählwert wird auf 0 initialisiert, während anderenfalls der Zählwert des entsprechenden Datensatzes um 1 erhöht wird. In jedem Fall werden die Datensätze der Häufigkeitstabelle bei jeder Benutzeranforderung in absteigender Reihenfolge des Zählwertes sortiert. Mit dem Voranschreiten zu Block 475 aktualisiert die Überwachungsfunktion auch die durchschnittliche Verzögerung der Benutzeranforderung entsprechend. Beispielsweise überprüft die Überwachungsfunktion zu diesem Zweck, ob in der Verzögerungstabelle ein Datensatz zu der Benutzeranforderung vorhanden ist (wobei der eindeutige Code der aktuellen Übermittlung der Benutzeranforderung verworfen wird, der zur Umgehung des Zwischenspeicherungsmechanismus des Browsers verwendet wird); wenn nicht, wird ein neuer Datensatz für die Benutzeranforderung hinzugefügt, und ihr Durchschnittswert wird auf eine aktuelle Verzögerung der aktuellen Server-Antwort in Bezug auf die aktuelle Übermittlung der Benutzeranforderung aktualisiert, während anderenfalls der Zählwert des entsprechenden Datensatzes neu berechnet wird, um diese aktuelle Verzögerung zu berücksichtigen.
-
Der Aktivitätsablauf verzweigt anschließend bei Block 478 anhand der Zuweisung des Standardwertes zur aktuellen Server-Antwort (wie durch den entsprechenden Standard-Merker der Anstehend-Tabelle angezeigt). Wenn der aktuellen Server-Antwort der Standardwert bereits zuvor zugewiesen wurde (d. h., der Standard-Merker ist gesetzt), werden die Blöcke 481 bis 487 ausgeführt, während anderenfalls der Block 490 ausgeführt wird.
-
Unter Berücksichtigung des Blocks 481 (Standardwert zugewiesen) überprüft die Überwachungsfunktion, ob der Standardwert (der aus dem entsprechenden Datensatz der Anstehend-Tabelle entnommen wurde) mit dem Istwert der aktuellen Server-Antwort übereinstimmt, die gerade empfangen wurde. Wenn sich der Standardwert vom Istwert unterscheidet, geht das Verfahren 400 zum Schritt 484 über; in dieser Phase ruft die Rollback-Funktion die protokollierten Operationen, die auf der Webseite ab der Zuweisung des (falschen) Standardwertes zur aktuellen Server-Antwort durchgeführt wurden, nacheinander aus dem entsprechenden Datensatz in der Protokolltabelle (beginnend beim jüngsten und dann in zeitlicher Reihenfolge zurückgehend) ab, und macht sie im Browser rückgängig; sobald der Prozess abgeschlossen ist, kann dieser Datensatz aus der Protokolltabelle gelöscht werden (wodurch die Protokollierung der gegenüber der Webseite durchgeführten Operationen deaktiviert wird). Mit dem Voranschreiten zu Block 487 setzt das Asynchronmodul die aktuelle Server-Antwort auf ihren Istwert zurück; die aktuelle Server-Antwort wird erneut an den Browser zurückgegeben, der nun den entsprechenden Teil der Webseite korrekt aktualisiert (zum Beispiel durch Anzeigen der angeforderten Grafik mit ihrem wirklichen Inhalt).
-
Unter Bezugnahme stattdessen auf den Block 490 (Standardwert nicht zugewiesen), gibt das Asynchronmodul die aktuelle Server-Antwort direkt an den Browser zurück, der den entsprechenden Teil der Webseite wie oben aktualisiert.
-
Der Aktivitätsablauf wird dann bei Block 492 wieder zusammengeführt (entweder von Block 487 oder von Block 490). In dieser Phase löscht die Überwachungsfunktion den entsprechenden Datensatz aus der Anstehend-Tabelle.
-
Unter erneuter Bezugnahme auf den Block 469 geht das Verfahren 400 zu Block 496 über, wenn die Vorwegnahmefunktion für die Benutzeranforderung nicht aktiviert ist (d. h., der Aktivierungsmerker ist nicht gesetzt); auch in diesem Fall gibt das Asynchronmodul die aktuelle Server-Antwort direkt an den Browser zurück, der den entsprechenden Teil der Webseite wie oben aktualisiert.
-
Das Verfahren 400 endet dann bei den konzentrischen schwarz-weißen Stoppkreisen 499, vom Block 496, vom Block 481 (wenn der Standardwert gleich dem Istwert ist) oder vom Block 466 (wenn die aktuelle Server-Antwort nicht empfangen wurde).
-
Zur Erfüllung örtlicher und spezieller Anforderungen kann ein Fachmann an der oben beschriebenen Lösung viele logische und/oder physische Abänderungen und Abwandlungen vornehmen. Genauer gesagt versteht es sich, dass, obwohl diese Lösung mit einem bestimmten Grad an Detailtreue in Bezug auf eine oder mehrere Ausführungsformen davon beschrieben wurde, verschiedene Auslassungen, Ersetzungen und Änderungen bei der Form und den Einzelheiten sowie andere Ausführungsformen möglich sind. Insbesondere können verschiedene Ausführungsformen der Erfindung sogar ohne die speziellen Einzelheiten (wie zum Beispiel die numerischen Werte), die in der vorstehenden Beschreibung dargelegt wurden, um ein gründlicheres Verständnis der Erfindung zu ermöglichen, in die Praxis umgesetzt werden; umgekehrt können allgemein bekannte Funktionen weggelassen oder vereinfacht worden sein, um die Deutlichkeit der Beschreibung nicht durch unnötige Einzelheiten zu beeinträchtigen. Darüber hinaus ist ausdrücklich beabsichtigt, dass bestimmte Elemente und/oder Verfahrensschritte, die in Verbindung mit einer beliebigen Ausführungsform der offenbarten Lösung beschrieben sind, als Bestandteil des allgemeinen Auswahlprozesses bei der Entwicklung in beliebige andere Ausführungsformen integriert werden können. In jedem Fall werden ordnende oder andere Kennzeichner lediglich als Bezeichnungen zur Unterscheidung von Elementen mit gleicher Benennung verwendet, bedeuten selbst jedoch keinerlei Priorität, Rangordnung oder Reihenfolge. Darüber hinaus sind die Begriffe „gehören”, „aufweisen”, „enthalten” und „einschließen” (und beliebige Formen davon) mit einer offenen, nicht erschöpfenden Bedeutung gedacht (d. h. nicht auf die genannten Elemente beschränkt), die Begriffe „auf der Grundlage”, „abhängig von”, „gemäß”, „Funktion von” (und beliebige Formen davon) sind als nichtausschließliche Beziehung gedacht (d. h. mit einer möglichen, darin eingeschlossenen weiteren Variablen), und der Begriff „ein/eine” ist als eines oder mehrere Elemente gedacht (sofern nicht anderweitig angegeben).
-
Beispielsweise stellt eine Ausführungsform der vorliegenden Erfindung ein Verfahren zum Interagieren mit einer verteilten Anwendung auf der Client-Seite der verteilten Anwendung (eines beliebigen Typs, siehe unten) bereit. Das Verfahren weist die folgenden Schritte auf. Eine aktuelle Übermittlung einer Benutzeranforderung wird empfangen (eines beliebigen Typs, siehe unten). Ein Hinweis auf die Benutzeranforderung wird zu einer Server-Seite der verteilten Anwendung übertragen, um eine aktuelle Server-Antwort auf die aktuelle Übermittlung der Benutzeranforderung (eines beliebigen Typs, siehe unten) zu empfangen. Ein Standardwert (eines beliebigen Typs, siehe unten) wird der aktuellen Server-Antwort zugewiesen, wenn die aktuelle Server-Antwort nicht innerhalb eines Zeitlimits in Bezug auf die aktuelle Übermittlung der Benutzeranforderung (eines beliebigen Wertes, siehe unten) von der Server-Seite empfangen wird. Eine Menge von Operationen, die gegenüber der verteilten Anwendung ab der Zuweisung des Standardwertes zur aktuellen Server-Antwort durchgeführt werden, wird protokolliert (in einer beliebigen Weise, zum Beispiel in einer oder mehreren temporären Dateien). Ein Istwert der aktuellen Server-Antwort wird von der Server-Seite empfangen. Die protokollierten Operationen werden rückgängig gemacht, und die aktuelle Server-Antwort wird auf den Istwert zurückgesetzt, wenn sich der Istwert vom Standardwert unterscheidet.
-
Es gelten jedoch ähnliche Überlegungen, wenn dieselbe Lösung mit einem gleichwertigen Verfahren realisiert wird (durch Verwenden ähnliche Schritte mit denselben Funktionen oder durch Verwenden von mehr Schritten oder Teilen davon, wobei das Entfernen einiger Schritte oder Hinzufügen weiterer optionaler Schritte nicht entscheidend ist); darüber hinaus können die Schritte in einer anderen Reihenfolge, gleichzeitig oder in einer überlappenden Weise (zumindest zum Teil) durchgeführt werden.
-
Bei einer Ausführungsform der Erfindung weist der Schritt des Zuweisens eines Standardwertes zur aktuellen Server-Antwort das Festlegen des Standardwertes gemäß vorhergehenden Server-Antworten auf, die zu vorhergehenden Übermittlungen der Benutzeranforderung von der Server-Seite empfangen wurden.
-
Jedoch ist die Möglichkeit nicht ausgeschlossen, den Standardwert in einer anderen Weise festzulegen (zum Beispiel einfach auf einen vordefinierten Wert, von dem von vornherein bekannt ist, dass er in der Praxis in den meisten Situationen am wahrscheinlichsten ist, oder auf die letzte Server-Antwort die zu derselben Benutzeranforderung empfangen wurde).
-
Bei einer Ausführungsform der Erfindung weist der Schritt des Festlegens des Standardwertes gemäß vorhergehenden Server-Antworten das Festlegen des Standardwertes gemäß mindestens einer Häufigkeitsverteilung von Werten der vorhergehenden Server-Antworten auf.
-
Der Standardwert kann jedoch gemäß einer beliebigen statistischen Analyse (zum Beispiel auf der Grundlage von Fuzzy-Logik) der vorhergehenden Server-Antworten festgelegt werden.
-
Bei einer Ausführungsform der Erfindung ist die mindestens eine Häufigkeitsverteilung eine einzelne Häufigkeitsverteilung der Werte der vorhergehenden Server-Antworten; der Schritt des Festlegens des Standardwertes gemäß mindestens einer Häufigkeitsverteilung weist das Festlegen des Standardwertes auf den Wert der vorhergehenden Server-Antworten mit einer höchsten Häufigkeit in der Häufigkeitsverteilung auf.
-
Es können jedoch unterschiedliche Regeln verwendet werden, um den Standardwert festzulegen (zum Beispiel mit der Häufigkeitsverteilung, die durch Zuweisen unterschiedlicher Gewichtungen zu den vorhergehenden Server-Antworten gemäß ihrem Alter erzeugt wird).
-
Bei einer Ausführungsform der Erfindung ist die mindestens eine Häufigkeitsverteilung eine Menge von (einer oder mehreren) Gruppen von Häufigkeitsverteilungen aus jeweils einer Vielzahl von Häufigkeitsverteilungen der Werte der vorhergehenden Server-Antworten. Jede Gruppe steht für eine entsprechende Übermittlungseigenschaft der vorhergehenden Übermittlungen der Benutzeranforderung, und die Häufigkeitsverteilungen davon stehen für unterschiedliche Werte der entsprechenden Übermittlungseigenschaft. Der Schritt des Festlegens des Standardwertes gemäß mindestens einer Häufigkeitsverteilung weist das Festlegen des Standardwertes auf den Wert der vorhergehenden Server-Antworten auf, die die höchste Häufigkeit in der Häufigkeitsverteilung jeder Gruppe aufweist, die mit dem Wert der entsprechenden Übermittlungseigenschaft der aktuellen Übermittlung der Benutzeranforderung übereinstimmt.
-
Es kann jedoch eine beliebige Anzahl von Gruppen von Häufigkeitsverteilungen bereitgestellt werden. In jedem Fall können beliebige andere Kriterien auf der Grundlage einer oder mehrerer Übermittlungseigenschaften der Benutzeranforderungen verwendet werden, um den Standardwert festzulegen (zum Beispiel auf der Grundlage einer kombinierten Wahrscheinlichkeit der Standardwerte in den unterschiedlichen Gruppen von Häufigkeitsverteilungen); darüber hinaus ist es auch möglich, aus den vorhergehenden Server-Antworten einen Entscheidungsbaum abzuleiten, wobei der Entscheidungsbaum anschließend verwendet wird, um die aktuelle Übermittlung der Benutzeranforderung in eine einer Vielzahl von disjunkten Klassen einzuteilen, die zu den unterschiedlichen Standardwerten gehören (gemäß ihren Übermittlungseigenschaften).
-
Bei einer Ausführungsform der Erfindung weisen die Übermittlungseigenschaften einen Zeitrahmen der Übermittlungen der Benutzeranforderung auf.
-
Der Zeitrahmen kann jedoch auf andere Weise definiert werden (zum Beispiel auf der Ebene von Stunden der Tage); in jedem Fall können beliebige Eigenschaften der Übermittlungen der Benutzeranforderungen oder Kombinationen davon berücksichtigt werden (zum Beispiel eine geographische Position der Clients).
-
Bei einer Ausführungsform der Erfindung weist das Verfahren ferner den Schritt des Eintretens in einen Fehlerzustand auf, wenn die aktuelle Server-Antwort nicht innerhalb eines weiteren Zeitlimits in Bezug auf die aktuelle Übermittlung der Benutzeranforderung von der Server-Seite empfangen wird; das weitere Zeitlimit ist höher als das Zeitlimit.
-
Es kann jedoch eine beliebige andere Maßnahme ergriffen werden, wenn die Server-Antwort nicht rechtzeitig empfangen wird (zum Beispiel einfaches Rückgängig machen der protokollierten Operationen).
-
Bei einer Ausführungsform der Erfindung weist das Verfahren ferner den Schritt des Festlegens des Zeitlimits und/oder des weiteren Zeitlimits gemäß vorhergehenden Verzögerungen der vorhergehenden Server-Antworten in Bezug auf die vorhergehenden Übermittlungen der Benutzeranforderung auf.
-
Dieser Vorgang kann jedoch nur auf das Zeitlimit, nur auf das weitere Zeitlimit, auf beide oder selbst auf keines davon angewendet werden (wenn sie zum Beispiel in den entsprechenden Scripts definiert oder sie mit festen Werten vorgegeben sind); in jeden Fall kann das Zeitlimit und/oder das weitere Zeitlimit in beliebiger Weise in Bezug auf die aktuelle Übermittlung der Benutzeranforderung definiert werden (zum Beispiel beginnend ab ihrer Übermittlung auf dem Client oder ab ihrer Übertragung auf den Server).
-
Bei einer Ausführungsform der Erfindung weist der Schritt des Empfangens einer aktuellen Übermittlung einer Benutzeranforderung das Erkennen einer Auswahl eines entsprechenden Benutzerbefehls in einer Webseite durch einen Web-Browser auf; das Verfahren weist ferner den Schritt des Anzeigens eines Hinweises auf die aktuelle Server-Antwort in der Webseite oder in einer weiteren Webseite durch den Web-Browser auf.
-
Die verteilte Anwendung kann jedoch von beliebigem Typ sein und sogar nicht auf dem Internet beruhen (zum Beispiel die Realisierung von Datenbankzugriffen oder Leistungsüberwachungseinheiten); darüber hinaus kann die Client-Seite der verteilten Anwendung von beliebigem Typ und sogar nicht webbasiert sein (zum Beispiel durch ein zweckgebundenes Programm oder einen Agenten realisiert). Ebenso ist es möglich, dass unterschiedliche Arten der Server-Seite der verteilten Anwendung (zum Beispiel Datenbankserver oder Überwachungsserver) und der Server-Antworten (zum Beispiel Tabellen oder Berichte) vorhanden sind.
-
Bei einer Ausführungsform der Erfindung weist der Schritt des Übertragens eines Hinweises auf die Benutzeranforderung zu einer Server-Seite der verteilten Anwendung das Aufrufen des entsprechenden Scripts auf, das in einer Definition der Webseite enthalten ist; die Schritte des Zuweisens eines Standardwertes zur aktuellen Server-Antwort, des Protokollierens einer Menge von Operationen, des Rückgängigmachens der protokollierten Operationen und des Zurücksetzens der aktuellen Server-Antwort auf den Istwert werden als Reaktion auf einen entsprechenden Anzeiger aktiviert, den das Script aufweist.
-
Diese Vorwegnahmefunktion kann jedoch in einer beliebigen anderen Weise selektiv aktiviert werden (zum Beispiel mithilfe entsprechender Cookies); in jedem Fall kann die Vorwegnahmefunktion selektiv auf der Ebene von Kategorien von Benutzeranforderungen oder aber unterschiedslos für alle von ihnen aktiviert werden.
-
Bei einer Ausführungsform der Erfindung weist die aktuelle Übermittlung der Benutzeranforderungen einen eindeutigen Code zum Deaktivieren eines Zwischenspeicherungsmechanismus des Browsers auf; das Verfahren weist ferner den Schritt des Verwerfens des eindeutigen Codes zum Festlegen des Standardwertes auf.
-
Der eindeutige Code der Übermittlungen der Benutzeranforderungen kann jedoch auf andere Art verworfen werden (zum Beispiel mithilfe gefilterter Abfragen); in jedem Fall kann diese Funktion weggelassen werden, wenn der Browser keinen Zwischenspeicherungsmechanismus realisiert.
-
Eine weitere Ausführungsform der vorliegenden Erfindung stellt ein Computerprogramm bereit, das Codemittel aufweist, um zu bewirken, dass ein Datenverarbeitungssystem (eines beliebigen Typs, siehe unten) die Schritte des oben beschriebenen Verfahrens durchführt, wenn das Computerprogramm auf dem Datenverarbeitungssystem ausgeführt wird.
-
Dieselbe Lösung kann jedoch als eigenständiges Modul, als Plug-in des Browsers (oder einer beliebigen anderen Client-Seite der verteilten Anwendung) oder sogar direkt im Browser selbst realisiert werden. In diesem Fall gelten ähnliche Überlegungen, wenn das Programm (das zur Realisierung jeder Ausführungsform der Erfindung verwendet werden kann) in einer anderen Weise strukturiert ist, oder wenn zusätzliche Module oder Funktionen bereitgestellt werden; ebenso können die Speicherstrukturen von anderer Art sein oder durch gleichwertige Einheiten ersetzt werden (die nicht notwendigerweise aus physischen Speichermedien bestehen). Das Programm kann jede beliebige Form annehmen, die geeignet ist, um von einem beliebigen Datenverarbeitungssystem oder in Verbindung mit diesem (zum Beispiel innerhalb einer virtuellen Maschine) verwendet zu werden und dadurch das System zu konfigurieren, um die gewünschten Operationen durchzuführen; insbesondere kann das Programm in Form von externer oder residenter Software, Firmware, oder Mikrocode vorliegen (entweder in Objektcode oder in Quellcode – um zum Beispiel kompiliert oder interpretiert zu werden). Darüber hinaus ist es möglich, das Programm auf einem beliebigen computernutzbaren Medium bereitzustellen (und insbesondere als Erzeugnis auf einem nichtflüchtigen Medium); das Medium kann ein beliebiges Element sein, das geeignet ist, das Programm zu enthalten, zu speichern, weiterzugeben, zu übermitteln, oder zu übertragen. Beispielsweise kann das Medium ein elektronisches, magnetisches, optisches oder elektromagnetisches Medium oder ein Infrarot- oder Halbleitermedium sein; Beispiele eines derartigen Mediums sind Festplatten (auf denen das Programm vorgeladen sein kann), austauschbare Datenträger, Bänder, Karten, Leitungen, Lichtwellenleiter, drahtlose Verbindungen, Netzwerke, Funkwellen und dergleichen. In jedem Fall bietet sich die Lösung gemäß einer Ausführungsform der vorliegenden Erfindung an, sogar mit einer Hardwarestruktur (zum Beispiel in einen Chip eines Halbleitermaterials integriert) oder mit einer Kombination aus Software und Hardware realisiert zu werden, die in geeigneter Weise programmiert oder anderweitig konfiguriert ist.
-
Eine weitere Ausführungsform der vorliegenden Erfindung stellt ein Datenverarbeitungssystem (d. h. einen Client) bereit, das Mittel zum Durchführen der Schritte desselben Verfahrens aufweist.
-
Es gelten jedoch ähnliche Überlegungen, wenn der Client eine andere Struktur oder gleichwertige Komponenten aufweist oder andere Betriebseigenschaften hat. In jedem Fall kann jede Komponente davon in mehrere Elemente aufgeteilt sein, oder zwei oder mehrere Komponenten können zusammen in einem einzigen Element kombiniert sein; darüber hinaus kann jede Komponente vervielfältigt sein, um die parallele Ausführung der entsprechenden Operationen zu unterstützen. Es wird außerdem darauf hingewiesen, dass (sofern nicht anderweitig angegeben) jegliche Interaktion zwischen unterschiedlichen Komponenten nicht notwendigerweise kontinuierlich sein muss, und sie kann entweder direkt oder indirekt über einen oder mehrere Vermittler erfolgen. In jedem Fall kann der Client eine andere Struktur aufweisen, oder er kann ähnliche Elemente aufweisen (wie zum Beispiel Cache-Speicher, die die Programme oder Teile davon vorübergehend speichern); darüber hinaus ist es möglich, den Computer oder den Client durch eine beliebige Codeausführungseinheit zu ersetzen, die entweder auf einer physischen Maschine oder einer virtuellen Maschine beruht (wie zum Beispiel ein Desktop-Computer ein PDA, ein Mobiltelefon und dergleichen). Dieselbe Lösung kann auch in einer Datenverarbeitungsinfrastruktur angewendet werden, die auf einer anderen Architektur beruht (zum Beispiel ein lokales Netzwerk, ein Weitverkehrsnetzwerk, ein Mobilfunk- oder Satellitennetz), und sie kann eine beliebige Art von Verbindungen (leitungsgebunden und/oder drahtlos) nutzen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- JP 2004078756 A [0008]
- US 2010/0138485 A [0009]
- US 2009/0094377 A [0009]
- US 7096418 B [0009]
- US 2009/0049243 A [0011]
-
Zitierte Nicht-Patentliteratur
-
- http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html [0009]
- http://www.interaktonline.com/files/art/ajax/AJAX%20%20Asynchronously%20Moving%20Forward.pdf” [0038]
- http://travi.org/about/AjaxSurvey.pdf [0038]
- http://www.usenix.org/event/lisa07/posters/nakamura.pdf [0038]