DE102013201973A1 - Verteilte Anwendung mit Vorwegnahme von Server-Antworten - Google Patents

Verteilte Anwendung mit Vorwegnahme von Server-Antworten Download PDF

Info

Publication number
DE102013201973A1
DE102013201973A1 DE102013201973A DE102013201973A DE102013201973A1 DE 102013201973 A1 DE102013201973 A1 DE 102013201973A1 DE 102013201973 A DE102013201973 A DE 102013201973A DE 102013201973 A DE102013201973 A DE 102013201973A DE 102013201973 A1 DE102013201973 A1 DE 102013201973A1
Authority
DE
Germany
Prior art keywords
server
user request
current
default value
server response
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.)
Ceased
Application number
DE102013201973A
Other languages
English (en)
Inventor
Leonardo Lanni
Vinicio Bombacino
Andrea Tortosa
Paolo Cavazza
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013201973A1 publication Critical patent/DE102013201973A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

Es wird eine Lösung zum Interagieren mit einer verteilten Anwendung auf einer Client-Seite der verteilten Anwendung vorgeschlagen. Ein entsprechendes Verfahren (400) weist die Schritte des Empfangens (412) einer aktuellen Übermittlung einer Benutzeranforderung, des Übertragens (415 bis 427) eines Hinweises auf die Benutzeranforderung zu einer Server-Seite der verteilten Anwendung, um eine aktuelle Server-Antwort auf die aktuelle Übermittlung der Benutzeranforderung zu empfangen, des Zuweisens (439 bis 442) eines Standardwertes zur aktuellen Server-Antwort, wenn die aktuelle Server-Antwort nicht innerhalb eines Zeitlimits in Bezug auf die aktuelle Übermittlung der Benutzeranforderung von der Server-Seite empfangen wird, des Protokollierens (445 bis 448) einer Menge von Operationen, die gegenüber der verteilten Anwendung ab der Zuweisung des Standardwertes zur aktuellen Server-Antwort durchgeführt werden, des Empfangens (466) eines Istwertes der aktuellen Server-Antwort von der Server-Seite und des Rückgängigmachens (484) der protokollierten Operationen und des Zurücksetzens (487) der aktuellen Server-Antwort auf den Istwert, wenn sich der Istwert vom Standardwert unterscheidet, auf.

Description

  • 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]

