DE60224926T2 - Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation. - Google Patents

Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation. Download PDF

Info

Publication number
DE60224926T2
DE60224926T2 DE60224926T DE60224926T DE60224926T2 DE 60224926 T2 DE60224926 T2 DE 60224926T2 DE 60224926 T DE60224926 T DE 60224926T DE 60224926 T DE60224926 T DE 60224926T DE 60224926 T2 DE60224926 T2 DE 60224926T2
Authority
DE
Germany
Prior art keywords
client
server
component
browser
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60224926T
Other languages
English (en)
Other versions
DE60224926D1 (de
Inventor
Martin Dr. Moser
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Publication of DE60224926D1 publication Critical patent/DE60224926D1/de
Application granted granted Critical
Publication of DE60224926T2 publication Critical patent/DE60224926T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf eine elektrische Datenverarbeitung und spezifischer bezieht sie sich auf Verfahren, Computerprogrammprodukte und Systeme für eine Client-Server Kommunikation.
  • Hintergrund der Erfindung
  • Auf einige Softwareanwendungen kann durch einen Benutzer unter Verwendung eines konventionellen Web-Browsers, wie dem Microsoft Internet Explorer zugegriffen werden. Typischerweise stellen derartige Anwendungen eine Mehrzahl von Seiten zur Verfügung. Eine Seite beinhaltet relevante Information für ein graphisches Benutzer-Interface (GUI), durch welches der Benutzer mit der Anwendung interagieren bzw. Wechselwirken kann. Die Seite kann mehrere Komponenten beinhalten. Die Seite wird typischerweise auf einem Server generiert und dann zu einem Client übertragen. Bei dem Client ist bzw. wird die Seite für einen Benutzer bzw. Verwender durch den Browser visualisiert. Wenn der Benutzer mit dem Client über das GUI wechselwirkt, um die Seite zu erneuern bzw. zu aktualisieren, wird das gesamte Verfahren wiederholt. Das allgemein akzeptierte Programmdesignmuster für das oben beschriebene Verfahren bzw. die oben beschriebene Prozedur ist das sogenannte MVC (Model-View-Controller) Designmuster. Das Modell, welches Anwendungsdaten für ein Sehen und Handhaben verkapselt bzw. einschließt, wird durch die Steuer- bzw. Regeleinrichtung bzw. den Controller manipuliert und ist in die Ansicht gerendert. Die Ansicht entspricht einer Seite, welche einen mit dem Browser kompatiblen Inhalt bzw. Content beinhaltet. Es kann zahlreiche Ansichten und Controller für jedes Modell geben. Beispielsweise kann eine Ansicht verwendet werden, um Daten des Modells als eine Tabelle zu visualisieren bzw. darzustellen, während eine andere Ansicht verwendet werden kann, um dieselben Daten als eine Pie- bzw. "Tortenecken"-Darstellung zu visualisieren bzw. sichtbar zu machen. All dies wird auf dem Server durchgeführt und die komplette Ansicht wird zu dem Client gesendet. Daher erfordert das MVC Designmuster zahlreiche CPU Zyklen und eine hohe Bandbreite des Computernetzwerks, welches eine Kommunikation zwischen dem Client und dem Server ermöglicht, da die gesamte Seite (Layout Information und Daten) auf dem Server regeneriert wird und die resultierende Ansicht von dem Server zu dem Client über das Netzwerk neuerlich übertragen wird. Weiterhin ist der Benutzer mit unerwünschten Effekten konfrontiert, wie Wartezeiten und Schirmflimmern, bis die neuerlich frisch hergestellte Seite endgültig dem Client präsentiert wird.
  • Einige konventionelle Browser, wie der Microsoft Internet Explorer IE 6.0, beinhalten ein Feature bzw. Merkmal für ein flimmerfreies Rendern bzw. Wiedergeben. Wenn der Client eine modifizierte Seite erhält, identifiziert der Browser modifizierte Komponenten der Seite und ersetzt lediglich diese Komponenten statt der gesamten Seite, beispielsweise durch dynamische HTML Injektion bzw. Eingabe in das Dokument-Objektmodell (DOM) der Seite. Dies führt zu einer Reduktion eines Schirmflimmerns für den Benutzer, verbraucht jedoch immer noch CPU Zeit (CPU Zyklen) für eine Seitengenerierung bzw. -erstellung und erfordert weiterhin eine Bandbreite für eine Übertragung der gesamten Seite von dem Server zu dem Client. Weiterhin erfordert jede Benutzerwechselwirkung mit dem Client einen Serverrundgang und ver ursacht daher eine hohe Serverlast aufgrund einer Seitengenerierung und -übertragung.
  • Es besteht ein fortlaufendes Bedürfnis zum Reduzieren eines CPU Zeitverbrauchs und von Bandbreitenerfordernissen in einer Client-Server Kommunikation und zum Reduzieren von unerwünschten Effekten für den Benutzer zur selben Zeit.
  • International Business Machines Corporation: "Updating Live HTML Pages Incrementally With Data From Webservers" Research Disclosure, Kenneth Mason Publications, Hampshire, GB. Vol. 433, Nr. 95, Mai 2000 offenbart ein Verfahren zum Aktualisieren von lebenden HTML Seiten, wobei, wenn eine HTML Seite aktualisiert wird, nicht der gesamte Code und Inhalt bzw. Content der HTML Seite dem Browser übersandt werden.
  • In dem Dokument Lee K. et al.: "Incremental Maintenance For Dynamic Database-Derived HTML Pages In Digital Libraries", Proceedings of the 1998 ACM CIKM International Conference an Information and Knowledge Management. CIKM-98, Bethesda, MD, November 3–7, 1998, ACM CIKM International Conference an Information and Knowledge Management, New York, NY: ACM, US, Vol. Conf. 7, 3. November 1998, Seiten 20 bis 29, XP 000895348 ISBN: 1-58113-061-9 ist ein Verfahren zum inkrementellen Aktualisieren einer materialisierten Ansicht in einer Web- bzw. Netzumgebung geoffenbart, wobei ein Schnappschuß der Ansicht zu einer speziellen Referenz- bzw. Bezugszeit, beinhaltend Ansichtsänderungen seit der letzten Aktualisierung angezeigt ist bzw. wird.
  • Zusammenfassung der Erfindung
  • Daher ist es ein Gegenstand bzw. Ziel der vorliegenden Erfindung, Verfahren, Computerprogrammprodukte und Computersysteme zur Verfügung zu stellen, um Bandbreitenerfordernisse in einer Client-Server Kommunikation zu reduzieren, wenn Seiten erneuert bzw. überarbeitet werden.
  • Um dieses Ziel zu erreichen, stellt in einer Ausbildung der vorliegenden Erfindung ein Rechner- bzw. Computersystem zum Handhaben von inkrementellen Daten gemäß Anspruch 1 die folgenden Merkmale zur Verfügung:
    • a) ein Server-Controller bzw. eine Server-Steuer- bzw. -Regeleinrichtung empfängt eine Modifikationsanfrage von einem Client, und modifiziert in Antwort auf die Modifikationsanfrage ein ursprüngliches bzw. Originalmodell einer Anwendungskomponente, welche auf einem Server gespeichert ist, in ein modifiziertes Modell der Anwendungskomponente;
    • b) ein Server-Renderer generiert wenigstens ein Browser-Inkrement, welches dem Unterschied bzw. der Differenz zwischen dem ursprünglichen Modell und dem modifizierten Modell entspricht;
    • c) ein Client-Assembler erhält bzw. empfängt das wenigstens eine Browser-Inkrement von dem Server und aktualisiert an dem Client eine Originaldokument-Objektmodellkomponente (DOM) mit dem wenigstens einen Browser-Inkrement. Die Original-DOM-Komponente entspricht dem Originalmodell und die Aktualisierung resultiert in einer modifizierten DOM Komponente, welche mit dem modifizierten Modell übereinstimmt;
    • d) die Modifikationsanfrage wird durch einen Client-Controller generiert.
  • Weitere Ausbildungen der Erfindung sind ein Server gemäß Anspruch 10, ein Client gemäß Anspruch 11, ein serverseitiges Verfahren gemäß Anspruch 15, ein clientseitiges Verfahren gemäß Anspruch 16, ein serverseitiges Computerprogrammprodukt gemäß Anspruch 20 und ein clientseitiges Computerprogrammprodukt nach Anspruch 21.
  • In einer bevorzugten Ausbildung instruiert der Client-Controller (100-2) den Client-Assembler (100-1), die ursprüngliche oder modifizierte DOM Komponente (300-T1, 300-T2) nach bzw. bei einem Empfangen einer Rücksetzanfrage zurückzusetzen.
  • Wenn sie mit dem MVC-Muster gemäß dem Stand der Technik verglichen wird, wo ein Modell, eine Ansicht und ein Controller gespeichert und durch den Server bearbeitet sind bzw. werden, verwendet die vorliegende Erfindung ein Muster, wo die Ansicht und der Controller in serverseitige und clientseitige Abschnitte geteilt sind. Der serverseitige Abschnitt der Ansicht ist der Server-Renderer. Der clientseitige Abschnitt der Ansicht ist der Client-Assembler. Der serverseitige Abschnitt des Controllers ist der Server-Controller und der clientseitige Abschnitt des Controllers ist der Client-Controller.
  • Es ist ein Effekt der vorliegenden Erfindung, daß die erforderliche Bandbreite für eine Netzwerkkommunikation niedriger ist, wenn sie mit Systemen gemäß dem Stand der Technik verglichen wird, wo die gesamte Seite zwischen dem Server und dem Client statt einem Browser-Inkrement ausgetauscht wird. Häufig wird lediglich ein kleinerer Abschnitt der Seite modifiziert. In diesem Fall erfordert die Browser-Inkrement-Übertragung signifikant weniger Bandbreite als die Übertragung einer gesamten Seite.
  • Es ist ein weiterer Effekt der vorliegenden Erfindung, daß ein Benutzer, welcher mit dem Client wechselwirkt bzw. interagiert, einen augenerfreuenden Effekt erfährt, da die Aktualisierung einer DOM Komponente der Browserkomponente mit einem Browser-Inkrement in einer flimmerfreien Änderung des graphischen Benutzer-Interface resultiert.
  • Es ist ein weiterer Effekt der vorliegenden Erfindung, daß der Server es nicht erfordert, den Zustand einer Anwendung zu halten, da der Server die Statusinformation, die er braucht, von dem Client empfängt.
  • Diese Aspekte der Erfindung werden mittels der Elemente und Kombinationen realisiert und erreicht, die insbesondere in den beiliegenden Ansprüchen ausgeführt sind. Auch ist die beschriebene Kombination der Merkmale der Erfindung nicht als eine Beschränkung zu verstehen, und alle Merkmale können in anderen Konstellationen kombiniert sein bzw. werden. Es ist auch zu verstehen, daß sowohl die vorhergehende, allgemeine Beschreibung als auch die nachfolgende, detaillierte Beschreibung lediglich exemplarisch und erläuternd sind, und nicht für die Erfindung, wie sie beschrieben ist, beschränkend sind.
  • Kurze Beschreibung der Zeichnungen
  • 1 illustriert ein vereinfachtes Blockdiagramm eines exemplarischen bzw. beispielhaften Computersystems, welches Ausbildungen der vorliegenden Erfindung implementiert;
  • 2A bis 2D illustrieren eine Implementierung eines graphischen Benutzer-Interface gemäß einer Ausbildung der vorliegenden Erfindung;
  • 3 illustriert eine Wechselwirkung eines Client mit einem Server, wenn er gemäß einer Ausbildung der Erfindung betätigt wird;
  • 4A, 4B illustrieren Details einer clientseitigen Handhabung eines Browser-Inkrements in einer Ausbildung der Erfindung;
  • 5 illustriert zwei komplementäre Computerprogrammprodukte und ihre wesentlichen funktionellen Blöcke, welche in einer Ausbildung der vorliegenden Erfindung verwendet werden können;
  • 6 illustriert ein vereinfachtes Flußdiagramm eines serverseitigen Verfahrens zum Handhaben von inkrementellen Daten gemäß der Erfindung; und
  • 7A, 7B illustrieren ein vereinfachtes Flußdiagramm eines clientseitigen Verfahrens zum Handhaben von inkrementellen Daten gemäß der Erfindung.
  • Detaillierte Beschreibung der Erfindung
  • Wo immer dies möglich ist, werden dieselben Bezugszeichen in den Zeichnungen verwendet, um dieselben oder ähnliche Teile zu bezeichnen.
  • Definitionen von Ausdrücken, wie sie nachfolgend hierin verwendet sind bzw. werden:
  • Client:
  • Ein Client ist eine Computervorrichtung, die konfiguriert ist, um auf einen Service bzw. Dienst zuzugreifen, welcher(s) beispielsweise durch eine Softwareanwendung zur Verfügung gestellt ist bzw. wird. Typischerweise lassen Clients für ein Zugreifen auf Webanwendungen Web-Browser laufen, wie Netscape Navigator, welcher auf einem PC läuft, Pocket Internet Explorer, der auf einem PDA läuft, oder einen WAP-Browser, der auf einem Mobiltelefon läuft.
  • Server:
  • Ein Server ist eine Computervorrichtung, auf welcher die Anwendung läuft, auf welche durch den Client zugegriffen ist bzw. wird.
  • Page bzw. Seite:
  • Eine Seite beinhaltet Inhalt bzw. Content (Layout und Daten), welcher ein graphisches Benutzer-Interface einer Webanwendung (siehe Definition unten) definiert. Eine Seite ist bzw. wird typischerweise auf dem Server in einem mit einem Browser kompatiblem Format, wie HTML oder WML, gerendert bzw. wiedergegeben.
  • Komponente:
  • Eine Komponente ist ein grundsätzlicher Baublock einer Seite. Die Komponente existiert immer innerhalb einer Seite. Eine Komponente kann weitere Komponenten beinhalten. In diesem Fall wird die Komponente als eine "Eltern- bzw. Mutter-Komponente" bezeichnet und die weiteren Komponenten werden als "Kinder-Komponenten" bezeichnet. Eine Komponente einer Seite, welche keine Eltern-Komponente innerhalb der Seite aufweist, wird als eine Root- bzw. Wurzel-Komponente bezeichnet. Gemäß der Erfindung hat eine Komponente einen serverseitigen Abschnitt, welcher auch als eine "Anwendungs-Komponente" bezeichnet wird. Die Anwendungskomponente existiert während der Ausbildung bzw. Erzeugung einer Komponenten-Beschreibungseinheit und eines Browser-Inkrements. Dies erlaubt es jemandem, einen zustandslosen Server zu besitzen, da die Anwendungskomponente lediglich für ein beschränktes Zeitintervall existieren kann und notwendige Statusinformation von einem Client empfängt. Die Komponente hat auch einen clientseitigen Abschnitt, welcher als eine Browser-Komponente bezeichnet wird. Die Browser-Komponente hält den Status der entsprechenden Komponente.
  • Komponenten-Beschreibungseinheit bzw. -Descriptor: Wenn eine Seite in ein mit einem Browser kompatibles Format gerendert wird, wird jede Anwendungskomponente der Seite in das mit dem Browser kompatible Format gerendert. Eine gerenderte Anwendungskomponente wird als "Komponenten-Beschreibungseinheit" bezeichnet. Eine Komponenten-Beschreibungseinheit kann als ein Namen-Wert-Paar implementiert werden.
  • Webanwendung:
  • Eine Webanwendung, wie sie nachfolgend verwendet wird, beinhaltet einen Satz von Seiten. Ein spezifisches Merkmal einer Webanwendung ist jenes, daß es keinen Zustand an dem Server hält bzw. beibehält. Mit anderen Worten erzeugt für jede Anfrage, die der Server empfängt, er einen Status der zugegriffenen Webanwendung von Null bzw. Anfang an. Nachdem die Web-Anwendung eine Ausgabe generiert bzw. erzeugt hat, wird üblicherweise der Zustand bzw. Status verworfen.
  • Dokumenten-Objekt-Modell:
  • Gemäß der entsprechenden W3C Definition stellt das Dokumenten-Objekt-Modell (DOM) einer Seite einen geparsten Mechanismus zur Verfügung, um auf einen geparsten bzw. aufgeteilten HTML und XML Inhalt bzw. Content zuzugreifen und diesen zu manipulieren.
  • Klassenname:
  • Ein Klassenname einer Komponente spezifiziert den Namen einer serverseitigen Komponenten-Klasse (beispielsweise Java Klasse, Java-Server-Seiten-Klasse, Servlet-Klasse, Pascal-Klasse, C Klasse, C++ Klasse oder Business-Server-Seiten-Klasse), welche die Anwendungskomponente der Komponente implementiert. Die Anwendungskomponente ist eine Instanz bzw. ein Fall der Komponenten-Klasse, welche ein entsprechendes Modell, einen Server-Controller oder einen Server-Renderer beinhalten kann.
  • Script-Klassen-Name:
  • Der Script-Klassen-Name einer Komponente spezifiziert den Namen einer clientseitigen Komponenten-Script-Klasse (beispielsweise JavaScript Klasse, Java Applets Klasse oder VisualBasic Script Klasse), welche eine Browser-Komponente implementiert, welche einer Anwendungskomponente entspricht. Die Komponenten-Script-Klasse und die Komponenten-Klasse können identische Hierarchien besitzen. Die Browser-Komponente ist eine Instanz bzw. ein Fall der Komponenten-Script-Klasse und kann einen entsprechenden Client-Controller, Client-Assembler und DOM Komponente der gegenwärtigen Seite beinhalten. Eine DOM Komponente kann einen oder mehrere DOM Knoten beinhalten, welche(r) durch den Browser verwendet wird bzw. werden, um die entsprechende Komponente zu visualisieren bzw. sichtbar zu machen.
  • 1 ist ein vereinfachtes Blockdiagramm eines exemplarischen bzw. beispielhaften Computersystems, welches Ausbildungen der vorliegenden Erfindung implementiert. Ein Computersystem 999 beinhaltet Computer 900 und hat eine Mehrzahl von weiteren Computern 901, 902 (oder 90q mit q = 0...Q-1, Q irgendeine Zahl).
  • Der Computer 900 kann mit weiteren Computern 901, 902 über ein Computer-Netzwerk 990 kommunizieren. Der Computer 900 hat einen Prozessor 910, Speicher 920, Bus 930 und fakultativ eine Eingabevorrichtung 940 und Ausgabevorrichtung 950 (I/O Vorrichtungen, Benutzer-Interface 960). Wie dargestellt bzw. illustriert, ist die Erfindung durch ein Computerprogrammprodukt 100 (CPP), Programmträger 970 oder Programmsignal 980 implementiert.
  • In bezug auf den Computer 900 wird der Computer 901/902 manchmal als "Remote Computer" bzw. "entfernter Computer" bezeichnet, der Computer 901/902 ist beispielsweise ein Server, eine gleichrangige bzw. Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten, und hat typischerweise zahlreiche oder alle der Elemente, die in bezug auf den Computer 900 beschrieben sind.
  • Der Computer 900 ist beispielsweise ein konventioneller Personal Computer (PC), ein Desktop oder eine in der Hand gehaltene Vorrichtung, ein Multiprozessor-Computer, ein Stift-Computer, eine auf einem Mikroprozessor basierende oder programmierbare Konsumenten-Elektronik-Vorrichtung, ein Mini-Computer, ein Mainframe-Computer, eine persönliche mobile Computer-Vorrichtung, ein Mobiltelefon, ein tragbarer oder stationärer Personal Computer, ein Palmtop Computer oder dgl.
  • Der Prozessor 910 ist beispielsweise eine zentrale Verarbeitungseinheit (CPU), eine Mikro-Controller-Einheit (MCU), ein digitaler Signalprozessor (DSP) oder dgl.
  • Der Speicher 920 symbolisiert Elemente, welche temporär oder permanent Daten und Instruktionen bzw. Anweisungen speichern. Obwohl der Speicher 920 als Teil des Computers 900 dargestellt bzw. illustriert ist, kann eine Speicherfunktion auch in dem Netzwerk 990, in den Computern 901/902 und in dem Prozessor 910 selbst (beispielsweise Cache, Register) oder sonstwo implementiert sein bzw. werden. Der Speicher 920 kann ein Nur-Lese-Speicher (ROM), ein Direktzugriffsspeicher (RAM) oder ein Speicher mit anderen Zugriffsoptionen sein. Der Speicher 920 ist physikalisch durch durch einen Computer lesbare Medien implementiert, wie magnetische Speichermedien, optische Speichermedien, Halbleiter-Speichermedien oder durch irgendein anderes, durch einen Computer lesbares Speichermedium.
  • Der Speicher 920 kann Supportmodule, wie beispielsweise ein grundsätzliches bzw. Basis-Eingabe-Ausgabe-System (BIOS), ein Betriebssystem (OS), eine Programmbibliothek, einen Compiler, einen Interpreter bzw. eine Interpretationseinrichtung oder ein Textbearbeitungswerkzeug speichern.
  • CPP 100 implementiert Programminstruktionen bzw. -anweisungen und – gegebenenfalls – Daten, welche den Prozessor 910 veranlassen, Verfahrensschritte der vorliegenden Erfindung auszuführen. Mit anderen Worten kann das CPP 100 den Betrieb des Computers 900 steuern bzw. regeln, so daß er in Übereinstimmung mit der Erfindung arbeitet. Beispielsweise und ohne die Erfindung zu begrenzen, kann das CPP 100 als ein Quellcode in irgendeiner Programmiersprache verfügbar sein, und als ein Objektcode ("Binärcode") in einer kompilierten Form.
  • Obwohl das CPP 100 als in dem Speicher 920 gespeichert illustriert ist, kann das CPP 100 anderswo angeordnet sein. Das CPP 100 kann auch in einem Carrier bzw. Träger 970 eingebettet bzw. verkörpert sein.
  • Der Träger 970 ist außerhalb des Computers 900 dargestellt bzw. illustriert. Für ein Kommunizieren des CPP 100 zu dem Computer 900 wird der Träger 970 üblicherweise in die Eingabevorrichtung 940 eingesetzt. Der Carrier 970 ist als irgendein durch einen Computer lesbares Medium implementiert, wie ein Medium, das grob oben erklärt ist (siehe Speicher 920). Allgemein ist der Träger 970 ein Gegenstand einer Herstellung, welcher ein computerlesbares Medium verkörpert, welches einen durch einen Computer lesbaren Programmcode besitzt, welche verwendet werden kann, um einen Computer zu verlassen, Verfahren der vorliegenden Erfindung durchzuführen. Weiterhin kann ein Programmsignal 980 auch das CPP 100 verkörpern.
  • Die Eingabevorrichtung 940 stellt Daten und Instruktionen für ein Bearbeiten durch den Computer 900 zur Verfügung. Die Vorrichtung 940 kann beispielsweise eine Tastatur, eine Zeigevorrichtung (beispielsweise Maus, Trackball, Cursor-Richtungstasten), Mikrophon, Joystick, Gamepad, Scanner oder Diskettenantrieb sein. Obwohl die Beispiele Vorrichtungen mit menschlicher Wechselwirkung sind, kann die Vorrichtung 940 auch ohne menschliche Wechselwirkung arbeiten, wie beispielsweise ein drahtloser Empfänger (beispielsweise mit Satellitenschüssel oder terrestrischer Antenne), ein Sensor (beispielsweise ein Thermometer), ein Zähler (beispielsweise Warenzähler in einem Geschäft bzw. in einer Fabrik). Die Eingabevorrichtung 940 kann zum Lesen des Trägers 970 dienen.
  • Die Ausgabevorrichtung 950 präsentiert die Instruktionen und Daten, welche bearbeitet wurden. Beispielsweise kann dies ein Monitor oder eine Anzeige sein, beispielsweise eine Kathodenstrahlröhre (CRT) oder eine Flachbildanzeige oder Flüssigkristallanzeige (LCD), ein Lautsprecher, Drucker, Plotter oder eine Vibrationswarnvorrichtung. Ähnlich wie oben kann die Ausgabevorrichtung 950 mit dem Benutzer kommunizieren, jedoch kann sie auch mit weiteren Computern kommunizieren.
  • Die Eingabevorrichtung 940 und die Ausgabevorrichtung 950 können zu einer einzigen Vorrichtung kombiniert sein. Jegliche Vorrichtung 940 und 950 kann fakultativ zur Verfügung gestellt werden.
  • Der Bus 930 und das Netzwerk 990 stellen logische und physikalische Verbindungen beim Fördern bzw. Transportieren von Instruktionen und Datensignalen zur Verfügung. Während Verbindungen innerhalb des Computers 900 üblicherweise als ein "Bus 930" bezeichnet werden, werden Verbindungen zwischen Computern 900902 als "Netzwerk 990" bezeichnet. Fakultativ beinhaltet das Netzwerk 990 Gateways, welche Computer sind, welche auf Datenübertragung und Protokollumwandlung spezialisiert sind.
  • Die Vorrichtungen 940 und 950 sind bzw. werden mit dem Computer 900 durch den Bus 930 (wie illustriert) oder durch das Netzwerk 990 (fakultativ) gekoppelt.
  • Netzwerke (wie das Netzwerk 990) sind in Büros, firmenweiten Computernetzwerken, Intranets und dem Internet üblich. Das Netzwerk 990 kann ein verdrahtetes oder ein drahtloses Netzwerk sein. Beispiele von Netzwerkimplementierungen können Local Area Netzwerke (LAN), Wide Area Netzwerke (WAN), öffentlich geschaltete Telefonnetzwerke (PSTN) und integrierte Service-Digital-Netzwerke (ISDN) sein. Andere Beispiele von Netzwerkimplementierungen sind in der Technik bekannt.
  • Eine Vielzahl von Übertragungsprotokollen und Datenformaten ist bekannt, beispielsweise das Transmission-Control-Protocol/Internet-Protokoll (TCP/IP), Hypertext-Transfer-Protokoll (HTTP), sichere HTTP (HTTPS) oder drahtlose Anwendungsprotokoll (WAP).
  • Interfaces bzw. Schnittstellen, die zwischen den Elementen gekoppelt sind, sind ebenfalls in der Technik gut bekannt. Der Einfachheit halber sind Interfaces nicht illustriert. Ein Interface kann beispielsweise ein Interface mit seriellem Port, ein Interface mit parallelem Port, ein Spielport, ein Universal Serial Bus (USB) Interface, ein internes oder externes Modem, ein Videoadapter oder eine Tonkarte sein.
  • Computer und Programm sind eng miteinander in Bezug. Wie dies nachfolgend verwendet wird, sind Phrasen, wie "der Computer stellt zur Verfügung" und "das Programm stellt zur Verfügung" übliche Abkürzungen, um Tätigkeiten durch einen Computer auszudrücken, welcher durch ein Programm gesteuert bzw. geregelt wird.
  • 2A bis 2D illustrieren eine Implementierung eines graphischen Benutzer-Interface 955 gemäß einer Ausbildung der vorliegenden Erfindung an vier aufeinanderfolgenden Zeitpunkten T1, T2, T3 und T4.
  • Das folgende Beispiel einer Benutzerwechselwirkung mit dem graphischen Benutzer-Interface 955 wird durch die gesamte Beschreibung verwendet, um weiter die vorliegende Erfindung zu erklären. Jedoch kann irgendein graphisches Benutzer-Interface gemäß der vorliegenden Erfindung implementiert sein bzw. werden. Beispielsweise wird ein GUI 955 dem Benutzer auf der Ausgabevorrichtung 950 (siehe 1) des Client-Computers 900 (siehe 1) präsentiert und der Benutzer interagiert mit dem GUI 955 unter Verwendung der Eingabevorrichtung 940.
  • Das GUI 955 ist ein graphisches Benutzer-Interface, welches es dem Benutzer ermöglicht, mit hierarchischen Daten wechselzuwirken bzw. zu interagieren, welche durch Knoten eines Baums 955-1 visualisiert sind. Beispielsweise sind bzw. werden die hierarchischen Daten auf dem Server-Computer 901 (siehe 1) gespeichert. Jedoch können die Daten auf irgendeiner Speichervorrichtung des Computersystems 999 (siehe 1) gespeichert sein. Der Benutzer kann auch den Baum 955-1 durch Verwendung eines RESET (-Knopfs) 955-2 zurücksetzen. Der Status von jedem Knoten des Baums 955-1 wird durch ein Minus-Vorzeichen (–) oder ein Plus-Vorzeichen (+) angedeutet. Das Minus-Vorzeichen zeigt an, daß der Status eines Knotens erweitert ist. Das Plus-Vorzeichen zeigt, daß der Status eines Knotens kollabiert bzw. zusammengefallen ist. Beispielsweise kann durch ein Anklicken eines Knotens der Benutzer den Status des Knotens von zusammengefallen (+) zu expandiert (–) oder umgekehrt verändern.
  • In 2A wird bei T1 der Benutzer mit dem Baum 955-1 aufgefordert, wobei die Zustände der verschiedenen Knoten sind:
    Wurzelknoten R1: expandiert (–); Kindknoten FL1, FL2; Knoten FL1 ersten Niveaus: expandiert (–); Kindknoten: SL1, SL2;
    Knoten FL2 ersten Niveaus: zusammengefallen; und
    Knoten SL1, SL2 zweiten Niveaus: zusammengefallen (+).
  • Beispielsweise wählt der Benutzer den Knoten SL2 zweiten Niveaus für ein Expandieren (beispielsweise durch ein Anklicken des Knotens) aus. Nachdem er die Auswahl des Benutzers empfangen hat, wird der Baum 955-1 entsprechend verändert.
  • In 2B wurde bei T2 der Status des Knotens SL2 zweiten Niveaus verändert in: expandiert (–); Kindknoten TL1. Der Knoten TL1 dritter Schicht wird zu dem Baum 955-1 als ein Kindknoten des Knotens SL2 zweiter Schicht hinzugefügt. Dann wählt beispielsweise der Benutzer neuerlich den Knoten SL2 zweiten Niveaus für ein Zusammenfallen bzw. Kollabieren (beispielsweise durch ein Anklicken des Knotens) aus. Nachdem die Auswahl des Benutzers empfangen wurde, verändert der Client 900 den Baum 955-1 entsprechend.
  • In 2C wurde bei T3 der Status des Knotens SL2 zweiten Niveaus zurück verändert zu: zusammengefallen (+). Der Knoten TL1 dritter Schicht ist in dem Baum 955-1 versteckt und nicht als ein Kindknoten des Knotens SL2 zweiter Schicht sichtbar. Beispielsweise klickt der Benutzer dann auf den RESET- bzw. Rücksetz-Knopf 955-2, um den Baum 955-1 zu seinem ursprünglichen bzw. Anfangszustand zurückzu setzen. Nachdem er die RESET Anfrage erhalten hat, verändert der Client 900 den Baum 955-1 dementsprechend.
  • 2D zeigt bei T4 ein Beispiel des anfänglichen Zustands des Baums 955-1. Der Wurzelknoten R1 hat den Status zusammengefallen (+) und keiner seiner Kindknoten ist visualisiert bzw. sichtbar gemacht. Ein alternativer Anfangszustand des Baums 955-1 ist: Wurzelknoten R1 expandiert (–); Kindknoten: FL1, FL2 zusammengefallen (+). Ein weiterer alternativer Anfangszustand ist: alle Knoten expandiert (+). In der folgenden Beschreibung sind bzw. werden Ausbildungen der Erfindung geoffenbart, um ein GUI Verhalten, wie dies unter 2A bis 2D beschrieben ist, mit niedrigen Netzwerkbandbreiten-Erfordernissen und reduziertem Schirmflimmern für den Benutzer zu implementieren, wenn sich das Aussehen von GUI 955 bei, vor oder nach den Zeitpunkten T1 bis T4 verändert.
  • 3 illustriert eine Wechselwirkung des Client 900 mit dem Server 901, wenn sie entsprechend einer Ausbildung der vorliegenden Erfindung betätigt werden. Wie dies in 1 beschrieben ist, kommuniziert der Client 900 mit dem Server 901 über das Netzwerk 990.
  • Der Server 901 beinhaltet eine Anwendungskomponente, welche einen Server-Controller 101-1 und einen Server-Renderer 101-2 aufweist. In dem Beispiel beinhaltet eine Instanz der Anwendungskomponente weiterhin ein ursprüngliches bzw. Originalmodell 200-T1. Beispielsweise sind der Server-Controller 101-1 und der Server-Renderer 101-2 Teile bzw. Abschnitte des CPP 101 (siehe 1), welches in dem Speicher 921 des Servers 901 gespeichert ist. Der Server-Controller 101-1 empfängt 410 eine Modifikationsanfrage des Client 900. Nach einem Empfangen der Modifikationsanfrage modifiziert 10 der Server-Controller 101-1 das Originalmodell 200-T1 in ein modifiziertes Modell 200-T2. In dem Fall von mehrfachen Anwendungskomponenten lassen entsprechende Server-Controller die Anwendungskomponenten einander beeinflussen. Mit anderen Worten kann beispielsweise der Server-Controller 101-1 ein Ereignis bewirken, das einen weiteren Server-Controller ein weiteres Modell modifizieren läßt.
  • Das Originalmodell 200-T1 und modifizierte Modell 200-T2 der Anwendungskomponente sind bzw. werden durch dasselbe Kreissymbol illustriert. Indem neuerlich auf das Beispiel von 2A Bezug genommen wird, wird das Originalmodell 200-T1 als Baum 955-1 bei T1 sichtbar gemacht. Die Modifikationsanfrage entspricht der Benutzerwechselwirkung, um den Knoten SL2 des zweiten Niveaus zu expandieren. Das modifizierte Modell 200-T2 wird als Baum 955-1 bei T2 sichtbar gemacht.
  • Eine Ausbildung der Erfindung verwendet ein objektorientiertes Komponenten-Architekturnetzwerk (auch als Netzwerk nachfolgend bezeichnet) mit Vererbung. Das Netzwerk hat einen serverseitigen Abschnitt und einen clientseitigen Abschnitt. Das Netzwerk kann als ein Funktionspool implementiert werden, wie ein Satz von Verfahren bzw. Methoden von einer oder mehreren Klasse(n). Beispielsweise implementieren Komponenten standardmäßige, graphische Benutzer-Interface-Elemente, wie Knöpfe (beispielsweise RESET 955-2), Bäume (beispielsweise Baum 955-1), Tabellen, Tabellenstreifen oder irgendein anderes Interface-Element in einem graphischen Benutzer-Interface, wie GUI 955. Weiterhin kann eine Komponente Eigenschaften besitzen und Dienste an bieten, wie eine Ausbildung bzw. Erzeugung eines graphischen Benutzer-Interface von einem graphischen Benutzer-Interface-Beschreibungsfile, Drag- und Drop-Wechselwirkungshandhabung und Komponenten-Administration. Das Netzwerk unterstützt eine Komponenten-Ausbildung und -Löschung zur Laufzeit, ebenso wie einen Zugriff zu allen Eigenschaften einer Komponente zur Laufzeit. Zusätzlich kann das Netzwerk allgemeine Dienste zur Verfügung stellen, wie einen Übertragungsereignismechanismus, eine Modifikation des graphischen Benutzer-Interface und einen Serverzugriff ohne Seitenersatz.
  • Eine Komponente kann ohne ein spezielles Registrierungsverfahren ähnlich zu Verfahren bzw. Prozeduren installiert werden, die durch Servlet-Maschinen verwendet werden, wie Tomcat. Mit anderen Worten macht ein Installieren einer Komponente automatisch die Komponente für das Framework bzw. Rahmenwerk verfügbar.
  • Beispielsweise ist eine Anwendungskomponente einer Komponente durch eine Komponenten-Klasse definiert, wie eine Java Klasse, eine Java Server Pages Klasse, eine Servlet Klasse, eine Pascal Klasse, eine C Klasse, eine C++ Klasse oder eine Business Server Pages Klasse. Die Komponenten-Klasse läuft auf einem Server 901. Beispielsweise implementiert die Komponenten-Klasse das Modell (beispielsweise Modell 200-T1) ebenso wie den Server-Renderer (beispielsweise Server-Renderer 101-2) und den Server-Controller (beispielsweise Server-Controller 101-1) der Komponente.
  • Um das ursprüngliche Modell 200-T1 zu visualisieren, generiert der Server-Renderer 101-2 einen mit einem Browser kompatiblen Code, wie HTML, XHTML oder WML. Anfänglich generiert der Server-Renderer 101-2 eine Komponenten-Beschreibungseinheit aus dem ursprünglichen Modell 200-T1 und sendet die Komponenten-Beschreibungseinheit zu dem Client 900. Die Komponenten-Beschreibungseinheit entspricht einer mit einem Browser kompatiblen Beschreibung des Baums 955-1 in dem Beispiel von 2A (bei T1). Fachleute wissen, wie die Komponenten-Beschreibungseinheit, beispielsweise auf der Basis einer Java Seite, einer Java Server Seite oder alternativen serverseitigen Beschreibungen des Originalmodells 200-T1 zu generieren ist. Beispielsweise generiert eine Komponenten-Script-Klasse, wie eine JavaScript Klasse, eine JavaApplets Klasse oder eine VisualBasic Script Klasse, eine originale Browser-Komponente 300-T1 basierend auf der entsprechenden Komponenten-Beschreibungseinheit des Originalmodells 200-T1.
  • In einer Ausbildung beinhalten Komponenten Eigenschaften als einen Satz von Namen-Wertpaaren, wobei die Eigenschaften Teil einer entsprechenden Komponenten-Beschreibungseinheit sind. Standardeigenschaften einer Komponente sind: eine Identifikationseinheit bzw. ein Identifier, ein Klassenname, ein Script-Klassen-Name und ein Eltern-Komponenten-Name. Die Identifikationseinheit ist einzigartig auf einer Seite, welche die Komponente beinhaltet. Der Klassenname und der Script-Klassen-Name spezifizieren die Namen der Komponenten-Klasse und der Komponenten-Script-Klasse der Komponente. Der Eltern-Komponenten-Name ist die Identifikationseinheit der Eltern-Komponente der Komponente. Beispielsweise kann der Script-Klassen-Name von dem Klassennamen abgeleitet sein bzw. werden. Die Script-Klasse kann verwendet werden, um eine Browser-Komponente zu erzeugen, welche mit der Anwendungskomponente der Komponente übereinstimmt bzw. dieser entspricht.
  • Wenn eine Seite anfänglich auf dem Server 901 generiert ist, wird die Komponenten-Klasse von jeder Anwendungskomponente der Seite mit den entsprechenden Eigenschaften der Anwendungskomponente genannt bzw. aufgerufen. Die Eigenschaften beinhalten die gesamte Information betreffend die Anwendungskomponente, welche auf dem Server 901 bekannt ist. Die Komponenten-Klasse schreibt eine Komponenten-Beschreibungseinheit der Anwendungskomponente an die Seite, indem beispielsweise eine oder mehrere Funktion(en) des Interface der Komponenten-Klassen benutzt wird bzw. werden. Beispiele dieser Funktionen sind:
    • • prolog(...)
    • • base(...)
    • • epilog(...)
  • In dem Beispiel haben alle die Funktionen einen Satz von Parametern. Beispielsweise ist ein Parameter "Eigenschaften" ein Satz von Namen-Wert-Paaren, welche die Anwendungskomponente beschreiben. Ein weiterer Parameter "Ausgabe" wird verwendet, um Daten in die Seite zu schreiben, wobei die Daten zu dem Client in einem ausgegebenen bzw. Ausgabestrom übersandt werden. Ein Schreiben von Daten auf eine Seite, welche zu dem Client in einem Ausgabestrom gesandt wird, wird auch als ein Schreiben oder Rendern von Daten zu dem Ausgabestrom bezeichnet werden.
  • Die Funktion prolog(...) schreibt einen Komponenten-Beschreibungseinheits-Kopf bzw. -Header zu dem Ausgabestrom. Der Komponenten-Beschreibungseinheits-Header ist eine mit einem Browser kompatible Beschreibung von Namen-Wert-Paaren, welche die Anwendungskomponente beschreiben.
  • Die Funktion base(...) rendert einen Basisinhalt bzw. -content der Komponente zu dem Ausgabestrom. Der Basisinhalt wird als der ursprüngliche bzw. Anfangsinhalt einer Komponente definiert, welche dem Benutzer präsentiert wird. Das Netzwerk ist fähig, die Basisinhalte von mehreren Komponenten innerhalb einer Seite zu kombinieren. Dies resultiert in einer Beschreibung eines GUI 955. Beispielsweise beinhaltet der Basisinhalt einer Komponente weitere Namen-Wert-Paare, wie ein Inhaltsnamen-Wert-Paar, welche eine mit einem Browser kompatible Beschreibung des anfänglichen Inhalts der Komponente oder ein Bezug auf den anfänglichen Inhalt sind, welcher dem Benutzer präsentiert wird. Ein Typ- bzw. Artbeschreibungs-Namen-Wert-Paar kann einen Referenz- bzw. Bezugstyp für den Anfangsinhalt beschreiben. Beispielsweise enthält, wenn das Typ- bzw. Artspezifikations-Namen-Wert-Paar "HTML" beinhaltet, dann das entsprechende Inhaltsnamen-Wert-Paar den Anfangsinhalt als einen HTML String. Beispiele von anderen Referenzarten sind "DOM", "WML" und "link" (Link bzw. Verbindung zu einer anderen Seite).
  • In dem Fall, daß das Typspezifikations-Namen-Wert-Paar die Bezugsart "DOM" beinhaltet, beinhaltet das Inhaltsnamen-Wert-Paar eine einzigartige Identifikationseinheit eines entsprechenden DOM Knotens der Seite. Beispielsweise kann zur Seitenbildungszeit bzw. -generierungszeit der Server 901 einen HTML Code in der Seite generieren, wo der HTML Code ein ID Attribut aufweist, welches die einzigartige Identifikation des DOM Knotens als den Wert des ID Attributs beinhaltet. Dasselbe gilt für andere Referenzarten.
  • Die Funktion epilog(...) beschreibt ein clientseitiges Script in den Ausgabestrom, um die Komponente in dem Framework zu registrieren.
  • Einige Funktionen zum Schreiben der Komponenten-Beschreibungseinheit in den Ausgabestrom können durch eine Super-Klasse der Komponenten-Klasse gehandhabt werden. Mit anderen Worten kann eine Super-Klasse Eigenschaften, welche dieselben für eine Mehrzahl von Komponenten sind (beispielsweise eine Klasseneigenschaft), in den Ausgabestrom schreiben. Die Komponenten-Klasse, welche eine Unter- bzw. Subklasse der Super-Klasse ist, kann Eigenschaften einer spezifischen Komponente zu dem entsprechenden Ausgabestrom hinzufügen.
  • Der folgende Codierblock ist ein vereinfachtes HTML-Code-Beispiel einer Komponenten-Beschreibungseinheit einer Baumkomponente:
    Figure 00240001
    Figure 00250001
  • Der Tabellen-Abschnitt des Codierblocks beinhaltet den Komponenten-Beschreibungseinheits-Header (beispielsweise Identifikationseinheit, Parent bzw. Eltern, Klasse (class), PositionX, PositionY, Breite (Width), Höhe (Height)), die beispielsweise durch die Funktion prolog() generiert wurden, und beinhaltet weiterhin den Komponenten-Basisinhalt (beispielsweise Inhaltsart (contentType), Inhalt (content)), die beispielsweise durch Funktion base() generiert wurden. Indem neuerlich auf das Beispiel von 2A Bezug genommen wird, entspricht die Komponenten-Beschreibungseinheit einer Beschreibung des Baums 955-1 bei T1.
  • Der JavaScript Abschnitt des Codierblocks kann durch die Funktion epilog() generiert bzw. erzeugt werden.
  • Wenn der Client-Controller 101-1 das Originalmodell 200-T1 in das modifizierte Modell 200-T2 modifiziert 10, generiert 420 der Server-Renderer 101-2 wenigstens ein Browser-Inkrement 300-I in einem mit einem Browser kompatiblen Format. In Abhängigkeit von der Modifikation 10 kann mehr als ein Browser-Inkrement durch den Server-Renderer 101-2 generiert werden. In dem Beispiel entspricht das Browser-Inkrement 300-I dem Unterschied zwischen dem Originalmodell 200-T1 und dem modifizierten Modell 200-T2. Indem neuerlich auf das Beispiel von 2B Bezug genommen wird, entspricht das Browser-Inkrement 300-I dem Knoten TL1 dritten Niveaus. Der Server 901 sendet dann 430 wenigstens das Browser-Inkrement 300-I zu dem Client 900.
  • Beispielsweise hat das Interface der Komponenten-Klasse eine weitere Funktion increment(...). Die Funktion increment(...) kann Parameter "Eigenschaften" ("properties") und "Ausgabe" ("output") aufweisen, welche dieselben wie für die zuvor beschriebenen Funktionen des Interface sein können. Es kann einen weiteren Parameter "Parameter" ("parameters") aufweisen, welcher ein weiterer Satz von Namen-Wert-Paaren ähnlich zu dem Parameter "Eigenschaften" ist. Die Funktion increment() kann aufgerufen werden, wenn eine Benutzer-Wechselwirkung (beispielsweise wenn der Benutzer anzeigt, den Knoten SL2 zweiten Niveaus zu expandieren), welche das Modell der Anwendungskomponente beeinflußt (beispielsweise Originalmodell 200-T1), eine Änderung in wenigstens einem Teil der entsprechenden Browser-Komponente für seine Visualisierung erfordert. Die Funktion increment() hat die Aufgabe, ein entsprechendes Browser-Inkrement (beispielsweise Browser-Inkrement 200-T1) zu generieren 420 und es in den Ausgabestrom zu schreiben. Die Namen-Wert-Paare, die mit dem Parameter "Parameter" zur Verfügung gestellt sind bzw. werden, spezifizieren das exakte Format des Browser-Inkrements, das zu generieren ist.
  • Indem neuerlich auf das Beispiel von 2B Bezug genommen wird, kann ein HTML Beispiel eines Browser-Inkrements 300-I das folgende Statement beinhalten:
    <div id= '/R1/FL1/SL2/TL1'>node label</div>.
  • Die Identifikationseinheit '/R1/FL1/SL2/TLI' beschreibt den Pfad des Browser-Inkrements, welcher dem Knoten TL1 dritten Niveaus bei T2 entspricht. Die Knotenmarkierung kann ein Icon bzw. Bildzeichen sein (beispielsweise "+" in einem Kreis), welches den Knoten oder einen Text oder irgendeine andere graphische Darstellung visualisiert bzw. sichtbar macht.
  • In einer alternativen Ausbildung kann eine einzige Funktion (beispielsweise Funktion all_in_one (...)) oder irgendeine andere Zahl von Funktionen verwendet werden, um die vorher beschriebenen Aufgaben durchzuführen, welche erforderlich sind, um die entsprechenden Daten in den Ausgabestrom zu schreiben.
  • Um zusammenzufassen, hat in einer Ausbildung der Erfindung die serverseitige Komponenten-Klasse zwei Aufgaben:
    • (a) Auf Anfrage Schreiben einer Komponenten-Beschreibungseinheit zu dem Ausgabestrom, wobei die Komponenten-Beschreibungseinheit alle Komponenten-Eigenschaften auflistet. Weiterhin Generieren des Komponenten-Basisinhalts und Schreiben in den Ausgabestrom. Weiterhin Schreiben des Codes zu dem Ausgabestrom, welcher die Komponente mit dem Rahmenwerk registriert.
    • (b) Auf Anfrage Generieren eines Browser-Inkrements, wie dies durch die Parameter beschrieben ist. Schreiben des Browser-Inkrements in den Ausgabestrom.
  • Der Client 900 beinhaltet eine Browser-Komponente, welche der Anwendungskomponente entspricht und welche einen entsprechenden Client-Assembler 100-1 und einen Client-Controller 100-2 aufweist. Beispielsweise sind der Client-Controller 100-2 und der Client-Assembler 100-1 Teile bzw. Abschnitte des CPP 100 (siehe 1), welches in dem Speicher 920 des Client 900 gespeichert ist. Eine Instanz der Browser-Komponente (beispielsweise ein JavaScript Objekt) wird von der entsprechenden Komponenten-Script-Klasse eingesetzt. Beispielsweise verwendet der clientseitige Abschnitt des Rahmenwerks eine Konstruktionseinrichtung bzw. ein Konstruktionselement, welche(s) einen Anzeiger zu der Komponenten-Beschreibungseinheit empfängt. Die Browser-Komponente extrahiert Eigenschaften und entsprechende Eigenschaftswerte von der Komponenten-Beschreibungseinheit und addiert diese zu der Instanz der Browser-Komponente. Die Instanz der Browser-Komponente beinhaltet die ursprüngliche DOM Komponente 300-T1.
  • Nachdem das ursprüngliche bzw. Originalmodell 200-T1 modifiziert wurde, erhält 520 der Client-Assembler 100-1 das Browser-Inkrement 300-I und aktualisiert 530 die originale bzw. ursprüngliche DOM Komponente 300-T1 (welche dem Originalmodell 200-T1 entspricht) mit wenigstens dem Browser-Inkrement 300-I. Dies resultiert in einer modifizierten DOM Komponente 300-T2, welche dem modifizierten Modell 200-T2 entspricht. Die modifizierte DOM Komponente 300-T2 und die originale DOM Komponente 300-T1 sind durch dieselbe Ellipse illustriert. Beispielsweise sind die modifizierte DOM Komponente 300-T2 und die originale DOM Komponente 300-T1 Instanzen (beispielsweise JavaScript Objekte) der entsprechenden Komponenten-Script-Klasse. In einer Ausbildung der Erfindung läuft die Komponenten-Script-Klasse, welche der Komponenten-Klasse einer Komponente entspricht, auf dem Client 900 und implementiert beispielsweise den Client-Assembler 100-1 und den Client-Controller 100-2. Beispielsweise beinhaltet das Interface des Client-Assemblers 100-1 eine Funktion handleResponse(...).
  • In einer Ausbildung der Erfindung wird die Funktion handleResponse() aufgerufen, wenn der Client-Assembler 100-1 das Browser-Inkrement 300-I von der Funktion increment() der Komponenten-Klasse erhält 520. Beispielsweise leitet das Rahmenwerk den Parameter "Ausgabe" ("output") der Funktion increment() zu einem Parameter "Antwort" ("response") der Funktion handleResponse(). Weiterhin ist ein Parameter "target" ("Ziel") der Funktion handleResponse() ein Wert, welcher zu dem Server 901 in dem Empfangsschritt 410 zugeleitet wird. Wenn die Funktion handleResponse() aufgerufen wird, nachdem sie das Browser-Inkrement 300-I erhalten hat 520, zeigt der Parameter "target" dem Client den Empfänger (Browser-Komponente) des Browser-Inkrements 300-I an. Der Empfänger kann derselbe wie der originale Anfrager sein, jedoch kann er auch von dem ursprünglichen Anfrager bzw. Fragesteller unterschiedlich sein.
  • Ein erstes Beispiel zum Entnehmen des Browser-Inkrements 300-I von dem Server 901 ist durch Verwendung eines Script Tag. Ein zweites Beispiel ist durch Verwenden eines versteckten bzw. verborgenen HTML iFrame Elements.
  • Um ein Browser-Inkrement unter Verwendung eines Script Tag (beispielsweise JavaScript) zu entnehmen, führt der clientseitige Abschnitt des Rahmenwerks bzw. Frameworks die folgenden Schritte durch.
  • Zuerst wird eine entsprechende URL Anfrage generiert. Beispielsweise entnimmt der clientseitige Abschnitt des Rahmenwerks eine von einem Server generierte grundlegende Anfrage URL von der Seite, die von dem Server empfangen ist, und bringt anfragespezifische Parameter an.
  • Dann wird ein Script Tag (beispielsweise stag) generiert, welches ein SCR Attribut aufweist. Dafür kann man bei spielsweise ein JavaScript Statement verwenden, wie beispielsweise:
    var stag = createNode("script").
  • Dann wird die Anfrage URL dem SRC Attribut des Script Tag zugewiesen (stag.SRC = request bzw. Anfrage URL).
  • Dann wird das Script Tag zu dem DOM der Seite hinzugefügt. Beispielsweise kann dies erzielt werden, indem das JavaScript Statement document. body. appendChild (stag) verwendet wird.
  • Sobald das Script Tag zu dem DOM hinzugefügt ist, sendet der Client die Server-Anfrage an den Server. Der Server generiert ein Script Statement, welches die Antwort auf die Anfrage beinhaltet. Beispielsweise kann der Server einen Anruf zu dem clientseitigen Abschnitt des Rahmenwerks erzeugen, wobei die Ergebnisse der Serveranfrage als ein Parameter zugeleitet werden:
    Framework. handleResponse (result)
  • Die Funktion handleResponse(...) interpretiert das Ergebnis an dem Client und leitet das Ergebnis für jede Komponente zu den entsprechenden Komponenten weiter.
  • Andere Scriptsprachen, wie beispielsweise VBScript, können in gleicher Weise verwendet werden, um eine Browser-Inkrement-Entnahme unter Verwendung von Script Tags zu implementieren.
  • Das zweite Beispiel verwendet iFrames statt Script Tags für eine Browser-Inkrement-Entnahme. In diesem Beispiel beinhaltet die Seite, die von dem Server empfangen bzw. er halten wurde, einen versteckten iFrame bzw. iRahmen, welcher in die Seite durch den serverseitigen Abschnitt des Rahmenwerks generiert wird. Der clientseitige Abschnitt des Netzwerks generiert dann eine entsprechende Anfrage URL, wie dies in dem ersten Beispiel beschrieben ist.
  • Dann wird die Anfrage URL dem SRC Attribut des versteckten iFrame zugewiesen.
  • Sobald die Anfrage URL dem SRC Attribut zugewiesen ist, sendet der Client die entsprechende Anfrage an den Server. Der Server kann ein Script generieren, wie dies in dem ersten Beispiel beschrieben ist, oder er kann eine Beschreibung generieren, welche Tätigkeiten an dem Client erforderlich sind. In dem letzteren Fall interpretiert das clientseitige Rahmenwerk die Beschreibung und arbeitet bzw. agiert entsprechend.
  • Wenn der Client-Assembler 100-1 feststellt, daß eine Aktualisierung der Browser-Komponente (beispielsweise durch Benutzer-Wechselwirkung) angefragt ist, generiert der Client-Controller 100-2 die Modifikationsanfrage, welche zu dem Server 901 gesandt wird 510. Weitere Funktionen des Client-Controllers 100-2 sind in 4A, 4B und 5 erklärt.
  • Wenn lediglich ein Browser-Inkrement 300-I statt der gesamten modifizierten Browser-Komponente von dem Server 901 zu dem Client 900 gesandt wird, ist weniger Bandbreite für die Client Server Kommunikation über das Netzwerk 990 erforderlich und es wird weniger CPU Zeit des Servers verbraucht, um das Browser-Inkrement 300-I zu generieren, statt für das Regenerieren der vollständigen Seite.
  • Wenn die originale DOM Komponente 300-T1 mit dem Browser-Inkrement 300-I durch den Client-Assembler 100-1 aktualisiert wird, ist ein Schirmflimmern, welches häufig auftritt, wenn eine vollständige Seite ersetzt wird, reduziert.
  • 4A, 4B illustrieren weitere Details einer clientseitigen Handhabung des Browser-Inkrements 300-I in einer Ausbildung der Erfindung. Vorzugsweise speichert, nachdem das Browser-Inkrement 300-I empfangen wurde 520, der Client-Controller 100-2 das Browser-Inkrement 300-I in einem Cache-Speicher 920-C des Client 900.
  • 4A illustriert die Deaktivierung des Browser-Inkrements 300-I nach einem Empfangen einer Deaktivierungs-Anfrage DAR. Die Deaktivierungs-Anfrage DAR kann durch den Benutzer generiert werden, der mit dem Client 900 wechselwirkt, wie dies in 2A, 2B beschrieben ist, oder sie kann durch einen anderen Computer in dem Computersystem 999 generiert werden. Beispielsweise wird die Deaktivierungs-Anfrage DAR durch den Client-Controller 100-2 empfangen. Dann instruiert 610 der Client-Controller 100-2 den Client-Assembler 100-1, um das Browser-Inkrement 300-I in der modifizierten DOM Komponente 300-T2 zu deaktivieren 550, was in einer deaktivierten DOM Komponente 300-T3 resultiert. Beispielsweise kann das Browser-Inkrement 300-I durch Festlegen bzw. Einstellen eines entsprechenden Deaktivierungsflags deaktiviert werden. In der deaktivierten DOM Komponente 300-T3 wird das Browser-Inkrement 300-I unterdrückt (beispielsweise durch Löschen oder Festlegen eines Deaktivierungsflags; durch ein Auskreuzen illustriert). Die modifizierte DOM Komponente 300-T2 und die deaktivierte DOM Komponente 300-T3 sind durch dieselbe Ellipse illustriert. Indem neuerlich auf das Beispiel von 2B, 2C Bezug genommen wird, entspricht die modifizierte DOM Komponente 300-T2 dem Baum 955-1 bei T2, wobei der Knoten SL2 zweiten Niveaus expandiert ist und der Knoten TL1 dritten Niveaus beinhaltet ist. Die deaktivierte DOM Komponente 300-T3 entspricht dem Baum 955-1 bei T3, wobei der Knoten TL1 dritten Niveaus unterdrückt ist und der Knoten SL2 zweiten Niveaus zusammengefallen ist. Obwohl das Sichtbarmachen des Baums 955-1 bei T1 identisch mit seiner Visualisierung bei T3 ist, ist der Status des Client 900 bei T1 unterschiedlich von dem Status bei T3, da das Client-Inkrement 300-I im Cache 920-C bei T3 verfügbar ist, jedoch nicht bei T1. Dies beeinflußt das Verhalten des Client 900 im Fall einer Reaktivierungs-Anfrage, wie dies unter Bezugnahme auf 4B erklärt ist.
  • Beispielsweise können Browser-Komponenten an dem Client 900 Wechselwirken, ohne den Server 901 zu kontaktieren. Indem neuerlich auf das Beispiel von 2D rückverwiesen wird, hat bei T4 der Benutzer den RESET Knopf 955-2 verwendet, welcher eine Reset Anfrage generiert, um den Baum 955-1 zu dem Wurzelknoten R1 zusammenfallen zu lassen. Entsprechend wirkt am Client 900 eine RESET Browser-Komponente (nicht gezeigt), welche einer RESET Anwendungskomponente (nicht gezeigt) an dem Server 901 entspricht, mit der Browser-Komponente, die den Baum 955-1 sichtbar macht bzw. visualisiert, derart zusammen, daß alle weiteren Browser-Inkremente (nicht gezeigt) der Browser-Komponente in der entsprechenden DOM Komponente (beispielsweise deaktivierte DOM Komponente 300-T3) mit Ausnahme eines Browser-Inkrements deaktiviert werden, welches dem Wurzelknoten R1 entspricht.
  • 4B illustriert die Reaktivierung des Browser-Inkrements 300-I, nachdem der Client-Controller 100-2 die Reaktivierungs-Anfrage RAR erhalten hat. Der Client-Controller 100-2 entnimmt das Browser-Inkrement 300-I von dem Cache-Speicher 920-C und instruiert 620 den Client-Assembler 100-1, das Browser-Inkrement 300-I in der deaktivierten DOM Komponente 300-T3 zu reaktivieren. Die Reaktivierung resultiert in einer reaktivierten DOM Komponente 300-T3'. Indem neuerlich auf das Beispiel von 2A zurückgegriffen wird, wirkt der Benutzer mit dem Client 900 in derselben Weise wie bei T1 zusammen. Jedoch statt einer Anfrage, daß das Browser-Delta 300-I von dem Server 901 an der modifizierten DOM Komponente 300-T2 ankommt, welche der Visualisierung eines Baums 955-1 bei T2 entspricht, entnimmt der Client 900 einfach das Browser-Inkrement 300-I von seinem eigenen Cache 902-C und reaktiviert 570 das Browser-Inkrement 300-I in der deaktivierten DOM Komponente 300-T3. Die resultierende reaktivierte DOM Komponente 300-T3' ist identisch mit der modifizierten DOM Komponente 300-T2.
  • Indem Browser-Inkremente am Client 900 gespeichert werden und eine Wechselwirkung von Browser-Komponenten am Client 900 erlaubt wird, wird die Last des Servers 901 reduziert, weil die Anzahl von Anfragen an den Server reduziert ist bzw. wird, wenn der Client 900 spezifische Ereignisse auf seinem eigenen handhaben kann, ohne den Server 901 zu kontaktieren.
  • 5 illustriert zwei komplementäre Computerprogrammprodukte CPP 101 (Server-Programm), CPP 100 (Client-Programm) und ihre wesentlichen funktionellen Blöcke, welche in einer Ausbildung der vorliegenden Erfindung verwendet werden können. Beispielsweise kann CPP 100 ein Browser sein.
  • Das Rahmenwerk wird in einem serverseitigen Abschnitt 101-10 als ein Teil von CPP 101 und in einem clientseitigen Abschnitt 100-10 als ein Teil von CPP 100 implementiert. Wie dies früher erklärt wurde, stellt das Rahmenwerk generische Funktionen zur Verfügung, welche an mehreren Komponenten angewandt werden können.
  • DOM 100-9 wird verwendet, um das graphische Benutzer-Interface einer Anwendung dem Benutzer zu präsentieren. In dem Beispiel repräsentiert DOM 100-9 eine Seite, beinhaltend eine Baum-Komponente 955-1 (siehe 2A) und eine Reset-Komponente 955-2 (siehe 2A). Wenn der Benutzer mit CPP 100 wechselwirkt (beispielsweise durch Anzeigen, daß ein spezifischer Baumknoten expandiert werden soll), so daß das Modell 200-Tn (n = 1, 2,..., N) am Server 901 betroffen sein wird, wird der entsprechende Client-Controller 100-2 von der Benutzer-Wechselwirkung verständigt 701 und sendet 702 eine entsprechende Anfrage an CPP 101, welches auf dem Server 901 läuft. Beispielsweise kann der Client-Controller 100-2 spezifische Browser-Ereignisse abonnieren und wird verständigt, wenn ein entsprechendes Browser-Ereignis durch die Benutzer-Wechselwirkung aufgeworfen wird.
  • In dem Fall, daß die Benutzer-Wechselwirkung durch den Client-Controller 100-2 ohne Kontaktieren des Servers 901 gehandhabt werden kann, kann der Client-Controller 100-2 entsprechend den Client-Assembler 100-1 instruieren 702', um DOM 100-9 der Seite zu aktualisieren 803, welche gegenwärtig durch den Browser visualisiert ist, um die Visualisierung von DOM 100-9 gemäß der Benutzer-Wechselwirkung einzustellen.
  • In dem Fall, daß die Benutzer-Wechselwirkung erfordert, daß der Server 901 involviert ist, sendet 702 CPP 100 eine entsprechende Anfrage an CPP 101. Die Anfrage veranlaßt den Server-Controller 101-1, das entsprechende Modell 200-Tn entsprechend zu modifizieren 703. Der Server-Renderer 101-2 rendert/generiert 801 das Modell 200-Tn, nachdem es modifiziert wurde 703. Das Ergebnis des Renderns 801 ist eine Beschreibung des Modells, welches für seine Sichtbarmachung verwendet werden kann. Diese Beschreibung wird dann zu dem Client 900 übersandt.
  • In einer Ausbildung der Erfindung wird die Beschreibung von dem Server-Renderer 101-2 zu dem Client-Assembler 100-1 gesandt 802. Der Client-Assembler verwendet die Beschreibung, um DOM 100-9 entsprechend durch ein Ändern eines entsprechenden Knotens von DOM 100-9 zu aktualisieren 803.
  • In einer weiteren Ausbildung der Erfindung kann die Beschreibung von dem Server-Controller 101-1 zu dem Client-Controller 100-2 gesandt werden 702, welcher dann den Client-Assembler 100-1 instruiert 702', DOM 100-9 entsprechend zu aktualisieren 803.
  • In noch einer weiteren Ausbildung der Erfindung wird die Beschreibung von dem serverseitigen Rahmenwerk 101-10 zu dem clientseitigen Netzwerk 100-10 gesandt, wo sie an den entsprechenden Client-Controller 100-2 geliefert wird.
  • 6 faßt serverseitige Aspekte der Erfindung durch ein vereinfachtes Flußdiagramm eines serverseitigen Verfahrens 400 zusammen, welches durch eine Ausbildung der Erfindung durchgeführt werden kann. Beispielsweise kann das Verfahren 400 zum Handhaben von inkrementellen Daten auf dem Server 901 im Computersystem 999 durch das Computerprogrammprodukt 101 durchgeführt werden, das Instruktionen aufweist, daß, wenn es in den Speicher 921 des Servers 901 geladen wird, es wenigstens einen Prozessor 911 des Servers 901 verlaßt, das Verfahren 400 durchzuführen. Das Verfahren 400 beinhaltet die Schritte Empfangen 410, Generieren 420 und Senden 430.
  • In dem Empfangsschritt 410 empfängt der Server-Controller 101-1 eine Modifikations-Anfrage von dem Client-Controller 100-2. Der Client-Controller 100-2 läuft auf dem Client 900 des Computersystems 999. Die Modifikations-Anfrage läßt den Server 901 das ursprüngliche bzw. Originalmodell 200-T1 in das modifizierte Modell 200-T1 modifizieren, welche beide beispielsweise in dem Speicher 921 des Servers 901 gespeichert sind bzw. werden.
  • In dem Generierungs- bzw. Ausbildungsschritt 420 generiert der Server-Renderer 101-2 wenigstens ein Browser-Inkrement 300-I, welches dem Unterschied zwischen dem Originalmodell 200-T1 und dem modifizierten Modell 200-T2 entspricht.
  • In dem Sendeschritt 430 sendet der Server 901 das wenigstens eine Browser-Inkrement 300-I zu dem Client-Assembler 100-1 des Client 900. Der Client 900 verwendet das Browser-Inkrement 300-I, um die ursprüngliche DOM Komponente 300-T1 mit dem wenigstens einen Browser-Inkrement 300-I zu aktualisieren. Die Aktualisierung resultiert in der modifizierten DOM Komponente 300-T2, welche dem modifizierten Modell 200-T1 entspricht, während die ursprüngliche DOM Komponente 300-T1 dem ursprünglichen bzw. Originalmodell 200-T1 entspricht.
  • 7A faßt clientseitige Aspekte der Erfindung durch ein vereinfachtes Flußdiagramm eines clientseitigen Verfahrens 500 zusammen, welches durch eine Ausbildung der Erfindung durchgeführt werden kann. Beispielsweise kann das Verfahren 500 zum Handhaben von inkrementellen Daten auf dem Client 900 in dem Computersystem 999 durch das Computerprogrammprodukt 100 durchgeführt werden, welches Instruktionen besitzt, daß, wenn es in den Speicher 920 des Client 900 geladen ist, es wenigstens einen Prozessor 910 des Client 900 veranlaßt, das Verfahren 500 auszuführen. Das Verfahren 500 beinhaltet die Schritte Senden 510, Empfangen 520 und Aktualisieren 530.
  • In dem Sendeschritt 510 sendet der Client-Controller 100-2 eine Modifikations-Anfrage zu dem Server-Controller 101-1. Der Server-Controller 101-1 ist bzw. wird auf dem Server 901 des Computersystems 999 implementiert.
  • In dem Empfangsschritt 520 empfängt der Client-Assembler 100-1 wenigstens ein Browser-Inkrement 300-I von dem Server 901 als eine Antwort auf die Modifikations-Anfrage.
  • In dem Aktualisierungsschritt 530 aktualisiert der Client-Assembler 100-1 die ursprüngliche DOM Komponente 300-T1 mit dem wenigstens einen Browser-Inkrement 300-I, was in einer modifizierten DOM Komponente 300-T2 resultiert. Die originale DOM Komponente 300-T1 entspricht dem Originalmodell 200-T1 und die modifizierte DOM Komponente 300-T2 entspricht dem modifizierten Modell 200-T1.
  • 7B setzt das vereinfachte Flußdiagramm von 7A fort. Die Schritte, die durch punktierte Quadrate bzw. Rechtecke dargestellt bzw. illustriert sind, können durch das Verfahren 500 in verschiedenen Ausbildungen der Erfindung durchgeführt werden. Die Schritte erfordern nicht notwendigerweise, daß die Schritte 510 bis 530 vorher durchgeführt werden. Im Fall eines Verwendens eines alternativen Basismechanismus zum Handhaben von inkrementellen Daten können die Schritte, die in 7B illustriert sind, unverändert für eine clientseitige Ereignishandhabung verwendet werden.
  • In einem Deaktivierungsbeispiel beinhaltet das Verfahren 500 die weiteren Schritte eines Speicherns 540 und Deaktivierens 550.
  • In dem Speicherschritt 540 speichert der Client 900 das wenigstens eine Browser-Inkrement 300-I in seinem Cache-Speicher 920-C.
  • In dem Deaktivierungsschritt 550 hat der Client-Controller 100-2 die Deaktivierungs-Anfrage DAR empfangen und als eine Konsequenz deaktiviert der Client-Assembler 100-1 das Browser-Inkrement 300-I in der entsprechenden DOM Komponente.
  • In einem Reaktivierungsbeispiel beinhaltet das Verfahren 500 gemäß der Erfindung die weiteren Schritte eines Entnehmens 560 und Reaktivierens 570. Jedoch erfordert dies nicht, daß der Aktivierungsschritt 550 vorher durchgeführt wird.
  • In dem Entnahmeschritt 560 entnimmt der Client 900 das wenigstens eine Browser-Inkrement 300-I von dem Cache-Speicher 920-C, wo es unter Verwendung des Speicherschritts 540 gespeichert wurde. Beispielsweise kann dies durch die Reaktivierungs-Anfrage RAR initiiert werden, welche durch den Client-Controller 100-2 empfangen ist bzw. wird.
  • Dann reaktiviert in dem Reaktivierungsschritt 570 der Client-Assembler 100-1 das Browser-Inkrement 300-I in der entsprechenden DOM Komponente.

