-
Technisches
Gebiet
-
Die
vorliegende Erfindung betrifft allgemein Client-Server-Computernetzwerke und insbesondere ein
System und ein Verfahren zur Bereitstellung von Rückmeldungen
auf eine Benutzereingabe in einem Client-System.
-
Allgemeiner
Stand der Technik
-
Typische
Computernetzwerke enthalten Client-Systeme, die über Kommunikationsstrecken
mit Server-Systemen kommunizieren. Oft formuliert ein Benutzer des
Client-Systems durch
eine auf dem Client-System operierende Benutzeroberfläche Anfragen
und führt
diese dem Server-System
zu. Das Server-System wertet die Anfragen aus und gibt dem Client-System
Antworten zur Anzeige auf der Client-Benutzeroberfläche.
-
In
den letzten zehn Jahren haben vielfältige Computernetzwerke, wie
zum Beispiel lokale Netzwerke (LAN), großflächige Netzwerke (WAN), Intranets
und das Internet Fernanwendungsverarbeitung verwendet. Bei einem
Fernanwendungs-Prozesssystem findet die gesamte Anwendungsprogrammausführung auf
dem Server-System statt, und nur die Steuerinformationen für die Client-Benutzeroberfläche, Tastenbetätigungen
und Mausbewegungen überqueren
das Netzwerk. Folglich sind weniger Betriebsmittel der Client-Systeme
notwendig, um Anwendungen auszuführen.
-
Eine
Unzulänglichkeit
der Fernanwendungsverarbeitung besteht jedoch darin, dass es in
dem Client-System zu einer unannehmbaren Laufzeitverzögerung (d.h.
Latenz) vom Senden einer Eingabe zu dem Server-System durch das
Client-System, bis das Client-System eine Antwort empfängt, kommen kann.
Solche Verzögerungen
können
sich in Ferndatenverarbeitungsumgebungen, wie zum Beispiel denen
im Internet angetroffenen, WAN oder Satellitenstrecken oder bei
Mehrbenutzer-Server-Systemen manifestieren. Im Bezug auf Ferndatenverarbeitungsumgebungen
produziert die geographische Trennung des Client-Systems von dem
Server-System die Verzögerung.
Dies kann zum Beispiel besonders für einen Benutzer problematisch
sein, der auf dem Client-System tippt. Die Zeit, die es dauert,
bis sich die Client-Eingabe zu dem Server-System ausbreitet und bis die Server-Antwort
zu dem Client-System zurückkehrt,
verursacht eine augenfällige
Verzögerung,
die den Benutzer beunruhigen und Tippfehler einführen kann. Bei Mehrbenutzer-Server-Systemen
kann die Laufzeitverzögerung
mehr von der Fähigkeit
eines stark ausgelasteten Server-Systems abhängen, das gleichzeitig Benutzeroberflächendaten
von mehreren aktiven Clients verarbeitet, um auf von einem bestimmten
Client-System empfangene Eingaben zu reagieren.
-
Folglich
werden die Vorteile der derzeitigen Ferndatenverarbeitungs- und
Mehrbenutzertechnologien bei Implementierungen, bei denen die Laufzeit-Ansprechzeit
größer als
die akzeptable Benutzeroberflächenansprechzeit
ist, gemindert. Somit werden ein System und ein Verfahren benötigt, die die
von dem Benutzer eines Client-Systems
in Ferndatenverarbeitungs- und Mehrbenutzer-Computersystemnetzwerken wahrgenommen
wird, minimieren.
-
Die
Europäische
Patentanmeldung Nr. 836145 beschreibt ein System zum effizienten
Abrufen von Webseiten, bei dem ein sich in einem Server befindliches
Fern-Proxy eine Kopie einer Webseite zu einem Client sendet, während es überprüft, ob es eine
neuere Version der angeforderten Webseite gibt. Wenn dies der Fall
ist, bestimmt der Server bzw. das Proxy die Unterschiede zwi schen
der aktuellen Version der angeforderten Webseite und der gesendeten
Version der angeforderten Webseite und sendet nur diese Unterschiede
zu dem Client.
-
Kurzfassung
-
Die
Erfindung beschreibt ein Verfahren und eine Vorrichtung zum Reduzieren
der wahrgenommenen visuellen Antwort auf eine Benutzereingabe an
einem Client-Knoten,
der ein Anwendungsprogramm auf einem Server-Knoten fernausführt, wobei die Ausführung des
Anwendungsprogramms auf dem Server-Knoten stattfindet. Der Client-Knoten sendet
die Benutzereingabe zu dem Server-Knoten, und die Benutzereingabe ruft
eine Antwort von dem Server-Knoten hervor, die zur Anzeige zu dem
Client-Knoten zurückgesendet
wird.
-
Gemäß der Erfindung
wird ein Verfahren, ein Client-Knoten
und ein Computernetzwerk zum Reduzieren der wahrgenommenen Ansprechzeit
auf vom Benutzer gegebene Eingaben gemäß den angefügten Ansprüchen bereitgestellt.
-
Kurze Beschreibung
der Zeichnungen
-
Die
Erfindung wird in den angefügten
Ansprüchen
im Einzelnen definiert. Die obigen und weitere Vorteile der Erfindung
werden durch Bezugnahme auf die folgende Beschreibung in Verbindung
mit den beigefügten
Zeichnungen besser verständlich. Es
zeigen:
-
1 ein
Diagramm einer Ausführungsform eines
Client-Systems in
Kommunikation mit einem Server-Knoten über ein Netzwerk;
-
2 ein
Blockschaltbild eines Client-Servers, wobei die Kommunikationswege
zwischen Client und Server bei der Durchführung der Verfahren der vorliegenden
Erfindung gezeigt sind;
-
3 ein
beispielhaftes Flussdiagramm eines beispielhaften Prozesses, durch
den der Client-Knoten eine Antwort auf Tastatureingaben erzeugt;
und
-
4 ein
beispielhaftes Flussdiagramm eines beispielhaften Prozesses, durch
den der Client-Knoten eine Antwort auf Benutzereingaben erzeugt,
die durch das Zeigegerät
bereitgestellt werden.
-
Beschreibung
der Erfindung
-
1 zeigt
ein erstes Datenverarbeitungssystem (Client-Knoten) 10 in
Kommunikation mit einem zweiten Datenverarbeitungssystem (Server-Knoten) 14 über ein
Kommunikationsnetzwerk 18 zur Fernausführung eines Anwendungsprogramms auf
dem Server-Knoten 14 gemäß den Prinzipien der Erfindung.
Das Netzwerk 18, über
das der Client- und der Server-Knoten 10, 14 kommunizieren,
kann ein lokales Netzwerk (LAN) oder ein großflächiges Netzwerk (WAN) wie etwa
das Internet sein.
-
Der
Client- und der Server-Knoten 10, 14 können sich
durch vielfältige
Verbindungen mit dem Netzwerk 18 verbinden, darunter Standard-Telefonleitungen,
LAN- oder WAN-Strecken (z.B. T1, T3, 56 kB, X.25), Breitbandverbindungen
(ISDN, Frame Relay, ATM) und drahtlose Verbindungen. Verbindungen
können
unter Verwendung vielfältiger
Kommunikationsprotokolle hergestellt werden (z.B. TCP/IP, IPX, SPX,
NetBIOS, Ethernet, RS232 und direkte asynchrone Verbindungen). Außerdem können andere
(nicht gezeigte) Client-Knoten und Server-Knoten mit dem Netzwerk 18 verbunden
sein.
-
Bei
einer Ausführungsform
kommuniziert der Client-Knoten 10 unter
Verwendung eines Protokolls der unabhängigen Datenverarbeitungsarchitektur (ICA – Independant
Computing Architecture), das von Citrix Systems, Inc. in Ft. Lauderdale,
Florida, entwickelt wurde, mit dem Server-Knoten 14. ICA
ist ein Vielzweck-Präsentationsdiensteprotokoll,
das die Eingabe/Ausgabe zwischen dem Client-Knoten 10 und
dem Server-Knoten 14 steuert. Der Entwurf von ICA gilt
für die
Präsentationsdienste
zum Ablauf über Industriestandard-Netzwerk-Protokolle, wie zum
Beispiel TCP/IP, IPX/SPX oder Net-BEUI unter Verwendung von Industriestandard-Transportprotokollen, darunter,
aber ohne Einschränkung,
ISDN, Frame Relay und der asynchrone Transfermodus (ATM).
-
Mit
dem ICA-Protokoll verbleibt die gesamte Anwendungsausführung auf
dem Server-Knoten 14 und es werden nur Benutzeroberflächeninformationen
wie etwa Fensteranwendungs-Schirmpräsentation, Vollbildschirm-Textpräsentation
und Tastatur- und Zeigegerät-Aktualisierungen
zu dem Client-Knoten 10 gesendet. Die Technik der Erfindung
operiert als ein Merkmal, das Standard-ICA-Tastatur-Verarbeitung beschleunigt.
Wenn ein bestimmtes Anwendungsprogramm oder ein Eingabesteuerelement
die Technik nicht unterstützen
kann, wird die Standard-ICA-Tastaturverarbeitung
benutzt. Andere Ausführungsformen
können
andere Fernsteuerprotokolle verwenden, wie zum Beispiel Microsoft
RDP (Remote Desktop Protocol), um die Prinzipien der Erfindung auszuüben.
-
Der
Client-Knoten 10 kann ein beliebiger Personal Computer
(z.B. 286, 386, 486, Pentium, Pentium II, Macintosh-Computer), eine
Thin-Client-Einrichtung, ein Terminal auf der Basis von Windows
und nicht von Windows, ein Netzwerkcomputer, eine drahtlose Einrichtung,
eine Informationsanwendung, ein RISC-Power-PC, eine X-Einrichtung, eine Workstation,
ein Minicomputer, ein Zentralrechner oder eine beliebige prozessorgestützte Einrichtung mit
der Fähigkeit
zum Anzeigen von Anwendungsdaten und zum Betrieb gemäß einem
Protokoll, das Eingangsdaten zu einem fern auf dem Server-Knoten 14 ausgeführten Anwendungsprogramm
operiert, sein.
-
Die
an dem Client-Knoten 10 angezeigte Benutzeroberfläche kann
textgesteuert sein (z.B. das von der Microsoft Corporation in Redmond,
Washington, hergestellte Betriebssystem DOS) oder kann graphisch
gesteuert sein (z.B. das von der Microsoft Corporation in Redmond,
Washington, hergestellte Betriebssystem WINDOWS). Das Betriebssystem des
Client-Knoten 10 kann eine von vielfältigen Plattformen sein, darunter,
aber ohne Einschränkung, WINDOWS
3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51, WINDOWS NT 4.0, Macintosh,
Java und Unix, DOS, Linux und WINDOWS CE für auf Windows basierende Terminals.
Der Client-Knoten 10 enthält einen Anzeigeschirm 22,
eine Tastatur 24, ein Zeigegerät (z.B. eine Maus, ein Trackball,
ein Touchpad, einen Berührungsschirm
usw.) 28, einen (nicht gezeigten) Prozessor und (nicht
gezeigte) persistente Speicherung.
-
Der
Server-Knoten 14 kann eine beliebige Datenverarbeitungseinrichtung
sein, die den Zugang zu anderen Teilen des Netzwerks (z.B. Workstation, Druckern
usw.) kontrolliert und als Reaktion auf von dem Client-Knoten 10 empfangene
Eingaben Anwendungen ausführt.
Wie der Client-Knoten 10 kann der Server-Knoten 14 vielfältige Betriebssystemplattformen
unterstützen,
darunter zum Beispiel WINDOWS 3.x, WINDOWS 95, WINDOWS 98,
WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE für auf Windows basierende Terminals,
Macintosh, Java und Unix. Der Server-Knoten 14 kann eine Gruppe
von Serversystemen umfassen, die logisch als ein einziges Serversystem
wirken, was als Server-Farm bezeichnet wird. Bei einer Ausführungsform
ist der Server-Knoten 14 ein Mehrbenutzer-Server-System,
das mehrere gleichzeitig aktive Client-Knoten unterstützt.
-
Der
Server-Knoten 14 ist Host für eines oder mehrere Anwendungsprogramme,
auf die der Client-Knoten 10 zugreifen kann. Beispiele
für solche Anwendungen
wären Browser-Software,
z.B. MICROSOFT INTERNET EXPLORERTM; Textverarbeitungsprogramme
wie etwa MICROSOFT WORD® und MICROSOFT NOTEPAD®,
Datenbankprogramme wie etwa MICROSOFT ACCESS® und
Tabellenkalkulationsprogramme wie etwa MICROSOFT EXCEL®, die
alle von der Microsoft Corporation in Redmond, Washington, hergestellt
werden.
-
Solche
Anwendungsprogramme rufen Routinen der Anwendungsprogrammschnittstelle
(API) auf, um die Leistung des auf dem Server-Knoten 14 ablaufenden
Betriebssystems zu lenken. Serverseitige Unterstützung kann die von der Microsoft
Corporation in Redmond, Washington, entwickelte Active Accessibility
API benutzen oder äquivalente
proprietäre
API, die das Extrahieren von Informationen über den Inhalt eines Fensters
aus der Anwendung, die die Kontrolle über dieses Fenster hat, ermöglichen. Zum
Beispiel modelliert Active Accessibility API Benutzeroberflächenelemente
als Objekte des Componant Object Model (COM). Ein Client kann die
Eigenschaften eines Objekts unter Verwendung bereitgestellter Informationen,
wie etwa laccessible::accLocation und IAccessible::get_accName,
untersuchen. Die obigen Beispiele sollen veranschaulichen, aber nicht
erschöpfen.
-
Als
kurze Übersicht
kommuniziert der Client-Knoten 10 mit dem Server-Knoten 14,
um ein Anwendungsprogramm auf dem Server-Knoten 14 aus der
Ferne auszuführen.
An den Client-Knoten 10 gegebene Benutzereingaben dienen
als Eingabe für das
Anwendungsprogramm. Die gesamte Ausführung des Anwendungsprogramms
geschieht auf dem Server-Knoten 14 gemäß diesen
zu dem Server-Knoten 14 aus dem Client-Knoten 10 weitergeleiteten
Benutzereingaben. Beispiele für
Benutzereingaben, die typischerweise von einem Benutzer des Client-Knotens 10 eingegeben
werden, wären
Zeichen, die durch Verwendung der Tastatur 24 eingegeben
werden, oder unter Verwendung des Zeigegeräts 28 angegebene Cursorbewegungen.
-
Als
Reaktion auf die Benutzereingaben produziert der Server-Knoten 14 eine
Server-Antwort, die Inhalt und Aussehen der Schirmanzeige des Client-Knotens 10 steuert,
wenn sie danach zu dem Client-Knoten 10 gesendet und dort
empfangen werden. Die Art der Serverantwort richtet sich nach dem Typ
der empfangenen Benutzereingaben und dem Anwendungsprogramm, das
die Benutzereingaben verarbeitet. Wenn das Anwendungsprogramm zum Beispiel
ein Textverarbeitungsprogramm ist und das Eingangsereignis eine
Tastatureingabe des Zeichens „T" ist, produziert
die Antwort von dem Server-Knoten 14 an den Client-Knoten 10 das
Zeichen „T", wenn sie auf dem
Client-Knoten 10 angezeigt wird. Die Antwort kann Informationen
umfassen, die die Anzeige des Zeichens „T" auf dem Bildschirm des Client-Knotens 10 definieren,
darunter Informationen über
die aktuelle Eingabeposition und Fontinformationen. Wenn die Benutzereingabe
stattdessen zum Beispiel eine Betätigung eines Zeigegeräts (z.B.
eine Cursorbewegung) ist, die ein Toolbar-Symbol auswählt, kann die Serverantwort ähnlich ein
Dropdown-Menu, das mit diesem Symbol assoziiert ist, auf dem Schirm 22 des
Client-Knotens 10 anzeigen.
-
Wie
lange es dauert, bis die Benutzereingabe das Netzwerk 18 zu
dem Server-Knoten 14 überquert
und bis die Server-Antwort zu dem Client-Knoten 10 zurückkehrt,
ist die Latenz der Verbindung zwischen den Knoten 10, 14.
Wenn der Client-Knoten 10 und der Server-Knoten 14 über eine
Verbindung mit großer
Latenz kommunizieren, kann der Benutzer vom Zeitpunkt des Eingebens
der Eingabe bis zu Empfangen einer Server-Antwort eine augenfällige Verzögerung erfahren.
Solche Verbindungen mit großer
Latenz sind in einer WAN- oder Internet-Umgebung häufig anzutreffen
und können
in Mehrbenutzer-Computersystemen auftreten, die stark mit dem Antworten
auf Anfragen von mehreren aktiven Clients ausgelastet sind.
-
Um
die Effekte von solcher Latenz zu vermindern, produziert der Client-Knoten 10 sogar
in Erwartung der Server-Antwort eine Antwort auf die Eingabe und
zeigt diese an. Gemäß den Prinzipien
der Erfindung versucht die Antwort des Client-Knotens 10 die
Server-Antwort zu antizipieren, die im Wesentlichen in Bezug auf
Inhalt und Aussehen der nachfolgenden Anzeige der erwarteten Serverantwort gleicht.
Inhalt wäre
zum Beispiel der spezifische Text und das graphische Bild, die die
Server-Antwort erwartungsgemäß anzeigen
wird, wie zum Beispiel den Großbuchstaben „T" und das Dropdown-Menu
der oben beschriebenen Beispiele. Mit dem Aussehen assoziierte Attribute
wären zum
Beispiel die Farbe des angezeigten Zeichens (z.B: blau), die Fontgröße (z.B.
12), der Fonttyp (z.B. Times New Roman), der Fontstil (z.B. kursiv)
und die aktuelle Eingabeposition (d.h. (x, y)-Koordinate) auf dem Anzeigeschirm 22.
-
Erzeugen einer
Client-Antwort
-
2 zeigt
ein beispielhaftes Blockschaltbild, das die Informationen darstellt,
die ein Client-Antwort-Generator 30 verwendet,
um eine Client-Antwort 32 auf eine vom Benutzer gegebene
Eingabe zu produzieren. Der Client-Antwort-Generator 30 enthält den Prozessor
des Client-Knotens 10 und die bestimmten API-Routinen,
die die vom Client erzeugte Antwort 32 bilden und anzeigen.
Von dem Server 14 zu dem Client 10 gesendete Daten 35 umfassen
Daten 36 und Daten 37. Die Daten 36 umfassen
vom Server gelieferte Informationen, die Daten 37 sind
die Server-Antwort auf die vom Benutzer gegebenen Eingaben. In der
Regel bildet der Client-Antwort-Generator 30 die
vom Client erzeugte Antwort 32 auf der Basis dieser vom
Benutzer gegebenen Eingaben 34 und der vom Benutzer gelieferten Informationen 36,
wenn aber bestimmte vom Server gelieferte Informationen, die nachfolgend
beschrieben werden, nicht verfügbar
sind, kann der Client-Antwort-Generator 30 stattdessen
Vorgabeinformationen 38 benutzen.
-
Die
vom Benutzer gegebene Eingabe 34 weist einen von mindestens
zwei Typen auf: (1) Tastatureingabe oder (2) Zeigegeräteingabe.
Der Benutzer des Client-Knotens 10 hat Tastatureingaben
gegeben, indem er die Zeichen unter Verwendung der Tastatur tippt,
und Zeigegeräteingaben,
indem er mit dem Zeigegerät
klickt oder doppelklickt. Eine andere Art von Zeigegeräteingabe
wäre die
Position des Cursors auf dem Anzeigeschirm 22 des Client-Knotens 10.
Vom Benutzer gegebene Eingaben werden über einen clientseitigen Transportmechanismus 33 zu
dem Server 14 übertragen.
Bei der in 2 abgebildeten Ausführungsform
umfasst der clientseitige Transportmechanismus 33 einen
Transportreiber, der Netzwerkkommunikation auf niedriger Ebene abwickelt
(z.B. physische Schicht), einen Protokolltreiber, der Netzwerkkommunikation
auf höherer
Ebene abwickelt (z.B. auf der Datenstreckenschicht), und einen ICA-Treiber,
der die Formatierung von Daten, um dem ICA-Protokoll zu genügen, abwickelt.
-
Die
Art der vom Server gelieferten Informationen 36 hängt von
der Art der Benutzereingabe ab. Wie oben beschrieben, umfassen die
Eingabetypen Tastatureingaben und Zeigegeräteingaben. Für Tastatureingaben
umfassen die vom Server gelieferten Informationen 36 eine
aktuelle Eingabeposition und aktuelle Fontinformationen. Die aktuelle
Eingabeposition wird durch die aktuelle Cursorposition bestimmt.
Die Fontinformationen definieren das Aussehen (z.B. Fontgröße, Stil,
Farbe, Typ usw.) der vom Client erzeugten Antwort, wenn sie auf
dem Anzeigeschirm angezeigt wird.
-
Für Zeigegeräteingaben
umfassen die vom Server gelieferten Informationen 36 Informationen über die
aktuelle Eingabeposition, wie oben beschrieben, und Informationen über das
aktuelle Bildschirmobjekt. Wenn das aktuelle Bildschirmobjekt zum
Beispiel ein Menü ist,
umfassen die Bildschirmobjektinformationen Informationen wie etwa
Menügröße und Schirmposition,
Anzahl der Menüelemente
und Größe der Menüelemente.
Hierbei entsprechen die Informationen über die aktuelle Eingabeposition
der durch das Zeigeeingabegerät
bestimmten Cursorposition.
-
Der
Server-Knoten 14 erhält
die Informationen über
aktuelle Eingabepositionen, Font und Bildschirmobjekt von dem auf
dem Server-Knoten 14 ausgeführten Anwendungsprogramm 40.
Um eine aktuelle Eingabeposition bereitzustellen, kann das Anwendungsprogramm
eine Standard-Betriebssystem-Cursor-Handhabungsroutine
verwenden oder eine bestimmte Abfrage-API unterstützen, die
die Cursorinformationen erhält,
wie zum Beispiel die API 41 „Fontinfo" oder die API 42 „Karree" (siehe 2). Die
Verwendung der Standard-Betriebssystem-Routine kann eine gewisse
Modifikation an dieser Routine erfordern, um die Cursorinformationen
zu erhalten. Zum Beispiel können
Implementierungen, die MICROSOFT WINDOWS verwenden, dies durch Installation
einer Hook-Prozedur in der Standard-Dynamic-Link-Library-Datei User32.dll
erzielen.
-
Um
die Fontinformationen bereitzustellen, verwendet das Anwendungsprogramm 40 entweder Textausgabefunktionen
zum Zeichnen des Text als Reaktion auf die Tastatureingabe oder
unterstützt eine
bestimmte Abfrage-API zum Erhalten der Fontinformationen. Sollte
das Anwendungsprogramm keine API unterstützen, die Fontinformationen
bereitstellen kann, kann der Client-Antwortgenerator 30 Vorgabeinformationen 38 verwenden,
um die vom Client erzeugte Antwort 32 bereitzustellen.
Zum Beispiel können
die Vorgabeinformationen 38 oder der Font vorbestimmt sein
oder der letzten vorherigen, durch das Anwendungsprogramm erzeugten
Textausgabe entnommen werden.
-
Das
Anwendungsprogramm 40 liefert Bildschirmobjektinformationen
auf eine Weise, die der Bereitstellung der aktuellen Eingabeposition ähnlich ist,
das heißt
durch Verwenden einer systemunterstützten Routine zum Zugreifen
auf solche Informationen oder durch Unterstützen einer weiteren besonderen
Abfrage-API, wie zum Beispiel das oben erwähnte laccessible::accLocation.
Solche Ab frage-API können
Standard-API sein, wie zum Beispiel API in der von Microsoft entwickelten
Active Accessibility Interface, oder proprietäre API.
-
Die
Art der vom Server gelieferten Informationen 36 hängt auch
von dem Betriebszustand des gerade auf dem Server-Knoten 14 ausgeführten Anwendungsprogramms
ab. Wenn der Server-Knoten 14 zum Beispiel ein Textverarbeitungs-Anwendungsprogramm
ausführt
und das Programm zur Zeit unter Verwendung von Editiersteuerung
die Eingabe verarbeitet, kann der Client-Antwortgenerator 30 antizipieren,
wie der Server-Knoten 14 Tastatureingaben verarbeitet,
während
er gemäß dieser
Menge von Steuerelementen operiert. Bei Ausführungsformen, die unter Verwendung
des Betriebssystems Windows implementiert werden, ist die Editiersteuerung
Standard und gut dokumentiert. Das Verhalten der Editiersteuerung
wird im Allgemeinen durch eine Menge von Flags bestimmt, die mit
der Editiersteuerung assoziiert sind, wie etwa: ES_MULTILINE, wodurch
angezeigt wird, dass das Steuerelement mehrere Textzeilen enthält; ES_NUMBER,
wodurch angezeigt wird, dass das Steuerelement nur das Eingeben
von Ziffern erlaubt; ES_CENTER, wodurch angegeben wird, dass der
eingegebene Text zentriert wird, oder ES_LOWER CASE, wodurch angegeben
wird, dass der eingegebene Text in Kleinbuchstaben umgesetzt wird.
Es können
andere Informationen durch Abfragen der Editiersteuerung erhalten
werden, wie zum Beispiel aktuelle Größe des Ausgaberechtecks, derzeit
ausgewählter
Font, aktuelle Zeile oder aktuelle Textauswahl in der Editiersteuerung.
Somit kann der Client-Antwortgenerator 30 eine Anzahl von
damit assoziierten Eigenschaften antizipieren, wie zum Beispiel
Text, der gerade editiert wird, um die Serverantwort zu schätzen. Bei
einer Ausführungsform überwacht
der Client-Antwortgenerator 30 das Steuerelement durch
Verwendung einer Hooking-Steuerprozedur. Wenn die Editiersteuerung
als Folge der Benutzereingabe oder Anwendungsanforderung ihren Zustand ändert, erkennt
die installierte Hook-Prozedur die Änderung und die aktua lisierten
Informationen werden zu dem Client übermittelt.
-
Es
versteht sich, dass die Technik des Schätzens nicht auf die Editiersteuerung
oder eine bestimmte Menge von Steuerelementen beschränkt ist, sondern
dass die Technik für
jede beliebige Art von Eingabesteuerung gelten kann, solange Cursor-(Karree-)Informationen
dem Client-Antwortgenerator 30 verfügbar sind.
Wahlweise kann die Technik erfordern, dass auch Fontinformationen
dem Client-Antwortgenerator 30 zur Verfügung gestellt werden.
-
Der
Server-Knoten 14 kann die vom Server gelieferten Informationen
an verschiedenen Punkten während
der Ausführung
des Anwendungsprogramms abhängig
von der Art des Anwendungsprogramms zu dem Client-Knoten 10 senden.
Bei bestimmten Ausführungsformen
sendet der Server-Knoten 14 periodisch
Informationen zu dem Client 10. Bei diesen Ausführungsformen
kann der Server 14 einen unter Verwendung des ICA-Protokolls eingerichteten
virtuellen Kanal zum Senden der Informationen verwenden. Bei anderen
Ausführungsformen
fordert der Client 10 Informationen von dem Server 14 an,
wenn dazu Gelegenheit ist, wie zum Beispiel in Perioden niedriger
Netzwerkbandbreitenauslastung oder niedriger Prozessorlast. Ein
Punkt, an dem der Client 10 Informationen anfordern kann,
ist, wenn der Server-Knoten 14 mit der Ausführung des Anwendungsprogramms 40 beginnt.
Die Latenz der Verbindung zwischen dem Server 14 und dem
Client-Knoten 10 hat hierbei eine minimale Auswirkung auf
das Client-Benutzer-Verhalten,
weil der Client-Benutzer noch nicht damit begonnen hat, Eingaben
zu dem Anwendungsprogramm 40 zu senden. Während der
Ausführung
des Anwendungsprogramms 40 können weitere Punkte auftreten,
wie zum Beispiel, wenn der Server-Knoten 14 eine Server-Antwort zu dem Client-Knoten 14 sendet.
Weitere Punkte können
vorliegen, wenn bestimmte Triggerereignisse während der Ausführung des
Anwendungsprogramms 40 auftre ten, wie zum Beispiel, wenn
der Client-Benutzer bei der Eingabe von Daten in einen Datenbank-Datensatz
von einem Eingabefeld zu einem anderen übergeht. Jedes Mal, wenn der
Client-Benutzer zu einem neuen Eingabefeld voranschreitet, kann
hierbei der Server-Knoten 14 die für dieses Eingabefeld entsprechenden
Informationen 36 zu den Client-Knoten senden.
-
3 zeigt
einen beispielhaften Prozess der Erfindung, durch den der Client-Knoten 10 und
der Server-Knoten 14 zusammen
arbeiten, um einem Client-Benutzer eine unmittelbare visuelle Antwort
für jedes
durch den Client-Benutzer an der Tastatur 24 eingetippte
Zeichen zu geben. Die Antworten erscheinen zeichenweise. Zum Beispiel
sollte der Benutzer visuell keinerlei Verzögerung zwischen dem Moment
des Vornehmens einer Eingabe bis zu dem Moment des Beobachtens einer
Antwort wahrnehmen.
-
Kurz
gefasst, startet der Client-Knoten 10 ein Anwendungsprogramm
(Schritt 40) und der Server-Knoten 14 beginnt
(Schritt 44) mit der Ausführung dieser Anwendung. Bildlich
zur Veranschaulichung ist das Anwendungsprogramm MICROSOFT NOTEPAD,
das eine Mehrzeilen-Editierbox verwendet, in der vom Benutzer eingetippte
Zeichen erscheinen. Nach dem Starten der Ausführung der Anwendung sendet
der Server-Knoten 14 (Schritt 48) anwendungsspezifische
Informationen zu dem Client-Knoten 10. Diese Informationen
umfassen mindestens Fontinformationen und Informationen über die
aktuelle Eingabeposition.
-
An
der Tastatur tippt der Client-Benutzer den Großbuchstaben „T" ein. Der Client-Knoten 10 empfängt (Schritt 52)
diese Tastatureingabe und erzeugt dann wie oben beschrieben eine
visuelle Antwort, die versucht, die Server-Antwort zu antizipieren,
und zeigt diese an (Schritt 56). Die vom Client erzeugte Antwort
ist mehr als ein einfaches Echo des Großbuchstaben „T", weil die vom Client
erzeugte Antwort auch die visuellen Attribu te des Zeichens antizipieren kann,
wie zum Beispiel Fonttyp, Größe, Farbe
und aktuelle Eingabeposition auf dem Anzeigeschirm. Alle diese visuellen
Attribute sind aus den durch den Server in Schritt 48 gegebenen
Informationen erhaltbar. Der Client-Knoten 10 kann für etwaige
visuelle Attribute, die nicht mit solchen anwendungsspezifischen
Informationen durch den Server-Knoten 14 bereitgestellt
werden, Vorgabeinformationen benutzen.
-
Der
Client-Knoten 10 sendet (Schritt 60) das eingegebene
Zeichen „T" zu dem Server-Knoten 14. Obwohl
es hier als nach der Erzeugung und Anzeige der von dem Client erzeugten
Antwort auftretend gezeigt ist, kann die Übertragung des Zeichens zu
dem Server-Knoten 14 vor dieser Erzeugung und Anzeige stattfinden.
Der Client-Knoten
empfängt
(Schritt 64) ein zweites vom Client-Benutzer eingetipptes Zeichen, hier
das Zeichen „e". Auf ähnliche
Weise wie bei der vom Client erzeugten Antwort für den Buchstaben „T" erzeugt der Client-Knoten 10 eine
Antwort für
das Zeichen „e" und zeigt diese
(Schritt 68) auf dem Client-Anzeigeschirm an. In Schritt 72 sendet der
Client-Knoten 10 die Benutzereingabe des Zeichens „e" zu dem Server-Knoten 14.
-
Nach
dem Senden des eingegebenen Zeichens zu dem Server-Knoten 14 überwacht
der Client-Knoten 10 auf eine Server-Antwort. Der Server-Knoten 14 produziert
(Schritt 76) die Antwort 37 auf das eingegebene
Zeichen „T" und sendet die Antwort 37 über das
Netzwerk 18 zu dem Client-Knoten 10. Im Allgemeinen
ist die Latenz der Verbindung zwischen Client- und Server-Knoten 10, 14 größer als
die Zeit, die der Client-Knoten 10 benötigt, um die vom Client erzeugte
Antwort zu produzieren und anzuzeigen. Somit kann die vom Client
erzeugte Antwort auf dem Bildschirm erscheinen, bevor der Server-Knoten 14 die
Server-Antwort 37 erzeugt oder die Benutzereingabe empfängt. Typischerweise
ist die Latenz der Kommunikationsstrecke zwischen Server- und Client- Knoten dergestalt,
dass Antworten 37 von dem Server-Knoten 14 den Antworten, die
durch den Client-Knoten 10 angezeigt werden, um mehrere Zeichen
nacheilen, wie durch dieses Beispiel veranschaulicht wird.
-
Der
Client-Knoten 10 empfängt
die Server-Antwort 37 für
den Buchstaben „T" und aktualisiert
(Schritt 80) die Anzeige durch Überschreiben der vom Client
erzeugten Antwort mit der Server-Antwort. Da die Server-Antworten 37 die
Client-Antwort überschreiben,
muss die Server-Antwort 37 nicht genau mit der vom Client
erzeugten Antwort übereinstimmen.
Geringfügige
Unterschiede beim Aussehen zwischen der vom Client erzeugten Antwort
und der Server-Antwort sind gewöhnlich
vom Client-Benutzer nicht wahrnehmbar. Bei einer anderen Ausführungsform
kann der Client-Knoten 10 die vom Client erzeugte Antwort
mit der Server-Antwort vergleichen und die vom Client erzeugte Antwort überschreiben, wenn
die Server-Antwort verschieden ist.
-
Der
Server-Knoten 14 (Schritt 84) eine Antwort 37 auf
das eingegebene Zeichen „e" und gibt die Antwort 37 zu
dem Client-Knoten 10 zurück, der den Anzeigeschirm mit
dieser Server-Antwort aktualisiert (Schritt 88). Bei bestimmten
Ausführungsformen
aktualisiert der Client-Knoten 10 den
Anzeigeschirm, ob die vom Server gelieferte Antwort 37 von
der vom Client erzeugten Antwort abweicht oder nicht. Bei anderen
Ausführungsformen
aktualisiert der Client-Knoten 10 die Anzeige mit der vom
Server gelieferten Antwort 37 nur dann, wenn die vom Client
erzeugte Antwort falsch war. Wie bereits erwähnt, kann der Server-Knoten 14 zusammen
mit jeder Übertragung einer
Server-Antwort 37 aus dem Server-Knoten 14 zu dem Client-Knoten 10 neue
Font- und Informationen über
die aktuelle Eingabeposition zur Verwendung durch den Client-Knoten 10 zur
Aktualisierung nachfolgend erzeugter vom Client erzeugter Antworten
bereitstellen.
-
4 gibt
ein weiteres beispielhaftes Flussdiagramm des Prozesses, mit dem
der Client-Knoten 10 Antworten auf eine durch das Zeigegerät 28 bereitgestellte
Benutzereingabe erzeugt. Wie oben für 3 beschrieben,
startet der Client-Knoten 10 (Schritt 100) ein
Anwendungsprogramm, das beginnt, auf dem Server-Knoten 14 ausgeführt zu werden
(Schritt 104). In diesem Beispiel führt der Server-Knoten 14 das
Anwendungsprogramm MICROSOFT WORD aus.
-
Wie
in 3 beschrieben, liefert der Server-Knoten (Schritt 208)
anwendungsspezifische Informationen. Hierbei beschreiben die anwendungsspezifischen
Informationen Bildschirmobjekte, wie zum Beispiel die Befehle und
Toolbar-Symbole, die oben in dem Fenster von MICROSOFT WORD angezeigt
werden, und die mit jedem solchen Bildschirmobjekt assoziierte Menüstruktur.
Die Bildschirmobjektinformationen umfassen die Bildschirmposition
und die von jedem Befehl und Symbol abgedeckte Bildschirmfläche, so
dass der Client-Knoten 10 unter Verwendung der aktuellen
Cursorposition den Befehl oder das Symbol erzeugen kann, der bzw.
das ausgewählt
wird, wenn der Client-Benutzer das Zeigegerät 28 klickt. Eine
typische Anzeige von Befehlen oben in dem Fenster von MICROSOFT
WORD wäre zum
Beispiel: Datei Bearbeiten Ansicht Einfügen Format Extras Tabelle Fenster
Hilfe.
-
Zum
Beispiel erfolgt die Aktivierung des Befehls Bearbeiten durch klicken
des Zeigegeräts 28, während die
Cursorposition in die Grenzen des durch den Befehl Bearbeiten abgedeckten
rechteckigen Bildschirmbereichs fällt. In Schritt 112 empfängt der Client-Knoten 10 diese
Zeigegeräteingabe.
Als Vorwegnahme dieser Server-Antwort
erzeugt der Client-Knoten 10 eine Antwort, und zwar hier
ein mit dem Befehl Bearbeiten assoziiertes Dropdown-Menu aus den
vom Server gelieferten anwendungsspezifischen Informationen und
der aktuellen Cursorposition und zeigt diese an (Schritt 116).
Der Client-Knoten 10 sendet (Schritt 120) die
Benutzerein gabe zu dem Server-Knoten 14. Bei einer Ausführungsform
verfolgt der Client-Knoten 10 (Schritt 124) die
Cursorbewegung in dem Dropdown-Menü und hebt das Menüelement
hervor, in das die aktuelle Cursorposition fällt. In Schritt 128 produziert
der Server-Knoten 14 die tatsächliche Antwort auf die Zeigegeräteingabe und
gibt die Antwort an den Client-Knoten 10 zurück. Der
Client-Knoten 10 aktualisiert
(Schritt 132) die Anzeige mit der Server-Antwort.
-
Die
vorliegende Erfindung kann als eines oder mehrere computerlesbare
Softwareprogramme implementiert werden, die auf oder in einem oder mehreren
Herstellungsartikeln realisiert werden. Der Herstellungsartikel
kann zum Beispiel einzeln oder als Kombination aus der folgenden
Gruppe ausgewählt
werden: Diskette, Festplatte, Festplattenlaufwerk, CD-ROM, DVD-ROM,
Flash-Speicherkarte, EE-POM,
EPROM, PROM, RAM, ROM oder Magnetband. Im Allgemeinen kann eine
beliebige standardmäßige oder
proprietäre
Programmier- oder Interpretiersprache verwendet werden, um die computerlesbaren
Softwareprogramme zu produzieren. Beispiele für solche Sprachen wären C, C++,
Pascal, Java, Basic, Visual Basic und Visual C++. Die Softwareprogramme
können
auf oder in einem oder mehreren Herstellungsartikeln als Quellcode,
Objektcode, Interpretationscode oder ausführbarer Code gespeichert werden.
-
Obwohl
die Erfindung mit Bezug auf spezifische bevorzugte Ausführungsformen
gezeigt und beschrieben wurde, ist für Fachleute erkennbar, dass verschiedene Änderungen
von Form und Detail daran vorgenommen werden können, ohne von den durch die
folgenden Ansprüche
definierten Schutzumfang der Erfindung abzuweichen.