Claims (13)

  1. Verfahren (400) zum Interagieren mit einer verteilten Anwendung auf einer Client-Seite der verteilten Anwendung, wobei das Verfahren die Schritte umfasst: Empfangen (412) einer aktuellen Übermittlung einer Benutzeranforderung; Übertragen (415 bis 427) eines Hinweises auf die Benutzeranforderung zu einer Server-Seite der verteilten Anwendung, um eine aktuelle Server-Antwort auf die aktuelle Übermittlung der Benutzeranforderung zu empfangen, Zuweisen (439 bis 442) eines Standardwertes zur aktuellen Server-Antwort, wenn die aktuelle Server-Antwort nicht innerhalb eines Zeitlimits in Bezug auf die aktuelle Übermittlung der Benutzeranforderung von der Server-Seite empfangen wird, Protokollieren (445 bis 448) einer Menge von Operationen, die gegenüber der verteilten Anwendung ab der Zuweisung des Standardwertes zur aktuellen Server-Antwort durchgeführt werden, Empfangen (466) eines Istwertes der aktuellen Server-Antwort von der Server-Seite, Rückgängigmachen (484) der protokollierten Operationen und Zurücksetzen (487) der aktuellen Server-Antwort auf den Istwert, wenn sich der Istwert vom Standardwert unterscheidet.
  2. Verfahren (400) nach Anspruch 1, bei dem der Schritt des Zuweisens (439 bis 442) eines Standardwertes zur aktuellen Server-Antwort aufweist: Festlegen (439) des Standardwertes gemäß vorhergehenden Server-Antworten, die zu vorhergehenden Übermittlungen der Benutzeranforderung von der Server-Seite empfangen wurden.
  3. Verfahren (400) nach Anspruch 2, bei dem der Schritt des Festlegens (439) des Standardwertes gemäß vorherigen Server-Antworten aufweist: Festlegen (439) des Standardwertes gemäß mindestens einer Häufigkeitsverteilung von Werten der vorhergehenden Server-Antworten.
  4. Verfahren (400) nach Anspruch 3, bei dem mindestens eine Häufigkeitsverteilung eine einzelne Häufigkeitsverteilung der Werte der vorhergehenden Server-Antworten ist, wobei der Schritt des Festlegens (439) des Standardwertes gemäß mindestens einer Häufigkeitsverteilung aufweist: Festlegen (439) des Standardwertes auf den Wert der vorhergehenden Server-Antworten, die eine höchste Häufigkeit in der Häufigkeitsverteilung aufweisen.
  5. Verfahren (400) nach Anspruch 4, bei dem mindestens eine Häufigkeitsverteilung eine Menge von Gruppen aus jeweils einer Vielzahl von Häufigkeitsverteilungen der Werte der vorhergehenden Server-Antworten ist, wobei jede Gruppe für eine entsprechende Übermittlungseigenschaft der vorhergehenden Übermittlungen der Benutzeranforderung steht und die Häufigkeitsverteilungen davon für unterschiedliche Werte der entsprechenden Übermittlung charakteristisch sind, und wobei der Schritt des Festlegens (439) des Standardwertes gemäß mindestens einer Häufigkeitsverteilung aufweist: Festlegen (439) des Standardwertes auf den Wert der vorhergehenden Server-Antworten, die eine höchste Häufigkeit in der Häufigkeitsverteilung jeder Gruppe aufweisen, der mit dem Wert der entsprechenden Übermittlungseigenschaft der aktuellen Übermittlung der Benutzeranforderung übereinstimmt.
  6. Verfahren (400) nach Anspruch 5, bei dem die Übermittlungseigenschaften einen Zeitrahmen der Übermittlungen der Benutzeranforderung aufweist.
  7. Verfahren (400) nach einem der Ansprüche 1 bis 6, das ferner den Schritt aufweist: Eintreten (457 bis 463) in einen Fehlerzustand, wenn die aktuelle Server-Antwort nicht innerhalb eines weiteren Zeitlimits in Bezug auf die aktuelle Übermittlung der Benutzeranforderung von der Server-Seite empfangen wird, wobei das weitere Zeitlimit höher als das Zeitlimit ist.
  8. Verfahren (400) nach einem der Ansprüche 1 bis 7, das ferner den Schritt aufweist: Festlegen (424) des Zeitlimits und/oder des weiteren Zeitlimits gemäß vorhergehenden Verzögerungen der vorhergehenden Server-Antworten in Bezug auf die vorhergehenden Übermittlungen der Benutzeranforderung.
  9. Verfahren (400) nach einem der Ansprüche 1 bis 8, bei dem der Schritt des Empfangens (412) einer aktuellen Übermittlung einer Benutzeranforderung das Erkennen (412) einer Auswahl eines entsprechenden Benutzerbefehls in einer Webseite durch einen Web-Browser aufweist, wobei das Verfahren ferner den Schritt aufweist: Anzeigen (422; 490; 439) eines Hinweises auf die aktuelle Server-Antwort in der Webseite oder in einer weiteren Webseite durch den Web-Browser.
  10. Verfahren (400) nach Anspruch 9, bei dem der Schritt des Übertragens (415 bis 427) eines Hinweises auf die Benutzeranforderung zu einer Server-Seite der verteilten Anwendung das Aufrufen des entsprechenden Scripts aufweist, das in einer Definition der Webseite enthalten ist, wobei die Schritte des Zuweisens (439 bis 442) eines Standardwertes zur aktuellen Server-Antwort, des Protokollierens (445 bis 448) einer Menge von Operationen, des Rückgängigmachens (484) der protokollierten Operationen und des Zurücksetzens (487) der aktuellen Server-Antwort auf den Istwert als Reaktion auf einen entsprechenden Anzeiger aktiviert werden, den das Script aufweist.
  11. Verfahren (400) nach Anspruch 9 oder 10, bei dem die aktuelle Übermittlung der Benutzeranforderung einen eindeutigen Code zum Deaktivieren eines Zwischenspeicherungsmechanismus des Browsers aufweist, wobei das Verfahren ferner den Schritt aufweist: Verwerfen (439) der eindeutigen Kennung zum Festlegen des Standardwertes.
  12. Computerprogramm (300), das Codemittel aufweist, um zu bewirken, dass ein Datenverarbeitungssystem (115) die Schritte des Verfahrens (400) nach einem der Ansprüche 1 bis 11 durchführt, wenn das Computerprogramm auf dem Datenverarbeitungssystem ausgeführt wird.
  13. Datenverarbeitungssystem (115), das Mittel (300) zum Durchführen der Schritte des Verfahrens (400) nach einem der Ansprüche 1 bis 11 aufweist.