Claims (11)

  1. Rechner- bzw. Computersystem (999) zum Handhaben von inkrementellen Daten, umfassend: einen Server-Controller bzw. eine Server-Steuer- bzw. -Regeleinrichtung (engl.: server-controller) (101-1) zum Empfangen einer Modifikationsanfrage von einem Client (900), um ein ursprüngliches bzw. original Modell (200-T1) einer Anwendungskomponente, welche auf einem Server (901) gespeichert ist, in ein modifiziertes Modell (200-T2) der Anwendungskomponente zu modifizieren; einen Server-Renderer (engl.: server-renderer) (101-2) zum Generieren von wenigstens einem Browser-Inkrement (300-I), welches dem Unterschied bzw. der Differenz zwischen dem original Modell (200-T1) und dem modifizierten Modell (200-T2) entspricht; einen Client-Assembler (engl.: client-assembler) (100-1), welcher das wenigstens eine Browser-Inkrement (300-I) von dem Server (901) erhält bzw. empfängt und an dem Client (900) eine original Dokument-Objektmodellkomponente (300-T1) einer Browser-Komponente mit dem wenigstens einen Browser-Inkrement (300-I) aktualisiert, was in einer modifizierten Dokument-Objektmodellkomponente (300-T2) resultiert, welche dem modifizierten Modell (200-T1) entspricht, wobei die original Dokument-Objektmodellkomponente (300-T1) dem original Modell (200-T1) entspricht; und einen Client-Controller (engl.: client-controller) (100-2) zum Generieren der Modifikationsanfrage, wobei der Client-Controller (engl.: client-controller) (100-2) betätigbar bzw. betreibbar ist, um das wenigstens eine Browser-Inkrement (300-I) in einem Cache-Speicher (920-C) des Client (900) zu speichern und um den Client-Assembler (100-1) zu instruieren, das wenigstens eine Browser-Inkrement (300-I) in dem modifizierten Dokument-Objektmodell zu deaktivieren, was in einer deaktivierten Dokument-Objektmodellkomponente nach Empfangen einer Deaktivierungsanfrage resultiert; wobei der Client-Controller (100-2) betätigbar ist, um das wenigstens eine Browser- Inkrement (300-I) von dem Cache-Speicher (920-C) zu entnehmen bzw. abzurufen und den Client-Assembler (100-1) zu instruieren, das wenigstens eine Browser-Inkrement (300-1) in der deaktivie den Dokument-Objektmodellkomponente deaktivierten Dokuments nach bzw. bei Empfangen einer Reaktivierungsanfrage zu reaktivieren.
  2. Rechnersystem (999) nach Anspruch 1, wobei der Client-Controller (100-2) den Client-Assembler (100-1) instruiert, die original oder modifizierte Dokument-Objektmodellkomponente (300-T1, 300-T2) nach bzw. bei Empfangen einer Rücksetzanfrage zurückzusetzen.
  3. Rechnersystem (999) nach einem der Ansprüche 1 bis 2, wobei das original Modell (200-T1) und das modifizierte Modell (200-T2) durch eine Komponentenklasse definiert sind, die aus der Gruppe von Java Klasse, Java Senner Pages Klasse, Servlet Klasse, Pascal Klasse, C Klasse, C++ Klasse und Business Server Pages Klasse gewählt ist.
  4. Rechnersystem (999) nach einem der Ansprüche 1 bis 3, wobei die Browser-Komponente durch eine Komponentenskript-Klasse (engl.: component script class) definiert ist, die aus der Gruppe von JavaScript Klasse, JavaApplets Klasse und VisualBasic Script Klasse gewählt bzw. selektiert ist.
  5. Rechnersystem (999) nach Anspruch 3, wobei die Komponentenklasse wenigstens einen Abschnitt des Server-Controllers (101-1) und des Server-Renderers (101-2) implementiert.
  6. Rechnersystem (999) nach Anspruch 4, wobei die Komponentenskript-Klasse wenigstens einen Abschnitt des Client-Controllers (100-2) und des Client-Assemblers (100-2) implementiert.
  7. Rechnersystem (999) nach Anspruch 4, wobei die Komponentenskript-Klasse und die Komponentenklasse identische Hierarchien aufweisen.
  8. Client (900) in einem Rechner- bzw. Computersystem (999) zum Handhaben von inkrementellen Daten, umfassend: einen Client-Controller bzw. eine Client-Steuer- bzw. -Regeleinrichtung (engl.: client-controller) (100-2), welcher eine Modifikationsanfrage zu einem Server-Controller bzw. eine Server-Steuer- bzw. -Regeleinrichtung (engl.: servier-controller) (101-1) eines Servers (901) in dem Rechnersystem (999) sendet; und einen Client-Assembler (engl.: client-assembler) (100-1), welcher wenigstens ein Browser-Inkrement (300-1) von dem Server (901) erhält bzw. empfängt und eine original Dokument-Objektmodellkomponente (300-T1), welche einem ursprünglichen bzw. original Modell (200-T1) einer Anwendungskomponente entspricht, mit dem wenigstens einen Browser-Inkrement (300-I) aktualisiert, was in einer modifizierten Dokument-Objektmodellkomponente (300-T2) resultiert, welche einem modifizierten Modell (200-T2) der Anwendungskomponente entspricht, wobei der Server-Controller (101-1) das original Modell (200-T1), das auf dem Server (901) gespeichert ist, in das modifizierte Modell (200-T2) modifiziert; und ein Server-Renderer (engl.: server-renderer) (101-2) des Servers (901) das wenigstens eine Browser-Inkrement (300-I) generiert bzw. erzeugt, welches dem Unterschied zwischen dem originalModell (200-T1) und dem modifizierten Modell (200-T2) entspricht, wobei der Client-Controller (100-2) betätigbar bzw. betreibbar ist, um das wenigstens eine Browser-Inkrement (300-I) in einem Cache-Speicher (920-C) des Client (900) zu speichern und um den Client-Assembler (100-1) zu instruieren, das Browser-Inkrement (300-I) in dem modifizierten Dokument-Objektmodell zu deaktivieren, was in einer deaktivierten Dokument-Objektmodellkomponente nach bzw. bei Empfangen einer Deaktivierungsanfrage resultiert; wobei der Client-Controller (100-2) betätigbar bzw. betreibbar ist, um das wenigstens eine Browser-Inkrement (300-I) von dem Cache-Speicher (920-C) zu entnehmen bzw. abzurufen und den Client-Assembler (100-1) zu instruieren, das wenigstens eine Browser-Inkrement (300-1) in der deaktivierten Dokument-Objektmodellkomponente nach bzw. bei Empfangen einer Reaktivierungsanfrage zu reaktivieren.
  9. Client (900) nach Anspruch 8, wobei der Client-Controller (100-2) den Client-Assembler (100-1) instruiert, die original Dokument-Objektmodellkomponente (300-T1) nach bzw. bei Empfangen einer Rücksetzanfrage zurückzusetzen.
  10. Verfahren (500) zum Handhaben von inkrementellen Daten auf einem Client (900) eines Rechner- bzw. Computersystems (999), umfassend die Schritte: Senden (510) von einem Client-Controller bzw. eine Client-Steuer- bzw. -Regeleinrichtung (engl.: client-controller) (100-2) einer Modifikationsanfrage zu einem Server-Controller bzw. einer Server-Steuer- bzw. -Regeleinrichtung (server-controller) (101-1) eines Servers (901) des Rechnersystems (999); und Empfangen (520) durch einen Client-Assembler (engl.: client-assembler) (100-1) von wenigstens einem Browser-Inkrement (300-I) von dem Server (901) als eine Antwort auf die Modifikationsanfrage; und Aktualisieren (530) einer original Dokument-Objektmodellkomponente (300-T1), welche einem ursprünglichen bzw. original Modell (200-T1) einer Anwendungskomponente entspricht, mit dem wenigstens einen Browser-Inkrement (300-I), was in einer modifizierten Dokument-Objektmodellkomponente (300-T2) resultiert, welche einem modifizierten Modell (200-T2) der Anwendungskomponente entspricht, wobei der Server-Controller (101-1) das originalModell (200-T1), welches auf dem Server (901) gespeichert ist, in das modifizierte Modell (200-T2) modifiziert; und ein Server-Renderer (engl.: server-renderer) (101-2) des Servers (901) das wenigstens eine Browser-Inkrement (300-I) generiert, welches dem Unterschied zwischen dem original Modell (200-T1) und dem modifizierten Modell (200-T2) entspricht, Speichern (540) des wenigstens einen Browser-Inkrements (300-I) in einem Cache-Speicher (920-C) des Client (900); und Deaktivieren (550) des Browser-Inkrements (300-I) in dem modifizierten Dokument-Objektmodell durch den Client-Assembler (100-1) bei Empfang oder nachdem der Client Controller (100-2) eine Deaktivierungsanfrage empfangen hat, was in einer deaktivierten Dokument-Objektmodellkomponente resultiert. Entnehmen bzw. Abfragen (560) des wenigstens einen Browser-Inkrements (300-I) von dem Cache-Speicher (920-C); und Reaktivieren (570) des Browser-Inkrements (300-I) in der deaktivierten Dokument-Objektmodellkomponente durch den Client-Assembler (100-1), bei Empfang bzw. nachdem der Client-Controller (100-2) eine Reaktivierungsanfrage empfangen hat.
  11. Rechner- bzw. Computerprogrammprodukt (100), umfassend Instruktionen, welche, wenn sie in einen Speicher (920) eines Client (900) geladen sind, wenigstens einen Prozessor (910) des Senners (900) veranlassen, die Schritte von Anspruch 10 auszuführen.
DE60224926T 2002-08-02 2002-08-02 Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation. Expired - Lifetime DE60224926T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP02017408A EP1388783B1 (de) 2002-08-02 2002-08-02 Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation.

Publications (2)

Publication Number Publication Date
DE60224926D1 DE60224926D1 (de) 2008-03-20
DE60224926T2 true DE60224926T2 (de) 2009-01-22

Family

ID=30129178

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60224926T Expired - Lifetime DE60224926T2 (de) 2002-08-02 2002-08-02 Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation.

Country Status (9)

Country Link
US (1) US20060200535A1 (de)
EP (1) EP1388783B1 (de)
JP (1) JP4763286B2 (de)
CN (1) CN100380318C (de)
AT (1) ATE385589T1 (de)
AU (1) AU2003266253B2 (de)
CA (1) CA2494659C (de)
DE (1) DE60224926T2 (de)
WO (1) WO2004015566A1 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1406183A3 (de) * 2002-10-01 2004-04-14 Sap Ag Verfahren und System zur Auffrischung von Browserseiten
US7509641B2 (en) 2003-05-16 2009-03-24 Jp Morgan Chase Bank Job processing framework
US7913177B1 (en) 2004-03-08 2011-03-22 Adobe Systems Incorporated System and method for managing instantiation of interface elements in rich internet applications
US7954050B2 (en) * 2004-06-25 2011-05-31 Icesoft Technologies Canada Corp. Systems and methods for rendering and increasing portability of document-based user interface software objects
GB0416857D0 (en) * 2004-07-29 2004-09-01 Ingenico Uk Ltd Electronic financial transactions
US8627344B2 (en) * 2004-12-15 2014-01-07 Siebel Systems, Inc. Methods and apparatuses for user interface management
US20060136810A1 (en) * 2004-12-22 2006-06-22 Sap Aktiengesellschaft Electronic form generator
US7610291B2 (en) * 2005-08-17 2009-10-27 International Business Machines Corporation Logical grouping and management of redundant objects in storage systems
KR20080087891A (ko) * 2006-01-18 2008-10-01 텔레폰악티에볼라겟엘엠에릭슨(펍) 의존성 통지
US8190650B2 (en) * 2006-05-02 2012-05-29 Microsoft Corporation Efficiently filtering using a web site
US20080010359A1 (en) * 2006-07-10 2008-01-10 Jeffrey Mark Achtermann Computer implemented method and system for managing server-based rendering of messages in a heterogeneous environment
US7984375B1 (en) 2006-10-10 2011-07-19 Adobe Systems Incorporated Automated detection and implementation of state and object modifications
US20080155427A1 (en) * 2006-12-21 2008-06-26 Jean-Francois Leblay Mobile business client
US8134553B2 (en) * 2007-09-24 2012-03-13 Microsoft Corporation Rendering three-dimensional objects on a server computer
US20100067113A1 (en) * 2008-09-18 2010-03-18 Matthew John Harrison Apparatus and Method for Displaying Hierarchical Data
US8572226B2 (en) * 2008-12-17 2013-10-29 Sap Ag Enhancing network details using network monitoring scripts
US9311425B2 (en) * 2009-03-31 2016-04-12 Qualcomm Incorporated Rendering a page using a previously stored DOM associated with a different page
US9171097B2 (en) 2009-03-31 2015-10-27 Qualcomm Incorporated Memoizing web-browsing computation with DOM-based isomorphism
US20110173589A1 (en) * 2010-01-13 2011-07-14 Microsoft Corporation Cross-Browser Interactivity Testing
US9077681B2 (en) * 2010-10-05 2015-07-07 Microsoft Technology Licensing, Llc Page loading optimization using page-maintained cache
US8700691B2 (en) 2011-12-05 2014-04-15 Microsoft Corporation Minimal download and simulated page navigation features
US10289743B2 (en) * 2012-01-19 2019-05-14 Microsoft Technology Licensing, Llc Client-side minimal download and simulated page navigation features
US9846605B2 (en) 2012-01-19 2017-12-19 Microsoft Technology Licensing, Llc Server-side minimal download and error failover
CN102830973A (zh) * 2012-08-14 2012-12-19 无锡哲勤科技有限公司 海量数据下Web应用开发双层MVC的方法和分层结构
JP6771855B2 (ja) 2014-06-02 2020-10-21 ヤマハ株式会社 中継装置およびプログラム
US9646103B2 (en) * 2014-07-10 2017-05-09 MyMojo Corporation Client-side template engine and method for constructing a nested DOM module for a website
US10712913B2 (en) * 2014-10-20 2020-07-14 Oracle International Corporation Event-based architecture for expand-collapse operations
US9881070B2 (en) 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages
CN107085530B (zh) * 2017-05-17 2021-03-16 武汉斗鱼网络科技有限公司 刷新应用界面的方法、装置及移动终端
US11023672B1 (en) * 2018-01-29 2021-06-01 Amazon Technologies, Inc. Dynamic service injection
CN110456738B (zh) * 2018-05-07 2021-08-27 华中科技大学 监控系统及其监控方法
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
CN112540816A (zh) * 2020-11-30 2021-03-23 北京飞漫软件技术有限公司 一种远程页面渲染方法、装置、设备及计算机存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870549A (en) * 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
JP3783301B2 (ja) * 1995-10-19 2006-06-07 富士ゼロックス株式会社 構造化データ処理装置
CA2268571C (en) * 1997-02-07 2010-04-06 General Internet, Inc. Collaborative internet data mining system
US20010047394A1 (en) * 1999-09-10 2001-11-29 Kloba David D. System, method, and computer program product for executing scripts on mobile devices
US6718515B1 (en) * 1999-12-07 2004-04-06 International Business Machines Corporation Method of populating a dynamic HTML table from a set of data objects through a common interface
WO2001057718A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated System and process for delivering and rendering scalable web pages
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
JP2002189618A (ja) * 2000-12-21 2002-07-05 Hitachi Information Systems Ltd 差分キャッシュを用いたwwwサーバとwwwブラウザの処理方法、およびそのプログラム
US7047318B1 (en) * 2001-04-20 2006-05-16 Softface, Inc. Method and apparatus for creating and deploying web sites with dynamic content
US6978445B2 (en) * 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US6918090B2 (en) * 2002-01-23 2005-07-12 International Business Machines Corporation Dynamic setting of navigation order in aggregated content
US20030167315A1 (en) * 2002-02-01 2003-09-04 Softwerc Technologies, Inc. Fast creation of custom internet portals using thin clients