DE102013201973A 2012-02-22 2013-02-07 Verteilte Anwendung mit Vorwegnahme von Server-Antworten Ceased DE102013201973A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP12156435 2012-02-22
EP12156435.5 2012-02-22

Publications (1)

Publication Number Publication Date
DE102013201973A1 true DE102013201973A1 (de) 2013-08-22

Family

ID=47999041

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013201973A Ceased DE102013201973A1 (de) 2012-02-22 2013-02-07 Verteilte Anwendung mit Vorwegnahme von Server-Antworten

Country Status (4)

Country Link
US (2) US9584357B2 (de)
CN (1) CN103297494B (de)
DE (1) DE102013201973A1 (de)
GB (1) GB2501584B (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130046878A1 (en) * 2011-08-15 2013-02-21 Lukas Fryc Asynchronous request interception for testing a request life-cycle
US10318987B2 (en) * 2014-02-18 2019-06-11 International Business Machines Corporation Managing cookie data
US10437724B2 (en) 2017-05-02 2019-10-08 International Business Machines Corporation Providing data values in a timely fashion using asynchronous data store operations including selectively returning a value from a cache or a value determined by an asynchronous computation
US10540282B2 (en) 2017-05-02 2020-01-21 International Business Machines Corporation Asynchronous data store operations including selectively returning a value from cache or a value determined by an asynchronous computation
US10997222B2 (en) * 2018-06-29 2021-05-04 International Business Machines Corporation Conversational agent dialog flow user interface

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004078756A (ja) 2002-08-21 2004-03-11 Nec Corp コンテンツ配信システム、コンテンツ配信方法、コンテンツキャッシュサーバ及びプログラム
US7096418B1 (en) 2000-02-02 2006-08-22 Persistence Software, Inc. Dynamic web page cache
US20090049243A1 (en) 2007-08-13 2009-02-19 Microsoft Corporation Caching Dynamic Content
US20090094377A1 (en) 2006-08-03 2009-04-09 Yoram Zahavi Method and system for accelerating browsing sessions
US20100138485A1 (en) 2008-12-03 2010-06-03 William Weiyeh Chow System and method for providing virtual web access

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311216B1 (en) * 1998-05-29 2001-10-30 Microsoft Corporation Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
CA2296140A1 (en) 1999-01-28 2000-07-28 Lucent Technologies, Inc. Methods and apparatus for logging web user activity using client-side support
US8489437B1 (en) 2000-11-02 2013-07-16 Sureharvest Method and system automatically to certify an agricultural product
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US8112529B2 (en) * 2001-08-20 2012-02-07 Masterobjects, Inc. System and method for asynchronous client server session communication
US7343396B2 (en) 2002-06-20 2008-03-11 Fineground Networks Precomputation of web documents
AU2002952106A0 (en) 2002-10-15 2002-10-31 Silverbrook Research Pty Ltd Methods and systems (npw008)
US7698386B2 (en) 2004-11-16 2010-04-13 Qurio Holdings, Inc. Serving content from an off-line peer server in a photosharing peer-to-peer network in response to a guest request
CN100596135C (zh) 2006-06-09 2010-03-24 华为技术有限公司 一种确定内容提供商优先级的系统和方法
US8850520B1 (en) * 2006-12-12 2014-09-30 Google Inc. Dual cookie security system with interlocking validation requirements and remedial actions to protect personal data
US7958429B2 (en) 2007-07-02 2011-06-07 Broadcom Corporation Distributed processing LDPC (low density parity check) decoder
US8135393B2 (en) * 2008-09-18 2012-03-13 Research In Motion Limited System and method for transactional application lifecycle management for mobile devices
US9792384B2 (en) * 2009-02-26 2017-10-17 Red Hat, Inc. Remote retreival of data files
US8965860B2 (en) * 2010-04-01 2015-02-24 Salesforce.Com, Inc. Methods and systems for bulk uploading of data in an on-demand service environment
CN102316097B (zh) 2011-07-27 2014-09-17 杭州斯凯网络科技有限公司 一种减少用户等待时间的流媒体调度分发方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096418B1 (en) 2000-02-02 2006-08-22 Persistence Software, Inc. Dynamic web page cache
JP2004078756A (ja) 2002-08-21 2004-03-11 Nec Corp コンテンツ配信システム、コンテンツ配信方法、コンテンツキャッシュサーバ及びプログラム
US20090094377A1 (en) 2006-08-03 2009-04-09 Yoram Zahavi Method and system for accelerating browsing sessions
US20090049243A1 (en) 2007-08-13 2009-02-19 Microsoft Corporation Caching Dynamic Content
US20100138485A1 (en) 2008-12-03 2010-06-03 William Weiyeh Chow System and method for providing virtual web access

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
http://travi.org/about/AjaxSurvey.pdf
http://www.interaktonline.com/files/art/ajax/AJAX%20%20Asynchronously%20Moving%20Forward.pdf"
http://www.usenix.org/event/lisa07/posters/nakamura.pdf
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

Also Published As

Publication number Publication date
US10171571B2 (en) 2019-01-01
US20130218953A1 (en) 2013-08-22
GB2501584A (en) 2013-10-30
US20170118277A1 (en) 2017-04-27
CN103297494A (zh) 2013-09-11
GB2501584B (en) 2014-08-13
US9584357B2 (en) 2017-02-28
CN103297494B (zh) 2016-02-24
GB201302521D0 (en) 2013-03-27

Similar Documents

Publication Publication Date Title
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE60308700T2 (de) Dynamische fernkonfiguration eines webservers zur bereitstellung von kapazität auf anfrage
DE112006000650B4 (de) Webbasiertes Verwaltungsverfahren und Vorrichtung zum Durchführen desselben
DE60313567T2 (de) Zugriffsrelayvorrichtung
DE60308489T2 (de) Anwendungsfensterschließung als Reaktion auf ein Ereignis in einem Parent-Fenster
DE102012218528B4 (de) Verwendung von Push-Benachrichtigungen zur Verringerung offener Browser-Verbindungen
DE202012013479U1 (de) System zur Synchronisierung von Aktionen im Hintergrund einer Anwendung
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE202011110893U1 (de) Verwaltung mehrfacher Anmeldungen über einen Einzelbrowser
DE69723432T2 (de) Informationsauffindungssystem mit einer cachedatenbank
DE112016004896T5 (de) Bereitstellung von Remote-Befehlsausführung mit fein abgestimmtem Zugriff für Instanzen von virtuellen Maschinen in einer verteilten Datenverarbeitungsumgebung
DE202010018490U1 (de) Architektonisches Muster für persistenten Webanwendungsentwurf
DE102012216028A1 (de) Webseiten-skriptverwaltung
DE202017105834U1 (de) Verwaltung von Anwendungsaktualisierungen
DE202021103602U1 (de) Benchmark-Funktion für Ausgangsknoten
DE102013210891A1 (de) Dynamisches Substituieren von Übersetzungen
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE202010018478U1 (de) Cachen von Informationen
DE202012013405U1 (de) Cloud-zu Gerät-Nachrichtenübermittlung zur Anwendungsaktivierung und Meldung
DE102013201973A1 (de) Verteilte Anwendung mit Vorwegnahme von Server-Antworten
DE202019005859U1 (de) System und Einrichtung zum Auswählen eines Edge-Servers
DE112020000133T5 (de) Browserverlauf mit geringer Entropie für die Quasi-Personalisierung von Inhalten
DE112011104787T5 (de) Nutzung von Inhalten über persönliche Clouds

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final