Also Published As

Publication number Publication date
WO2004015566A1 (en) 2004-02-19
ATE385589T1 (de) 2008-02-15
JP4763286B2 (ja) 2011-08-31
DE60224926D1 (de) 2008-03-20
CN100380318C (zh) 2008-04-09
JP2005535042A (ja) 2005-11-17
CN1682183A (zh) 2005-10-12
EP1388783A1 (de) 2004-02-11
CA2494659A1 (en) 2004-02-19
AU2003266253B2 (en) 2008-08-07
US20060200535A1 (en) 2006-09-07
CA2494659C (en) 2012-04-17
EP1388783B1 (de) 2008-02-06
AU2003266253A1 (en) 2004-02-25

Similar Documents

Publication Publication Date Title
DE60224926T2 (de) Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation.
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE60008555T2 (de) Verfahren und vorrichtung zur effizienten übertragung von daten einer interaktiven anwendung zwischen klienten und server mit hilfe einer markup-sprache
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE10135445B4 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE69724356T2 (de) Verfahren und Apparat für die Darstellung von Information im Bezug auf jeden einzelnen von mehreren Hyperlinks
DE69728619T2 (de) System, Verfahren, Gerät und Herstellungsgegenstand für identitätsbasiertes Cachen
DE60028561T2 (de) Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen
DE69635648T2 (de) System und Verfahren zur Filterung eines Hochleistungsnetzwerk-Verwaltungsplans
DE60121987T2 (de) Zugreifen auf Daten, die bei einer Zwischenstation gespeichert sind, von einem Dienst aus
DE69734048T2 (de) Erfassung und Betrieb von ferngeladener Software durch einen Applet-modifizierten Browser
DE10042601B4 (de) Sprache für XML-Server-Seiten
DE60125913T2 (de) Datenübertragungsverfahren und vorrichtung
DE69730657T2 (de) Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste
DE60009489T2 (de) Vorrichtung und verfahren zum verwalten der verteilung von inhalten zu einem gerät
DE60115240T2 (de) Automatisierte werkzeugverwaltung in einer umgebung mit mehreren protokollen
DE60011479T2 (de) Xml-roboter
DE60127795T2 (de) System und Verfahren zur Metrik- und Statusdarstellung
DE69727381T2 (de) Verfahren zum transportieren von in einer schnittstellendefinitionssprache definierten datenstrukturen zwischen heterogenen systemen
DE69727933T2 (de) Verfahren und gerät zum beschreiben einer definierten schnittstelle, einer operation und eines datentyps in einer schnittstellendefinitionssprache
DE10052313B4 (de) Verfahren und Vorrichtung zur Beschränkung des freien Verweisens (Hyperlinking) auf Webseiten der ursprünglichen Inhaltserzeuger (Content producers) durch Internet-Inhaltsverteiler (Content distributors)
DE19605093A1 (de) Verfahren und Vorrichtung zur parallelen Client/Server-Kommunikation
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE10358834A1 (de) Verfahren, Einrichtung und Computer-Produkt zum Analysieren von Binärdaten
DE19936314A1 (de) Verfahren und System zur Inhaltskonvertierung von elektronischen Daten unter Verwendung von Konvertierungspräferenzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition