DE60109602T2 - Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten - Google Patents

Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten Download PDF

Info

Publication number
DE60109602T2
DE60109602T2 DE60109602T DE60109602T DE60109602T2 DE 60109602 T2 DE60109602 T2 DE 60109602T2 DE 60109602 T DE60109602 T DE 60109602T DE 60109602 T DE60109602 T DE 60109602T DE 60109602 T2 DE60109602 T2 DE 60109602T2
Authority
DE
Germany
Prior art keywords
agent
client
server
graphical data
fuzzy
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
DE60109602T
Other languages
English (en)
Other versions
DE60109602D1 (de
Inventor
Paul Coleman
Ruiguo Yang
Henry Collins
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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 Citrix Systems Inc filed Critical Citrix Systems Inc
Application granted granted Critical
Publication of DE60109602D1 publication Critical patent/DE60109602D1/de
Publication of DE60109602T2 publication Critical patent/DE60109602T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein die Kommunikation zwischen einem Anwendungsserver und einem Thin-Client in einem verteilten System und insbesondere die Reduktion der Menge an über einen Transportprotokollmechanismus mit niedriger Bandbreite übertragenen graphischen Anzeigedaten.
  • ALLGEMEINER STAND DER TECHNIK
  • Verteilte Computersysteme verwenden die Technik des Verteilens der Anwendungsausführung. Genauer gesagt führt ein Anwendungsserver lokal ein Anwendungsprogramm aus und liefert die Anwendungsausgangsdaten an Client/Netzwerkbenutzer, die die Ergebnisse dann auf einem an ihren lokalen Computer angekoppelten Anzeigeschirm anzeigen. Durch Durchführen der Anwendungsverarbeitungsfunktionen im Server und Anzeigen der Anwendungsausgabe im Client nutzen diese verteilten Systeme Server- und Clientbetriebsmittel am besten aus, d.h. der fähigere Server führt die rechen- und speicherintensiven Anwendungsverarbeitungsfunktionen aus, während der Client mit einer potentiell größeren Videoleistungsfähigkeit die Ausgabe anzeigt. Während der Ausführung des Anwendungsprogramms betrachtet ein Benutzer des Client die Anwendungsausgangsdaten auf der Anzeige des Client und tritt über Tastatur- oder Mauseingaben mit dem Anwendungsprogramm in Dialog. Die Eingaben des Client-Benutzers entsprechen Anforderungen für den Anwendungsserver, bestimmte Aktionen auszuführen, die sich auf die Funktionsweise des Anwendungsprogramms auswirken. Der Anwendungsserver leitet diese Anforderungen zur weiteren Verarbeitung an die Anwendung weiter. Außerdem fängt der Anwendungsserver die Anwendungsausgangsdaten ab, die durch das Anwendungsprogramm erzeugt und typischerweise auf das Betriebssystem des Anwendungsservers abgezielt sind, und sendet alle Daten oder einen Teil davon zur Anzeige zu dem Client. Vom Standpunkt des Benutzers aus gesehen wird das Anwendungsprogramm scheinbar lokal ausgeführt, obwohl es tatsächlich auf einem abgesetzten Server ausgeführt und einfach nur lokal angezeigt wird.
  • Die Leistungsfähigkeit verteilter Systeme hängt zu einem großen Grad von der Fähigkeit des Netzwerks ab, das Client und Server koppelt, und deshalb von der Menge an graphischen Daten (entsprechend den Anwendungsausgangsdaten), die über das Netzwerk übertragen wird. Da der Anwendungsserver und die Client-Workstation im allgemeinen nur durch einen Transportmechanismus (wie zum Beispiel serielle Leitungen, Telefonleitungen, lokale Netzwerke und großflächige Netzwerke) verbunden werden, der eine niedrigere Bandbreite besitzt, als anderweitig verfügbar wäre, falls das Anwendungsprogramm lokal ausgeführt werden würde, kann die wahrgenommene Leistungsfähigkeit des verteilten Systems beeinträchtigt werden. Folglich versuchen Hersteller von verteilten Systemen/Software fortwährend, die Leistungsfähigkeit solcher Systeme zu verbessern.
  • Das US-Patent 5 864 711 beschreibt ein System mit den Merkmalen des Oberbegriffs von Anspruch 1 und Anspruch 19.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • Gemäß der Erfindung wird ein Verfahren zum effizienten Verringern der Menge an sich wiederholenden graphischen Daten, die zu einer abgesetzten Anzeigeeinrichtung übertragen werden, bereitgestellt, wobei das Verfahren die folgenden Schritte umfaßt: Durchsuchen einer Tabelle nach einem Index, der einem graphischen Datenelement zugeordnet ist, wobei die Anwesenheit des Index in der Tabelle eine vorherige Übertragung des graphischen Datenelements anzeigt; dadurch gekennzeichnet, daß das Verfahren weiterhin die folgenden Schritte umfaßt: wenn der Index nicht in der Tabelle gefunden werden kann, Durchsuchen einer Fuzzy-Datenbank nach einem dem graphischen Datenelement zugeordneten Fuzzy-Schlüssel, wobei die Anwesenheit des Fuzzy-Schlüssels in der Fuzzy-Datenbank eine Wahrscheinlichkeit anzeigt, daß das graphische Datenelement in einem an die abgesetzte Anzeigeeinrichtung angekoppelten persistenten Speicher gespeichert ist; und wenn der Fuzzy-Schlüssel gefunden wird, Übertragen des Fuzzy-Schlüssels zu einem dem persistenten Speicher und der abgesetzten Anzeigeeinrichtung zugeordneten Agent.
  • Gemäß einem weiteren Aspekt der Erfindung wird außerdem ein System zum effizienten Verringern der Menge an sich wiederholenden graphischen Daten, die zu einer abgesetzten Anzeigeeinrichtung übertragen werden bereitgestellt, wobei das System folgendes umfaßt: eine Tabelle, die einen Index speichert, der einem graphischen Datenelement zugeordnet ist, wobei die Anwesenheit des Index in der Tabelle eine vorherige Übertragung des graphischen Datenelements anzeigt; dadurch gekennzeichnet, daß das System weiterhin folgendes umfaßt: eine Fuzzy-Datenbank, die einen dem graphischen Datenelement zugeordneten Fuzzy-Schlüssel speichert, wobei die Anwesenheit des Fuzzy-Schlüssels in der Fuzzy-Datenbank eine Wahrscheinlichkeit anzeigt, daß die graphischen Daten in einem an die abgesetzte Anzeigeeinrichtung angekoppelten persistenten Speicher gespeichert sind; und einen Server-Agent, der im Betrieb dafür ausgelegt ist, die Fuzzy-Datenbank nach dem Fuzzy-Schlüssel zu durchsuchen, wenn der Index nicht in der Tabelle gefunden werden kann und, wenn der Fuzzy-Schlüssel gefunden wird, den Fuzzy-Schlüssel zu einem dem persistenten Speicher und der abgesetzten Anzeigeeinrichtung zugeordneten Client-Agent zu übertragen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die obige Besprechung wird aus der folgenden ausführlichen Beschreibung der Erfindung in Verbindung mit den beigefügten Zeichnungen besser verständlich. Es zeigen:
  • 1 schematisch einen über ein Kommunikationsnetz an einen Server-Knoten angekoppelten Client-Knoten, wobei Client- und Server-Knoten jeweils jeweilige Client- und Server-Agents aufweisen, die gemäß einer Ausführungsform der vorliegenden Erfindung wirken;
  • 2 ein Flußdiagramm auf hoher Ebene der durch den Server-Agent von 1 durchgeführten Schritte gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 ein im Vergleich zu dem Diagramm von 2 ausführlicheres Flußdiagramm gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 schematisch den Inhalt des flüchtigen und persistenten Speichers von Client und Server, so wie er durch Operationen der Client- und Serveragents von 1 beeinflußt wird, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5 ein Flußdiagramm der Schritte zur Minimierung der Menge an zu dem Client übertragenen Daten durch Verwendung von Cache-Techniken unter Beteiligung einer Fuzzy-Datenbank und von Fuzzy-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 6 schematisch eine Menge von Prozeduren für Ferntextinformationen, die durch ein Anwendungsprogramm auf einem Server erzeugt werden, zu einer Anzeige eines fernen Client gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 7A ein Liniendiagramm mehrerer Segmente, die einen bestimmten Weg bilden;
  • 7B eine Repräsentation des Liniendiagramms von 7A auf Pixelniveau, in der dargestellt wird, wie der Weg tatsächlich auf einer Computeranzeige approximiert wird;
  • 8A ein Flußdiagramm der Schritte bei der Verarbeitung und Codierung von Segment- und Streifendaten gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 8B ein Koordinatensystem, das zu einer Menge von 16 Regionen organisiert wird, mit dem Winkelinformationen in bezug auf Streifen quantisiert werden und das die Komprimierungseffizienz verbessert, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 9 eine Überlagerung des Koordinatensystems von 8B auf die Repräsentation auf Pixelniveau von 7B zur Darstellung einer Ausführungsform einer Streifenverarbeitungstechnik gemäß der vorliegenden Erfindung;
  • 10 eine Tabelle, die zeigt, wie man den nächsten Streifen von dem Endpunkt des vorherigen Streifens erhält, für Streifen in jedem der quantisierten Segmente von 8B, gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • 11 ein Flußdiagramm der Schritte, die von dem Server-Agent als Reaktion auf eine Fehlerbedingung durchgeführt werden, wobei die Außerbildschirm-Oberfläche eines Client ausgebildet wird.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung verringert die Menge an zwischen einem Anwendungsserver, der ein Anwendungsprogramm ausführt, und einem teilnehmenden Client, der lokal die Ausgangsdaten des Anwendungsprogramms anzeigt, übertragenen graphischen Daten durch Codieren der Daten zu relativ kleinen Repräsentationen, die sich innerhalb des zwischen dem Client und dem Server übertragenen Protokollstroms wiederholen. Auf diese Weise minimiert die Erfindung die Größe jedes diskreten Datenelements, das übertragen werden muß, und vergrößert die Wiederholbarkeit der Daten innerhalb des Protokollstroms, so daß Komprimierungsalgorithmen, die effizienter an sich wiederholenden codierten Daten operieren, einen größeren Grad an Komprimierungseffizienz realisieren können. Die Erfindung verwendet eine Anzahl von Techniken zur Realisierung der verbesserten Komprimierung, darunter die folgenden: Scannen einer Befehlswarteschlange nach später ausgegebenen Befehlen, die früher ausgegebene Befehle ablösen haben; Disk-Cache-Techniken, die die Komprimierung von Daten, die bereits während einer Client-Server-Sitzung angetroffen wurden, verbessern; Übertragung relativer Koordinaten unter Verwendung quantisierter Regionen zur Vermeidung des Sendens beider Endpunkte und/oder des Winkels eines assoziierten Streifens; und Manipulation von Außerbildschirm-Oberflächen zur Verbesserung der Leistungsfähigkeit während der Client-Server-Sitzung.
  • Die Erfindung verringert außerdem die Häufigkeit von Überrollproblemen, die auftreten, wenn eine Leistungsfähigkeitsfehlanpassung zwischen einem schnellen Server und einem relativ langsamen Netzwerk oder Client besteht.
  • Mit Bezug auf 1 befinden sich ein oder mehrere Client-Knoten 110', 110'' (im folgenden wird jeder Client-Knoten oder Vielzahl von Client-Knoten im allgemeinen als 110 bezeichnet) in Kommunikation mit einem oder mehreren Server-Knoten 150', 150'' (im folgenden wird jeder Server-Knoten oder jede Vielzahl von Server-Knoten allgemein als 150 bezeichnet) über ein Kommunikationsnetz 140. Das Netzwerk 140 kann ein lokales Netzwerk (LAN), ein mittelflächiges Netzwerk (MAN) oder ein großflächiges Netzwerk (WAN), wie zum Beispiel das Internet oder das World Wide Web sein. Benutzer des Client-Knotens 110 können durch vielfältige Verbindungen mit dem Netzwerk 140 verbunden sein, darunter Standard-Telefonleitungen, LAN- oder WAN-Verbindungen (z.B. T1, T3, 56 kb, X.25), Breitbandverbindungen (ISDN, Frame Relay, ATM) und drahtlose Verbindungen. Die Verbindungen können mit vielfältigen Kommunikationsprotokollen hergestellt werden (z.B. TCP/IP, IPX, SPX, NetBIOS und direkte asynchrone Verbindungen). Bei bestimmten besonders vorteilhaften Ausführungsformen kann das verwendete Protokoll das Protokoll der unabhängigen Datenverarbeitungsarchitektur von Citrix Systems, Inc., in Fort Lauderdale, Florida, sein, oder das Remote Display Protocol von Microsoft Corporation in Redmond, Washington.
  • Der Client-Knoten 110 kann ein beliebiger Personal Computer sein (z.B. 286, 386, 486, Pentium, Pentium II, Macintosh-Computer), ein auf Windows basierendes Terminal, ein Netzwerkcomputer, eine drahtlose Einrichtung, ein Informationsgerät, ein RISC-Power-PC, eine X-Einrichtung, eine Workstation, ein Minicomputer, ein Zentralrechner oder eine andere Datenverarbeitungseinrichtung, die ein auf Windows basierendes Desktop und ausreichend Speicher zur Ausführung eines kleinen Anzeigepräsentationsprogramms aufweist. Das Anzeigepräsentationsprogramm verwendet Befehle und Daten, die ihm über das Netzwerk 140 von dem Anwendungsserver 150 gesendet werden, um eine graphische Anzeige wiederzugeben. Bei einem verteilten Computersystemmodell findet die Ausführung von Anwendungsprogrammen hauptsächlich auf dem Anwendungsserver 150 statt, und die Benutzeroberfläche, die Tastenbetätigungen und die Mausbewegungen, die durch Eingaben auf der Clientseite erzeugt werden, werden über das Netzwerk 140 zu und von dem Client-Knoten 110 übertragen.
  • Der Client-Knoten 110 enthält typischerweise einen Prozessor 112, einen flüchtigen Speicher 114 (z.B. RAM-Cache), ein Betriebssystem 116, einen Client-Agent 118, einen persistenten Speicher 120, eine Netzwerkschnittstelle 122 (z.B. eine Netzwerkschnittstellenkarte), eine Tastatur 124, eine Maus 126 und eine Anzeige 128. Zu von dem Client-Knoten 110 unterstützten Windows-orientierten Plattformen können ohne Einschränkung die folgenden gehören: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS 2000, WINDOWS CE, MAC/OS, Java und UNIX. Der Client-Agent 118 entspricht einem Softwareprogramm, das Befehle und Daten von dem Server-Knoten 150 und von einem (nicht gezeigten) Benutzer des Client-Knotens 110 empfängt. Der Client-Agent 118 verwendet die empfangenen Informationen, wenn er mit anderen Komponenten des Client-Knotens 110 in Wechselwirkung tritt (z.B. beim Anleiten des Betriebssystems 116, Daten auf die Anzeige 128 auszugeben). Außerdem sendet der Client-Agent 118 Anforderungen und Daten als Reaktion auf vom Server ausgegebene Befehle oder Benutzeraktionen an dem Client-Knoten 110 zu dem Server-Knoten 150.
  • Ähnlich enthält der Server-Knoten 150 einen Prozessor 152, einen flüchtigen Speicher 154, ein Betriebssystem 156, ein Anwendungsprogramm 158, einen Server-Agent 160, persistenten Speicher 162 und eine Netzwerkschnittstelle 164. Der Server-Agent 160 entspricht einem Softwareprogramm, das eine Schnittstelle mit dem Client-Agent 118 und anderen Komponenten des Server-Knotens 150 zur Unterstützung der Fernanzeige und Operabilität des Anwendungsprogramms 158 aufweist.
  • Jeder Anwendungsserver 150 ist Host für ein oder mehrere Anwendungsprogramme 158, auf die die Client-Knoten 110 zugreifen können. Zu Beispielen für solche Anwendungen gehören Textverarbeitungsprogramme wie etwa MICROSOFT WORD und Tabellenkalkulationsprogramme wie etwa MICROSOFT EXCEL, wobei beides von der Microsoft Corporation in Redmond, Washington hergestellt wird, Finanzberichtprogramme, Kundenregistrationsprogramme, Programme, die technische Serviceinformationen liefern, Kundendatenbankanwendungen oder Anwendungssatzmanager.
  • Während der Ausführung des Anwendungsprogramms 158 kommuniziert ein Server 150 über einen Transportmechanismus (Teil des Server-Agent 160) mit dem Client-Knoten 110. Bei einer Ausführungsform liefert der Transportmechanismus mehrere virtuelle Kanäle, und einer der virtuellen Kanäle liefert ein Protokoll zur Übertragung von graphischen Bildschirmdaten aus dem Server-Knoten 150 zu dem Client-Knoten 110. Der Server 150 führt einen Protokolltreiber aus (Teil des Server-Agent 160), der Schnittstellenbefehle der graphischen Anzeige (die durch das Anwendungsprogramm 158 erzeugt werden und für das Betriebssystem 156 im Server bestimmt sind) abfängt, und übersetzt diese in ein für die Übertragung über den Transportmechanismus geeignetes Protokollpaket.
  • Bei einer Ausführungsform und mit Bezug auf 2 fängt der Server-Agent 160 eine von dem Anwendungsprogramm 158 ausgegebenen und an das Betriebssystem 156 gerichteten Schnittstellenbefehl der graphischen Anzeige ab (Schritt 202), codiert mit dem Befehl und dem Anwendungsprogramm 158 assoziierte Daten (Schritt 204), komprimiert die codierten graphischen Daten (Schritt 206), erzeugt ein Transportprotokollpaket, das den abgefangenen Befehl und komprimierte codierte Daten enthält (Schritt 208) und sendet das Transportprotokollpaket zu dem Zielclient-Knoten 110 (Schritt 210). Graphische Daten bedeuten eine beliebige Art von Daten, die auf der Anzeige 128 angezeigt werden kann, wie zum Beispiel Bitmaps, Glyphen, Koordinaten, Linienlisten, Streifen usw. Im folgenden können Beschreibungen von Techniken, die auf bestimmte Arten von graphischen Daten oder graphischen Objekten angewandt werden, als für alle Arten von graphischen Daten geltend aufgefaßt werden.
  • Genauer gesagt fängt ein Protokolltreiber des Server-Agent 160 die Schnittstellenbefehle der graphischen Anzeige ab (Schritt 202). Bei einer Ausführungsform fängt der Protokolltreiber Aufrufe der Anwendungsprogrammierschnittstelle auf hoher Ebene ab, die von dem Anwendungsprogramm 158 durchgeführt werden. Bei einer Ausführungsform fängt der Protokolltreiber GDI-Befehle ab, die von dem auf WINDOWS basierenden Betriebssystemen bereitgestellt werden. Bei einer anderen Ausführungsform fängt der Protokolltreiber QUICKDRAW-Befehle ab, die von Betriebssystemen auf MAC/OS-Basis bereitgestellt werden. Bei weiteren Ausführungsformen fängt der Protokolltreiber Befehle auf niedrigerer Ebene ab, wie zum Beispiel Schnittstellenaufrufe des Gerätetreibers, der der graphischen Anzeige des Server-Knotens 150 zugeordnet ist. Bei weiteren Ausführungsformen kann der Schnittstellenbefehl der graphischen Anzeige nicht abgefangen, sondern dupliziert werden. Bei diesen Ausführungsformen wird die Anzeige der Anwendungsprogrammausgangsdaten auf dem Server 150 und dem Client 110 im wesentlichen ähnlich oder identisch sein. Der Protokolltreiber erzeugt auf der Basis des abgefangenen graphischen Anzeigebefehls ein Transportprotokollpaket (Schritt 208). Der Protokolltreiber kann einen Protokollbefehlssatz verwenden, der für jeden möglichen abgefangenen Anzeigeschnittstellenbefehl einen analogen Befehl enthält. Als Alternative kann der Protokolltreiber einen Befehlssatz verwenden, der eine Teilmenge der abgefangenen Anzeigeschnittstellenbefehle ist. Bei anderen Ausführungsformen kann der Protokollbefehlssatz eine Übermenge der möglichen abgefangenen Anzeigeschnittstellenbefehle sein.
  • Für jeden abgefangenen GDI-Befehl und betroffene graphische Daten, die zu dem Client-Agent 118 gesendet werden müssen, um die Ausgabe des Anwendungsprogramms 158 auf der Anzeige 128 des Client anzuzeigen, reiht der Server-Agent 160 den betreffenden Protokollbefehle zusammen mit einem eindeutigen Schlüssel 412 (4), der den betroffenen graphischen Daten zugeordnet ist, in eine Warteschlange ein. Der eindeutige Schlüssel 412 beschreibt die graphischen Daten und identifiziert diese eindeutig. Bei einer Ausführungsform wird der eindeutige Schlüssel durch Ausführen einer 64-Bit-CRC-Prüfung (Cyclic Redundancy Check) an den graphischen Daten erzeugt. Bei einer anderen Ausführungsform wird die 64-Bit-CRC als zwei 32-Bit-CRCs erzeugt, die sequentiell und in entgegengesetzten Richtungen an den graphischen Daten ausgeführt werden. Außerdem können andere Verfahren zum Erzeugen eines eindeutigen, graphischen Daten zugeordneten Schlüssels, die Fachleuten bekannt sind, verwendet werden. Der Protokollbefehl und der eindeutige Schlüssel 412 werden im Server 150 zusammen mit anderen Sätzen von Befehlen/eindeutigen Schlüsseln in eine Warteschlange eingereiht. Die in Warteschlangen eingereihten Befehle werden dann gescannt, um zu bestimmen, ob später ausgegebene Befehle (d.h. die in der Nähe des hinteren Endes der Warteschlange) früher ausgegebene Befehle (d.h. denen näher am Anfang der Warteschlange) ablösen. Wenn andere gegenüber den früher ausgegebenen Befehlen Vorrang haben, dann entfernt der Server-Agent 160 diese aus der Warteschlange und vermeidet somit das Übertragen unnötiger Daten zu dem Client-Agent 118.
  • Zum Beispiel muß eine Reihe von Befehlen zur Anzeige der nächsten Datenseite, die in schneller Abfolge ausgegeben wird, nicht individuell an dem Client 110 angezeigt werden. Es muß lediglich die letzte ausgegebene Anzeigeseite angezeigt werden, da diese letzte Datenseite alle vorherigen Datenseiten überschreiben wird. Durch Entfernen der unnötigen Befehle und der eindeutigen Schlüssel, die den früheren Seiten entsprechen, aus der Warteschlange des Servers verringert der Server-Agent 160 die Menge an zu verarbeitenden und zu übertragenden Daten wesentlich.
  • Bei einem Ausführungsbeispiel werden nur unnötige Befehle und damit zusammenhängende Daten in bezug auf durchlässige Operationen von der Warteschlange des Servers entfernt. Wenn zum Beispiel bei einem zuvor eingereihten Befehl eine rechteckige Region mit den Koordinaten 10, 10, 50, 50 erzeugt wird und ihm ein später eingereihter Befehl folgt, bei dem eine größere/abdeckende rechteckige Region mit den Koordinaten 0, 0, 100, 100 erzeugt wird, dann werden der zuvor eingereihte Befehl und die diesbezüglichen Daten als unnötig betrachtet und aus der Warteschlange entfernt.
  • Die nachfolgende Tabelle 1 zeigt eine beispielhafte Menge von bei einer Ausführungsform der Erfindung bereitgestellten Protokollbefehlen.
  • Figure 00130001
  • Figure 00140001
  • Figure 00150001
  • Figure 00160001
    TABELLE 1 – PROTOKOLLBEFEHLE
  • Bei einer Ausführungsform werden die Protokollbefehle und zugeordneten graphischen Daten so konfiguriert, daß die Wiederholung von Informationen in dem durch den Protokolltreiber erzeugten Protokollpaketstrom maximiert wird. In einem Aspekt der Erfindung werden die graphischen Daten zuerst codiert (Schritt 204), bevor die codierten graphischen Daten und/oder Protokollbefehle einem Kompressionsalgorithmus unterzogen werden (Schritt 206), der die sich wiederholende Beschaffenheit des Protokollstroms ausnutzt (z.B. kann ein Kompressionsprotokoll des Typs Lempel-Ziv verwendet werden). Bei einer Ausführungsform und bei der ersten Instanz der graphischen Daten in der Client-Server-Sitzung wird zusammen mit den entsprechenden codierten Daten in dem Protokollstrom ein Indicia der graphischen Daten übertragen, um so die Menge an über das Netzwerk 140 für zukünftige Instanzen der graphischen Daten, die während derselben Client-Server-Sitzung auftreten, übertragenen Daten zu verringern. Die komprimierten Daten werden danach in das Transportprotokollpaket gebündelt und zur Dekomprimierung und Interpretation zu dem Client-Knoten 110 übertragen (Schritt 208).
  • Bei einem Ausführungsbeispiel führt das Anwendungsprogramm 158 einen GDI-Befehl aus, der das Betriebssystem 156 des Servers anweist, eine Bitmap zu zeichnen. Der Server-Agent 160 fängt diesen GDI-Befehl ab (Schritt 202) und gibt einen BITBLT-Befehl an den Client-Agent 118 aus, der den Client-Agent 118 anweist, die Ausgangsdaten des Anwendungsprogramms auf der Anzeige 128 des Client anzuzeigen. Vor der Ausgabe des BITBLT-Befehls codiert der Server-Agent 160 die Ausgangsdaten (Schritt 204) und nimmt die codierten Daten zusammen mit dem BITBLT-Befehl in den zu dem Client-Agent 118 übertragenen komprimierten Protokollpaketstrom auf. Bei einer Ausführungsform werden die die Bitmap 410 (4) beschreibenden Daten codiert und komprimiert (Schritte 204 und 206), um bestimmte der in der Bitmap 410 vorhandenen Redundanzen auszunutzen. Zum Beispiel kann die Bitmap 410 dergestalt sein, daß sukzessive Rasterzeilen redundant oder angrenzende Pixel redundant sind.
  • Zusätzlich zu der Codierung von Bitmaps oder anderer diskreter graphischer Datenelemente auf der Basis ihrer internen Datenredundanzen umfaßt die Erfindung außerdem Cache-Techniken, die die Codierung und Komprimierung graphischer Daten, die zuvor während einer bestimmten Client-Server-Sitzung angetroffen wurden, weiter verbessern. Wenn zum Beispiel eine bestimmte Bitmap zum ersten Mal während einer Client-Server-Sitzung angetroffen wird, wird sie wie oben beschrieben codiert. Für nachfolgende Übertragungen der Bitmap während derselben Client-Server-Sitzung können anstelle der relativ größeren codierten Bitmap Indicia der Bitmap gesendet werden. Bei einer Ausführungsform entsprechen die Indicia einer Stelle in dem flüchtigen Speicher des Client, die die zuvor übertragene Bitmap enthält.
  • Genauer gesagt und mit Bezug auf 3 und 4 erzeugt der Server-Agent 160 wie oben beschrieben den eindeutigen Schlüssel 412 (Schritt 330) und ordnet den eindeutigen Schlüssel 412 den graphischen Daten (z.B. der Bitmap 410) zu. Diese Zuordnung definiert im wesentlichen die Bitmap 410 und ihre betreffenden Daten als ein graphisches Objekt, das danach zusammen mit seinem eindeutigen Schlüssel 412 und den codierten Daten 414 in einer Datenstruktur 411 (z.B. einer Tabelle) registriert wird (Schritt 340), die in dem flüchtigen Speicher 154 (z.B. dem Cache-Subsystem des Servers) des Servers gespeichert wird. Bei anderen Ausführungsformen können die die Bitmap betreffenden Daten in die persistente Speicherung 162 des Servers geschrieben werden.
  • Unter der Annahme, daß später ausgegebene Befehle (wie zuvor beschrieben) nicht gegenüber dem Protokollbefehl (z.B. BITBLT) und zugeordneten graphischen Daten Vorrang haben, entfernt der Server-Agent 160 den BITBLT-Befehl und den eindeutigen Schlüssel 412 aus der Warteschlange (Schritt 360) und durchsucht die in dem flüchtigen Speicher 154 des Servers gespeicherte Tabelle 411, um zu bestimmen, ob der eindeutige Schlüssel 412 zuvor darin gespeichert wurde. Wenn sich der eindeutige Schlüssel 412 in der Tabelle 411 befindet, bestimmt der Server-Agent 160, daß die codierten Daten 414 zuvor bereits durch den Server 150 verarbeitet worden sind. Der Server-Agent 160 durchsucht dann die Tabelle 411 nach einem der codierten Bitmap 414 zugeordneten Index oder Handle 416. Wenn der Index 416 gefunden wurde, bestimmt der Server-Agent 160, daß die codierte Bitmap 414 nicht nur durch den Server 150 verarbeitet wurde, sondern daß sie auch zuvor zu dem Client-Agent 118 übertragen wurde. Wenn sich der Index 416 nicht in der Tabelle 411 befindet, bestimmt der Server-Agent 160, daß die codierte Bitmap 414 nicht zuvor übertragen wurde.
  • Bei einer Ausführungsform identifiziert der Index 416 eine bestimmte Stelle in dem flüchtigen Speicher 114 des Client, die die zuvor übertragene codierte Bitmap 414 speichert. Bei einer Ausführungsform liefert der Client-Agent 118 einen Schnappschuß seines verfügbaren flüchtigen Speichers 114 beim Einleiten einer Client-Server-Sitzung mit dem Server-Agent 160 an den Server-Agent 160. Nachdem die Sitzung hergestellt wurde, steuert der Server-Agent 160 danach die Zuteilung des verfügbaren flüchtigen Speichers 114 des Client. Auf diese Weise kann der Server-Agent 160 den flüchtigen Speicher 114 der codierten Bitmap 414 zuteilen und dem Index 416 als Zeiger oder Referenz auf den zugeteilten Speicher und als Kennung der zuvor übertragenen codierten Bitmap 414 behalten.
  • Wenn sich der Index 416 in der Tabelle 411 des Servers befindet, erhält der Server-Agent 160 den Index 416 (Schritt 370), komprimiert den Index 416 zusammen mit dem betreffenden Protokollbefehl (Schritt 380) und sendet die komprimierten Daten in einem an den Client-Agent 118 gerichteten Paket über das Netzwerk 140. Bei einer Ausführungsform ist der Index 416 kürzer (z.B. 16 Bit) als der eindeutige Schlüssel 412 (z.B. 64 Bit) und verbraucht folglich bei der Übertragung weniger Bandbreite. Nach dem Empfang und der Dekomprimierung des komprimierten Pakets greift der Client-Agent 118 auf die bestimmte Speicherstelle in dem flüchtigen Speicher 114 des Client zu, die durch den Index 416 spezifiziert wird, um die entsprechenden graphischen Daten 410 zu erhalten. Danach manipuliert der Client-Agent 118 die erhaltenen graphischen Daten 410 gemäß dem Befehl, der den Index 416 in dem komprimierten Paket begleitet hat. Auf diese Weise vermeidet die Erfindung die Notwendigkeit, relativ große Bitmap- oder andere graphische Daten, die zuvor während einer bestimmten Client-Server-Sitzung angetroffen wurden, neu zu übertragen.
  • Wenn sich der Index 416 nicht in der Tabelle 411 des Servers befindet (und somit nicht zuvor zu dem Client-Agent 118 übertragen wurde), teilt der Server-Agent 160 einen Teil des flüchtigen Speichers 114 des Client für die Bitmap 410 zu und bildet den Index 416, der die Speicherstelle identifiziert. Der Server-Agent 160 speichert die codierte Bitmap 414 (entsprechend der Bitmap 410), den neugebildeten Index 416 und den der codierten Bitmap 414 zugeordneten eindeutigen Schlüssel 412 dann in der Tabelle 411 des Servers. Danach komprimiert der Server-Agent 160 die codierte Bitmap 414, den Index 416 und betreffenden Befehl und sendet die komprimierten Daten in einem an den Client-Agent 118 gerichteten Paket. Nach Empfang und Dekomprimierung decodiert der Client-Agent 118 die codierten Daten 414 und speichert die resultierende Bitmap 410 in der durch den Index 416 identifizierten Speicherstelle und manipuliert die resultierende Bitmap 410 gemäß dem Begleitbefehl. Alternativ dazu speichert der Client-Agent 118 die codierten Daten 414 in der durch den Index 416 identifizierten Speicherstelle und decodiert die codierten Daten 414 nur, wenn notwendig zur weiteren Manipulation der resultierenden Bitmap 410. Auf diese Weise wird der Client-Speicher effizienter ausgenutzt.
  • Obwohl die Erfindung bisher so beschrieben wurde, daß der Server-Agent 160 die Speicherzuteilung und Indexbildung des Client steuert, ist es auch möglich, daß der Client-Agent 118 diese Funktionen ausführt. Wenn zum Beispiel zum ersten Mal während einer Client-Server-Sitzung eine Bitmap angetroffen und codiert, komprimiert und zu dem Client-Agent 118 übertragen wird (mit dem Begleitbefehl, aber ohne den Index 416), kann der Client-Agent 118 die bestimmte Stelle in dem flüchtigen Speicher 114 zum Speichern der Bitmap 410 bestimmen. Bei dieser Ausführungsform bildet der Client-Agent 118 einen (nicht gezeigten) Index, der die codierte Bitmap und ihre entsprechende Speicherstelle eindeutig identifiziert, und sendet den Index zu dem Server-Agent 160, der den Index an der entsprechenden Stelle in der Tabelle 411 des Servers speichert.
  • Weiter mit Bezug auf die Ausführungsform, bei der der Server-Agent 160 die Zuteilung des flüchtigen Speichers 114 des Client steuert, führt der Client-Agent 118 eine kreisförmige Warteschlange 421 aller durch den Server-Agent 160 spezifizierten Indizes gemäß auch von diesem empfangenen Warteschlangenwartungsbefehlen. Zum Beispiel kann der Server-Agent 160 den Client-Agent 118 anleiten, die Zuordnung eines vorbestimmten Blocks von Indizes 417 (z.B. entsprechend 128K Speicher) zu ihren jeweiligen graphischen Daten aufzuheben, um neu angetroffene graphische Objekte unterzubringen, wenn der flüchtige Speicher 114 des Client ansonsten voll abonniert ist. Danach erhält ein nachfolgendes neues graphisches Objekt einen zuvor benutzten Index.
  • Der Server-Agent 160 bestimmt außerdem gemäß vorbestimmten Kriterien, ob jedes durch die Neuzuweisung der Indizes beeinflußte graphische Objekt abgestoßen oder gesichert werden soll. Der Server-Agent 160 übermittelt diese Entscheidung zu dem Client-Agent 118. Wenn zum Beispiel der Server-Agent 160 die Indizes 0, 1, 2 und 3 neu zuweist und bestimmt, daß die den Handles 0 und 2 zugeordneten graphischen Objekte gelöscht oder in die persistente Speicherung 120 des Client verschoben und die den Handles 1 und 3 zugeordneten Objekte gesichert werden sollen, weist der Server-Agent 160 somit den Client-Agent 118 an, 0 und 2 zu löschen (oder zu verschieben) und 1 und 3 zu sichern. Der Client-Agent 118 verschiebt dann den Index jedes gesicherten Objekts an das Ende der kreisförmigen Warteschlange. Mindestens ein Index bleibt am Ende der Warteschlange für eine Zuweisung zu dem verschobenen Objekt verfügbar; das heißt, bei einer Ausführungsform zeigen Kopf und Ende der Warteschlange nicht auf denselben Index in der kreisförmigen Warteschlange. Ein verschobenes Objekt wird folglich sowohl an einer anderen physischen Speicherstelle gespeichert als auch einem anderen Index zugeordnet.
  • Die an der kreisförmigen Warteschlange 421 des Client ausgeführten Wartungsaktionen werden typischerweise häufiger, wenn die Client-Server-Sitzung andauert, und der begrenzte flüchtige Speicher 114 des Client 110 wird voll von zuvor übertragenen Bitmaps 410 und anderen graphischen Objekten. Die Anzahl zuvor übertragener graphischer Objekte 422, die aus dem flüchtigen Speicher 114 in die persistente Speicherung 120 des Client verschoben werden, nimmt folglich zu. Die vorliegende Erfindung verbessert die oben beschriebene Cache-Technik weiter, um nach Indicia (siehe den nachfolgenden „Fuzzy-Schlüssel") zuvor übertragener graphischer Objekte 422 zu suchen, die möglicherweise in der persistenten Speicherung 120 des Client gespeichert sind, wenn ein Index auf dieses graphische Objekt 422 nicht in der Tabelle 411 des Servers gefunden wird. Wenn solche Indicia gefunden werden, besteht eine starke Wahrscheinlichkeit, daß das zuvor übertragene graphische Objekt 422 immer noch lokal in dem Client-Agent 118 verankert und diesem zugänglich ist und daß das graphische Objekt 422 deshalb möglicherweise nicht neu von dem Server-Agent 150 zu dem Client-Agent 110 übertragen werden muß. Es muß beachtet werden, daß das Finden solcher Indicia eine starke Wahrscheinlichkeit, aber keine Bestimmtheit, ergibt, daß das graphische Objekt 422 lokal verankert ist, da möglicherweise andere Programme oder Client-Agents, die möglicherweise gemeinsam dieselbe persistente Speicherung 120 verwenden, das graphische Objekt 422 aus der persistenten Speicherung 120 gelöscht haben (z.B. um in der persistenten Speicherung Platz für ein neues Objekt zu schaffen).
  • Genauer gesagt und mit Bezug auf 4 und 5 durchsucht der Server-Agent 118, wenn der Server-Agent 160 keinen Index für eine bestimmte Bitmap 422 in der Indextabelle 411 des Servers finden kann, eine zweite Tabelle 418 (im folgenden „Fuzzy-Datenbank") nach einem Eintrag 419 (im folgenden „Fuzzy-Schlüssel"), der mit der Bitmap 422 assoziiert ist (Schritt 520). Bei einer Ausführungsform ist jeder Fuzzy-Schlüssel 419 eine Kombination des eindeutigen Schlüssels 412 in der Tabelle 411 des Servers und der Länge/Größe der zugeordneten Bitmap 422. Der Fuzzy-Schlüssel kann zum Beispiel über eine XOR-(exklusiv-OR-)Verknüpfung zwischen den zur Berechnung des eindeutigen 64-Bit-Schlüssels 412 in der Tabelle 411 des Servers verwendeten 32-Bit-CRSs und der Länge der mit dem eindeutigen Schlüssel 412 assoziierten Bitmap 422 gebildet werden. Die Fuzzy-Datenbank 418 liefert im wesentlichen eine Anfangsprädiktion darüber, ob in der persistenten Speicherung 120 des Clients 110 eine Kopie der Bitmap 422 gespeichert ist. Wenn die Fuzzy-Datenbank 418 den der Bitmap zugeordneten Fuzzy-Schlüssel 419 nicht enthält, ist wahrscheinlich keine Kopie der Bitmap 422 in der persistenten Speicherung 120 des Clients gespeichert und der Server-Agent 160 muß deshalb eine codierte Version der Bitmap 422 wie zuvor beschrieben zu dem Client-Agent 118 übertragen. Wenn dagegen die Fuzzy-Datenbank 418 den Fuzzy-Schlüssel 419 für die Bitmap 422 enthält, besteht eine starke Wahrscheinlichkeit, daß die Bitmap 422 in der persistenten Speicherung 120 des Clients gespeichert ist.
  • Wenn der Server-Agent 160 keinen Fuzzy-Schlüssel 419 in der Fuzzy-Datenbank 418 findet, der der Bitmap 422 zugeordnet ist, sendet der Server-Agent 160 genauer gesagt eine (der Bitmap 422 entsprechende) codierte Bitmap zu dem Client-Agent 118 mit einem Befehl, der von dem Client-Agent 118 anfordert, die Bitmap 422 (oder die entsprechende codierte Bitmap) in dem flüchtigen Speicher 114 zu speichern (Schritt 530). Außerdem und wie oben beschrieben nimmt der Server-Agent 160 den der Bitmap 422 zugeordneten Fuzzy-Schlüssel in die Fuzzy-Datenbank 418 auf (Schritt 540). Man beachte, daß die Reihenfolge der Schritte 530 und 540 umgekehrt werden kann, so daß die Fuzzy-Datenbank 418 vor der Übertragung des Befehls und der codierten Version der Bitmap 422 aktualisiert wird. Der Client-Agent 118 kopiert danach die Bitmap 422 in eine bestimmte Stelle in dem flüchtigen Speicher 114 des Client, wie durch den Server-Agent 160 spezifiziert (Schritt 560).
  • Bei einer Ausführungsform wartet der Server-Agent 160 nicht auf eine Bestätigung von dem Client-Agent 118, da die der Bitmap 422 zugeordnete codierte Bitmap erfolgreich empfangen und verarbeitet wurde. Statt dessen nimmt der Server-Agent 160 an, daß die codierte Bitmap ordnungsgemäß verarbeitet wurde, und streamt weiter Protokollbefehle, ohne auf die Rückgabe einer Bestätigungsnachricht von dem Client-Agent 118 zu warten. Der Server-Agent 160 verfolgt die Anzahl der seit der letzten gelesenen Bestätigung ausgegebenen Protokollbefehle. Der Server-Agent 160 blockiert die weitere Übertragung von Protokollbefehlen, wenn die Anzahl eine vordefinierte Schwelle erreicht. Durch die Schwelle kann der Client-Agent 118 eine obere Schranke für die Menge an Speicher herstellen, der zum Einreihen ankommender Protokollbefehle während des Betriebs im Recovery-Modus notwendig ist, einrichten wie später ausführlicher beschrieben werden wird.
  • Wenn ein Fuzzy-Schlüssel 419 in der Fuzzy-Datenbank 420 gefunden wird, sendet der Server-Agent 160 einen Befehl zu dem Client 110, der den Client-Agent 118 anweist, die dem Fuzzy-Schlüssel 419 zugeordnete Bitmap 422 aus der persistenten Speicherung 120 des Client in den flüchtigen Speicher 114 des Client zu kopieren (Schritt 550). Diesen Befehl begleitet nicht nur der Fuzzy-Schlüssel 419, der die interessierende Bitmap 422 eindeutig identifiziert, sondern auch der durch den Server-Agent 160 (wie zuvor beschrieben) erzeugte zugeordnete Index, um die spezifische Speicherstelle in dem flüchtigen Speicher 114 des Clients zu identifizieren, der die kopierte Bitmap 422 empfängt und speichert. Durch Kopieren der Bitmap 422 in den flüchtigen Speicher 114, statt einfach nur ihre Stelle in der persistenten Speicherung 120 aufrechtzuerhalten, kann die Erfindung schnell auf mehrere Anforderungen zum Entnehmen der Bitmap 422 reagieren, die in schneller Abfolge empfangen werden oder ohne viel dazwischentretende Cache-Aktivität, indem die Bitmap 422 beim Auftreten der ersten Anforderung kopiert wird.
  • Wenn die Bitmap 422 trotz der Anwesenheit des entsprechenden Fuzzy-Schlüssels 419 in der Fuzzy-Datenbank 418 nicht gerade in der persistenten Speicherung 120 gespeichert ist, gibt der Client-Agent 118 (als Antwort auf den zuvor von dem Server-Agent 160 ausgegebenen Befehl „LACHE_READ_DISK_OBJECT") eine Nachricht an den Server-Agent 160 zurück, die angibt, daß die Bitmap 422 fehlt. Nach dem Empfang dieser Nachricht sendet der Server-Agent 160 die der Bitmap 422 zugeordneten codierten Bitmapdaten neu zu dem Client-Agent 118 (Schritt 530). Man beachte, daß der Server-Agent 160 eine sequentielle Liste aller zu dem Client-Agent 118 gesendeten solchen LACHE_READ_DISK_OBJECT-Befehle, für die der Server-Agent 160 noch keine Bestätigung empfangen hat, führt, so daß der Server-Agent 160 eine empfangene Bestätigung ordnungsgemäß einer bestimmten Bitmap 422 zuordnen kann (um so die codierte Bitmap, die übertragen werden muß, ordnungsgemäß zu identifizieren).
  • In der Zwischenzeit tritt der Client-Agent 118 in einen Recovery-Modus ein, in dem der Client-Agent 118 weiter den ankommenden Protokollstrom liest, aber ihn nicht verarbeitet. Statt dessen konstruiert der Client-Agent 118 eine Warteschlange zum Empfang des Befehlsstroms, der weiter von dem Server 150 nach dem Befehl, der die Bitmap 422 nicht in der persistenten Speicherung 120 finden konnte, fließt. Der Client-Agent 118 speichert diese Befehle weiter in dieser Warteschlange im FIFO-Verfahren (first in, first out), bis die codierte Bitmap empfangen und erfolgreich decodiert wird, um die Bitmap 422 zu erzeugen. Um die fehlende Bitmap 422 in dem ankommenden Befehlsstrom zu erkennen, sucht der Client-Agent 118 nach einer Recovery-Markierung in den Protokollstrom begleitenden graphischen Daten. Bei einer Ausführungsform ist die Recovery-Markierung eine bestimmte Pseudozufallszahl, die mit dem eindeutigen Schlüssel der Bitmap 422 (d.h. dem 64-Bit-CRC und 32-Bit Länge) XOR-verknüpft wird. Der Server-Agent 160 erzeugt die Recovery-Markierung nach dem Empfang einer Keine-Bestätigung-Nachricht von dem Client-Agent 118. Wenn die Bitmap 422 ankommt, speichert der Client-Agent 118 sie in seinem flüchtigen Speicher 114 (Schritt 560) (d.h. wo die Bitmap 422 gespeichert worden wäre, wenn das Objekt zu Anfang in der persistenten Speicherung 120 vorhanden gewesen wäre) und beginnt mit der Verarbeitung der Befehle in der Warteschlange. Nach der Verarbeitung aller Befehle in der Warteschlange nimmt der Client-Agent 118 den ankommenden Strom von Protokollbefehlen, der von dem Server 150 über das Netzwerk 140 ankommt, wieder auf.
  • Ein Vorteil des oben beschriebenen Recovery-Prozesses besteht darin, daß er die Zeitverzögerungskosten vermeidet, die durch Cache-Systeme entstehen, die die Befehle in der Pipeline nach dem Auftreten einer Cache-Verfehlung ausräumen. Außerdem verursacht der Recovery-Prozeß keine Unterbrechung des Stroms von Protokollbefehlen und auch keine Zunahme des Verkehrs auf dem Kanal um mehr als nur einige wenige Byte mehr als das, was der Server 150 zu dem Client 110 gesendet hätte, wenn der Server-Agent 160 zu Anfang gewußt hätte, daß sich die Bitmap 422 nicht in der persistenten Speicherung 120 befand.
  • Bei einer Ausführungsform erleichtert die vorliegende Erfindung das Finden der Bitmap 422 in der persistenten Speicherung 120 des Clients durch Speichern der Bitmap 422 in einer Datei, deren Dateiname durch Codieren des Fuzzy-Schlüssels 419 zusammen mit der Bitmap 422 zugeordneten am-wenigsten-jüngst-verwendet- und/oder am-wenigsten-häufig-verwendet-Informationen. Auf diese Weise liefert der Dateiname selbst die gewünschten Informationen und es wird also vermieden, die Datei öffnen und lesen zu müssen. Die Codierung des Fuzzy-Schlüssels 419 als Teil des Dateinamens der Bitmap ermöglicht dem Client-Agent 118 außerdem eine schnelle Extraktion der Fuzzy-Schlüssel-Informationen aus dem Dateinamen und ein Senden dieser zu dem Server-Agent 160 während eines anfänglichen Bootens des Client 110 oder beim Start der Client/Server-Sitzung. Die extrahierten Fuzzy-Schlüssel können in einer Reihenfolge zu dem Server 150 übertragen werden, die zum Beispiel auf den am-wenigsten-jüngst-verwendet- und/oder am-wenigsten-häufig-verwendet-Informationen basiert, die auch einen Teil des Dateinamens bilden.
  • Bei einer Ausführungsform werden die Fuzzy-Schlüssel 419 in einer von drei Weisen zu der Fuzzy-Datenbank 418 hinzugefügt und aus dieser gelöscht. Erstens sendet beim Herauffahren des Client-Agent 118 oder bei Herstellung einer Client-Server-Sitzung mit dem Server-Agent 160 der Client-Agent 118 Befehle zu dem Server-Agent 160, um für jede entsprechende Bitmap 422 in der persistenten Speicherung 120 des Client (die Fuzzy-Schlüssel begleiten die Befehle des Client-Agent) Befehle zu dem Server-Agent 160 hinzuzufügen. Der Client-Agent 118 kann eine Sendeliste führen, die für das Senden von Fuzzy-Schlüsseln beim Herauffahren zu dem Server 150 eine Reihenfolge spezifiziert (z.B. auf der Basis von aus vorherigen Client-Server-Sitzungen bestimmten zuletzt-benutzt- oder am häufigsten-benutzt-Informationen). Die Sendeliste kann von dem Client-Agent 118 beim Lesen des Verzeichnisses seiner persistenten Speicherung 120 und dem Führen einer Repräsentation des Verzeichnisses in dem flüchtigen Speicher 114 gebildet werden. In einem Aspekt der Erfindung extrahiert der Client-Agent 118 Fuzzy-Schlüssel-Informationen aus dem Dateinamen der Datei, die die Bitmap 422 enthält, wenn die Repräsentation des Verzeichnisses erstellt wird. In vorbestimmten Abfrageintervallen fragt zweitens der Client-Agent 118 seine persistente Speicherung 120 ab, um die Bitmaps zu bestimmen, die sich gerade in seiner persistenten Speicherung 120 befinden (z.B. durch Suchen nach Dateinamen, die eine fuzzy-schlüssel-artige Struktur enthalten) und sendet dann Hinzufüge- und/oder Löschbefehle zu dem Server-Agent 160, so wie es notwendig ist, um die Fuzzy-Datenbank 418 des Servers zu aktualisieren. Wenn der Server-Agent 160 einen Befehl zum Schreiben einer Bitmap in die persistente Speicherung 120 des Client zu dem Client-Agent 118 sendet, erzeugt und speichert drittens der Server-Agent 160 einen entsprechenden Fuzzy-Schlüssel 419 in der Fuzzy-Datenbank 418.
  • Die Übertragung von Bitmap-Daten von dem Server 150 zu dem Client 110 kann einen relativ großen Zeitraum in Anspruch nehmen, insbesondere wenn die Netzwerkverbindung zwischen Client und Server relativ langsam ist. Bei einer Ausführungsform paßt die Erfindung die Funktionsweise des Servers an sich ändernde Netzwerkbedingungen an, indem die relative Geschwindigkeit des Netzwerks 140 bestimmt wird. Zum Beispiel kann der Server-Agent 180 durch dynamisches Bewerten der Bandbreite des Netzwerks 140 die Codierungs- und Komprimierungstechniken modifizieren, mit denen Bitmapdaten verarbeitet werden, um Bandbreitenanforderungen bei der Übertragung über ein langsames Netzwerk zu verringern. Die Erfindung verarbeitet Spalten von Bitmapdaten von links nach rechts und bereitet den Client-Cache 114 entsprechend vor. Während die codierte Bitmap 414 übertragen wird, kann die Übertragungszeit überwacht werden, um die Leistungsfähigkeit des Netzwerks 140 zu bestimmen. Wenn die Übertragungszeit einen Schwellenwert übersteigt, kann der Client-Agent 118 jegliche bereits in seinem Cache 114 gespeicherten Bitmap-Daten entnehmen und die übrigen Teile der Bitmapdaten entweder in Echtzeit, während sie in dem Cache 114 empfangen werden, oder in vorbestimmten Intervallen anzeigen. Auf diese Weise erkennt ein Benutzer des Clients, daß der Client 114 immer noch an den Bitmapdaten operiert und kann erkennen, daß sich der Client 110 nicht in einem Häng- oder erfolglos-/Fehler-Zustand befindet. Durch Approximieren der effektiven Netzwerkbandbreite für den Client 110 und entsprechendes Anpassen des Verhaltens des Servers 150 kann der Server-Agent 160 zum Beispiel den Client-Agent 118 anweisen, im Gegensatz zu einem Ganze-Spalte-Modus der Anzeige für eine bestimmte Bitmap einen ganze-Bitmap-Modus zu verwenden.
  • Genauer gesagt sendet der Server-Agent 160 einen Start_StopWatch-Befehl, gefolgt durch die codierten Bitmapdaten 414 und einen Start_StopWatch-Befehl zu dem Client-Agent 118. Der Client-Agent 118 reagiert auf den Start_StopWatch-Befehl, indem er den aktuellen Zeit-Tick liest und ihn in ein erstes Arrayelement schreibt. Nachdem die codierte Bitmap 414 empfangen wurde, reagiert der Client-Agent 118 auf den Start_StopWatch-Befehl, indem er den aktuellen Zeit-Tick liest und ihn in ein zweites Arrayelement schreibt. Ein Vergleich der Differenz der Zeit-Ticks zwischen den Befehlen Start_StopWatch und Stop_StopWatch liefert eine Schätzung der Zeit, die benötigt wurde, um die codierten Bitmapdaten zu empfangen. Die resultierende Zeitdifferenz wird dann zu dem Server-Agent 160 zurück übertragen. Diese Prozedur kann wiederholt werden, um einen geglätteten, laufenden Mittelwert zu berechnen, aus dem eine vernünftige Schätzung des effektiven Durchsatzes codierter Bitmapdaten bestimmt werden kann. Die Erfindung verwendet diese Durchsatzschätzung im Hinblick auf die Größe der codierten Daten für eine bestimmte Bitmap, um zu entscheiden, ob der ganze-Bitmap-Modus (z.B. wenn es wahrscheinlich ist, daß es weniger als 5 Sekunden dauert) oder fortschreitende ganze Spalten (z.B. wenn es wahrscheinlich ist, daß es mehr als 5 Sekunden dauert) benutzt werden soll. Obwohl diese Prozedur nicht zu einer 100% genauen Durchsatzschätzung führt, ergibt sie genug Granularität, um schnelle oder langsame Netzwerkverbindungen zu erkennen, aus denen verschiedene Anzeigearten bestimmt werden können. Mit einer ähnlichen Technik kann man die Zeit für große Schirm-zu-Schirm-Kopien am Clientende messen und eine ähnliche laufende Mittelwertschätzung der Leistungsfähigkeit des Client während dieser Operationen konstruieren, mit der man dann einen Producer-Thread auf dem Server 150 verlangsamen und ein Überlaufen an der Quelle verhindern kann, wenn der Server 150 Daten schneller erzeugt, als der Client 110 handhaben kann.
  • Bei einer Ausführungsform bildet die Erfindung Objekte, die groß genug sind, um die Daten einer gesamten Cache-Spalte zu enthalten. Zum Beispiel können die maximale Objektgröße und die Größe des Cache vom Server-Agent 160 beim Herauffahren der Client-Server-Sitzung als Funktion der Größe des Verbindungsfensters und seiner Farbtiefe auswählen, wobei für größere Schirmbilder und Tiefen größere Größen zugeteilt werden. Ferner können derzeitige Techniken zum Zerlegen einer Bitmap in Spalten zu Spalten mit einer Breite an einem oder beiden Enden der Bitmap führen, die kleiner als der Standard ist. Wenn diese vom Standard abweichenden Spalten zu schmal sind, sind sie möglicherweise nicht groß genug, um in der persistenten Speicherung 120 des Client behalten zu werden und werden also während nachfolgender Client/Server-Sitzungen nicht in dem Client 110 vorhanden sein. Die Erfindung vermeidet dieses Problem durch Zusammenführen der schmalen Spalten mit benachbarten Spalten, so daß nur breite Spalten verwendet werden und somit zum Beispiel alle Teile eines Splash-Schirmbilds in der persistenten Speicherung 120 enthalten sein werden. Bei einer Ausführungsform werden ganze Spalten dann in zwei Phasen angezeigt. Die erste Phase bereitet den Cache 114 mit etwaigen fehlenden Daten vor und die zweite Phase entnimmt dann die Spalte aus dem Cache 114, wobei möglicherweise mehr als ein Cache-gespeichertes Objekt benutzt wird. Die Spalte wird deshalb auf atomische Weise auf dem Anzeigeschirm 128 angezeigt. Wenn die Netzwerkverbindung langsam ist, können wie bereits besprochen die Spalten einzeln atomisch angezeigt werden, um dem Benutzer an dem Client 110 zu versichern, daß das System noch arbeitet. Alternativ dazu kann die gesamte Bitmap atomisch unter Verwendung einer ähnlichen Technik angezeigt werden, wenn eine schnelle Netzwerkverbindung erkannt wird.
  • Die oben besprochene Technik der laufenden Mittelwertschätzung kann auch dazu verwendet werden, schon lange existierende Überrollprobleme in einer Anwendung, die auf einem schnellen Server ausgeführt wird und die auf einem relativ langsamen Client angezeigt wird, zu lindern. Zu dem Überrollproblem kommt es zum Beispiel, wenn ein Benutzer des Client 110 mehrere Rollbefehle einleitet wie zum Beispiel durch mehrmaliges Anklicken der Rolleiste (oder Ziehen der Rolleiste) mit einer Maus 126. Da die Rollbefehle zu dem schnellen Server gesendet werden, führt der Server 150 die Rolloperationen aus und gibt die assoziierten Daten schneller zurück, als der langsame Client 110 (oder das langsame Netzwerk 140) die Ergebnisse auf seinem Anzeigeschirm 128 anzeigt. Wenn der Benutzer an dem Client 110 danach schließlich die gewünschte Schirmposition betrachtet und das Rollen stoppen möchte (durch Aufhören der Mausklicks und/oder dem Ziehen der Rolleiste), rollt die Anzeige weiter über die gewünschte Schirmposition hinaus. Dieser Überrollzustand entsteht, weil der schnelle Server 150 bereits die Rollbefehle verarbeitet und die entsprechenden Daten zu dem Client 110 zurückübertragen hat, aber die Daten an dem langsamen Client in eine Warteschlange eingereiht und noch nicht ganz verarbeitet wurden.
  • Die Erfindung lindert dieses Überrollproblem durch Verringern seiner Häufigkeit des Auftretens. Genauer gesagt mißt die Erfindung periodisch die Zeit für gewählte Rollereignisse in dem Server 150 (durch Rollen des Rahmenpuffers) und im Client 110 (über die oben beschriebenen StopWatch-Befehle), um eine laufende Mittelwertschätzung ihrer jeweiligen Geschwindigkeiten zu berechnen. Auf diese Weise schätzt der Server-Agent 160, wie lange ein bestimmtes Rollereignis dauern wird (Geschwindigkeit mal die Anzahl beteiligter Pixel), um im Server 150 verarbeitet zu werden, und wie lange erwartungsgemäß der Client 110 brauchen wird, und wenn die erwartete Verarbeitungszeit im Client 110 größer als die des Servers 150 ist, wird die Serververarbeitung durch die entsprechende Zeitdifferenz suspendiert, um so Client 110 und Server 150 im wesentlichen im Gleichschritt zu halten. Dieser Ansatz führt zu viel weniger Überrollereignissen aufgrund der Zeitverzögerung zwischen Client 110 und Server 150 im Vergleich zu der Anzahl von Überrollereignissen, die auftritt, wenn dieser Ansatz nicht implementiert wird.
  • Zusätzlich zu der Manipulation von Bitmapdaten kann die vorliegende Erfindung auch eine auf dem Server 150 erzeugte Textkette zu der Anzeige 128 des fernen Client 110 remoten. Mit Bezug auf 6 führt der Server 150 das Anwendungsprogramm 158 aus, das eine Textkette erzeugt, die zu dem Client 110 geremotet werden muß. Der Server-Agent 160 fängt die von dem Anwendungsprogramm 158 zu dem Serverbetriebssystem 156 gesendeten Befehle ab, die die Textkette betreffen und bewirkt, daß der Anzeigetreiber 612 des Server-Agent 160 die textbezogenen Informationen verarbeitet und eine Reihe von Protokollbefehlen 614 für die Anzeige einer Textkette 416 auf der Anzeige 128 des Clients einer Reihe von Protokollbefehlen 614 zu dem Client-Agent 118 zu senden. Zum Beispiel führt die Anwendung 158 Prozeduraufrufe aus, die die Textfarbe und die Hintergrundfarbe (hier „Hello!") setzen. Die Ausführung der TextOut-Prozedur 618 durch die Anwendung 158 löst die Ausführung der DrvTextOut-Prozedur 620 des Anzeigetreibers 612 aus. Wie gezeigt, definiert die DrvTextOut-Prozedur 620 die Clip-Region, das Grenzrechteck und den Textmodus (einschließlich Hintergrund- und Textfarbe) durch Ausführen einer Sequenz entsprechender Prozeduren.
  • Die Ausführung solcher Prozeduren bewirkt, daß der Anzeigetreiber 612 die entsprechenden Daten und Protokollbefehle (wie zum Beispiel eine Teilmenge der in Tabelle 1 angegebenen) zu dem Client-Agent 118 sendet. Die Protokollbefehle werden von dem Client-Agent 118 empfangen und verarbeitet und er führt Prozeduren 614 aus, die die Clip-Region, das begrenzende Rechteck, den Textmodus und das jedem anzuzeigenden Textzeichen zugeordnete Glyph spezifizieren. Man beachte, daß das einem Glyph-Objekt zugeordnete Protokoll nicht nur die Glyph-Bitmap selbst codiert, sondern auch ihre relativen Positionierungsinformationen. Der Server 150 kann außerdem andere Protokollbefehle zu dem Client-Agent 118 senden, die den Client-Agent 118 anweisen, die zugeordnete Glyphen in dem flüchtigen Speicher 114 und/oder in der persistenten Speicherung 120 wie zuvor beschrieben zu speichern. Der Client-Agent 118 erzeugt eine Bitmap, die der Größe des begrenzenden Rechtecks entspricht, das die Textkette umgibt, und setzt die Relativpositionen jedes Glyph an seine ordnungsgemäße Position innerhalb des begrenzenden Rechtecks. Nachdem das letzte Glyph empfangen und seine Position gesetzt wurde, weist der Client-Agent 118 das Client-Betriebssystem 116 an, die Bitmap auf dem Anzeigeschirm 128 des Client 110 zu zeichnen bzw. zu rendern.
  • Die vorliegende Erfindung unterstützt außerdem mehrere verschiedene Beschreibungen von Wegen (einer Menge von Linien oder Kurven, die als Teil der Beschreibung einer Linienzeichnungsoperation oder im Fall eines geschlossenen Weges zum Beschreiben einer Region verwendet wird), darunter Ellipsen, Beziers, Segmente, Streifen und Styles. Segmente bedeuten Liniensegmente, die bei Kombination einen Weg bilden. Ähnlich können Segmente weiter zu Streifen analysiert werden, die Teile des Liniensegments sind (entsprechend einer Reihe aufeinanderfolgender Pixel), die dieselben Winkeleigenschaften aufweisen. Die Codierungstechnik, mit der zum Beispiel Streifen repräsentiert werden, verwendet Relativortsinformationen und quantisierte Winkel zur Charakterisierung aufeinanderfolgender Streifen in bestimmten Liniensegmenten, wodurch nicht nur die Menge an graphischen Liniendaten minimiert wird, die codiert werden müssen, sondern auch eine besser wiederholbare Sequenz von Daten entsteht, die effizienter komprimiert werden kann. Die Zunahme der Wiederholbarkeit wird besonders verstärkt, wenn Streifen repräsentiert werden, die eine Form wie etwa ein Rechteck oder einen Kreis bilden. Das für Streifen verwendete Protokoll ermöglicht dem Client-Agent 118 außerdem, einen Weg unabhängig und ohne Kenntnis des von dem Server-Agent 160 zum Umsetzen des Weges in eine Sequenz von Pixel verwendeten Algorithmus genau wiederzugeben.
  • Mit Bezug auf das nicht einschränkende Beispiel in 7A umfaßt ein Weg 700 zwei Liniensegmente 710, 720, die perfekt linear zu sein scheinen. Für Fachleute ist jedoch erkennbar, daß Liniesegmente, die nicht perfekt horizontal, vertikal oder 45 Grad diagonal liegen, durch eine entsprechende Reihe von Streifen approximiert werden müssen, wenn der Weg 700 auf einem Anzeigeschirm 128 angezeigt wird (1). Diese Approximation ist notwendig, weil die einzelnen Pixel auf dem Anzeigeschirm 128 von höchstens acht anderen Pixeln umgeben werden, die entweder perfekt horizontal, vertikal oder 45 Grad diagonal relativ zueinander liegen und alle Liniensegmente 710, 720, die in einem anderen Gesamtwinkel liegen, müssen also durch eine Reihe von Streifen approximiert werden. Folglich und mit Bezug auf den beispielhaften Weg 700 von 7B besteht das Segment 710 aus vier Streifen 712, 714, 716, 718, wobei die einzelnen Pixel (durch quadratische Blöcke abgebildet) jedes Streifens 712, 714, 716, 718 in 45-Grad-Diagonalen relativ zueinander organisiert sind und das Segment 720 besteht aus fünf Streifen 722, 724, 726, 728, 730 wobei die einzelnen Pixel jedes Streifens 722, 724, 726, 728, 730 horizontal relativ zueinander organisiert sind.
  • Bei einer Ausführungsform und mit Bezug auf 7B und 8A analysiert der Server-Agent 160 den Weg 700 zu Liniensegmenten 710, 720, die jeweils eine bestimmte Länge und einen bestimmten Winkel aufweisen (Schritt 810). Dann wird ein Array von Liniensegmenten gebildet, um quantisierte Segmentinformationen (die im folgenden als ein quantisierter Winkel oder „QA" bezeichnet werden) für jedes Liniensegment 710, 720 zu speichern (Schritt 820). Anstatt den einem bestimmten Segment 710, 720 zugeordneten Absolutwinkel zu berechnen, bestimmt der Server-Agent 160 auch mit Bezug auf 8B statt dessen, in welchen der 16 quantisierten Winkel 880 der absolute Winkel liegt. Diese Quantisierungstechnik bestimmt, in welchen sechzehn der Umrandung der Endpunkt für ein Liniensegment beginnend mit der Mitte eines Kreises (einem Radius) liegt. Diese Informationen können als das vorzeichenlose Delta aus dem letzten in diesem Kontext spezifizierten Segment ausgedrückt werden (Mod 16, initialisiert auf 0). Diese Technik führt zu einer wiederholbareren Sequenz (als bei Verwendung des Absolutwinkels), insbesondere wenn die Segmente eine Form wie etwa ein Rechteck oder einen Kreis bilden.
  • Der Server-Agent 160 analysiert dann jedes Liniensegment 710, 720 zu Streifen (712, 714, 716, 718; 722, 724, 726, 728 bzw. 730) (Schritt 830). Die Länge jedes Streifens eines bestimmten Segments 710, 720 wird danach in einem Streifenlängenarray zur weiteren Verarbeitung gespeichert (Schritt 840). Bei einer Ausführungsform wird der Algorithmus bLine von Windows NT zum Zerlegen des Weges 700 in ein Array von Streifen verwendet. Der NT-Algorithmus bestimmt den quantisierten Winkel jedes Streifens und Segments, so daß Segmenten oder Streifen, die auf einer Grenze zwischen quantisierten Winkelbereichen liegen, keine Mehrdeutigkeit zugeordnet ist. Der NT-Algorithmus klappt eine nach oben gehende Linie so senkrecht um, daß die Linie immer nach unten geht (der y-Wert nimmt weiter zu) und setzt das Flag FL_FLIP_V. Ähnlich wird eine nach links gehende Linie horizontal so umgeklappt, daß sie immer nach rechts geht (der x-Wert nimmt immer zu) und setzt das Flag FL_FLIP_H. Das von diesem Algorithmus ausgegebene Array von Streifen fällt folglich in einen einzigen Quadranten. Bei dieser konkreten Ausführungsform macht der Server-Agent 160 die Umklappoperation des NT-Algorithmus rückgängig, so daß das Array von Streifen wieder auf ihre vorherigen/ursprünglichen quantisierten Winkel zurückgeklappt wird, um sicherzustellen, daß die Endpunkte eines vorherigen Streifens und der Startpunkt des nächsten nachfolgenden Streifens zusammenfallen, um so zu vermeiden, die Startkoordinate des nächsten nachfolgenden Streifens senden zu müssen.
  • Der Server-Agent 160 codiert dann die Anfangskoordinate des Weges 700 zusammen mit den quantisierten Winkeldaten in dem Liniensegmentarray und Pixellängendaten in dem Streifenmengenarray, um einen Protokollstrom zu bilden (Schritt 850). Die codierten Daten werden dann einem Kompressionsalgorithmus unterzogen, um die Datenredundanzen in dem Protokollstrom auszunutzen (Schritt 860), und die komprimierten graphischen Liniendaten werden danach zur Decodierung und weiteren Verarbeitung zu dem Client-Agent 118 gesendet (Schritt 870).
  • Mit Bezug auf die beispielhafte Darstellung in 9 und die quantisierten Winkelinformationen von 10 umfaßt das Liniensegment 710 vier Streifen 712, 714, 716, 718, die innerhalb des quantisierten Winkels 1 positioniert sind. Die Anfangskoordinate des Weges 700, die von dem Server-Agent 160 als Teil der komprimierten graphischen Liniendaten zu dem Client-Agent 118 gesendet werden, entsprechen dem ersten Pixel im Streifen 712 (positioniert am Ursprung von 880). Die graphischen Liniendaten umfassen ferner die Pixellänge jedes Streifens 712, 714, 716, 718 in dem Segment 710.
  • Da das Segment 710 keiner perfekten Horizontalen, Vertikalen oder 45-Grad-Diagonalen entspricht, wird jeder nachfolgende Streifen 714, 716 und 718 in dem Segment 710 wie in 10 angegeben um einen bestimmten Deltawert eingestellt, um den Gesamtwinkel des Segments 710 ordnungsgemäß zu approximieren. Bei dem vorliegenden Beispiel zeigt der Client-Agent 118, um von dem letzten Punkt in dem vorherigen Streifen 712 zu dem Anfangspunkt des nächsten nachfolgenden Streifen 714 zu gelangen, den Streifen 714 im wesentlichen bei demselben x-Wert und bei einem zunehmenden y-Wert an. Dieser Prozeß wird für jeden Schritt in dem Segment 710 sowie für die Streifen in dem Segment 720, die innerhalb des QA 15 positioniert sind, wiederholt.
  • Entsprechend und bei einer Ausführungsform umfaßt der von der vorliegenden Erfindung bei der Verarbeitung von Streifen erzeugte Protokollstrom die Startposition des Weges, einen (etwaigen) Index, der einer Speicherstelle in dem flüchtigen Speicher 114 (1) des Client entspricht, die bereits möglicherweise einen zu einem bestimmten früheren Zeitpunkt in der Client-Server-Sitzung gesendeten bestimmten Streifen speichern kann, die Anzahl der Segmente in dem Weg, den quantisierten Winkel jedes Segments (woraus die in 10 wiedergegebenen Deltawerte bestimmt werden), die Länge jedes Streifens zusammen mit bestimmten Steuerinformationen und quantisierte Winkeldeltainformationen, die zu dem quantisierten Winkel eines ersten oder vorherigen Segments addiert werden, um den Client-Agent 118 über den quantisierten Winkel nachfolgender Segment zu informieren. Auf diese Weise vermeidet die Erfindung, Koordinaten- und Absolutwinkelinformationen für jeden Streifen in dem Weg senden zu müssen. Ferner ermöglicht die oben besprochene Streifenverarbeitungstechnik die effiziente Komprimierung graphischer Liniendaten durch Ausnutzen der sich wiederholenden Beschaffenheit der Daten in dem unkomprimierten Protokollstrom.
  • Die vorliegende Erfindung kann auch auf Bitmaps angewandt werden, die in einer Onscreen-Oberfläche angezeigt werden, und auch auf Bitmaps in einer Außerbildschirm-Oberfläche (z.B. die in dem Speicher eines Videoanzeigeadapters und/oder in einem im voraus zugeteilten Teil des flüchtigen Speichers 114 des Client gespeichert werden, woran durch eine Graphikumsetzungsbibliothek operiert werden wird). Außerbildschirm-Oberflächen werden häufig von Anwendungen wie zum Beispiel Microsoft Word gebildet, die Bitmaps in die Außerbildschirm-Oberfläche schreiben, bis die Oberfläche vollständig ist, und an diesem Punkt wird die Außerbildschirm-Oberfläche auf dem Anzeigeschirm 128 des Client 110 in Endform wie eine Onscreen-Oberfläche angezeigt. Außerbildschirm-Oberflächen liefern deshalb häufig die Quelle für Onscreen-Oberflächen.
  • Bei einer Ausführungsform und mit Bezug auf Außerbildschirm-Oberflächen informiert der Client-Agent 118 den Server-Agent 160 über die Menge an für Außerbildschirm-Oberflächen verfügbarem lokalen flüchtigen Speicher 114, so daß der Server-Agent 160 keine Außerbildschirm-Oberfläche bildet, die größer als der verfügbare Speicher des Clients ist. Danach bildet der Server-Agent 160 eine Außerbildschirm-Oberfläche und sendet sie mit Anweisungen zum Speichern der Oberfläche in dem flüchtigen Speicher 114 des Client-Agent 118 zu dem Client-Agent 118. Der Client-Agent 118 wählt einen bestimmten Teil seines flüchtigen Speichers 114 und teilt diesen der Oberfläche zu und speichert die Oberfläche darin. Jede Außerbildschirm-Oberfläche besitzt eine Menge zugeordneter Attribute, wie zum Beispiel eine Kennung, die die Oberfläche eindeutig identifiziert, ein Pixelformat, Abmessungen, Zeichnungsattribute, Protokollzustand usw.
  • Um den flüchtigen Speicher 114 des Clients effizient zu benutzen, kann der Server-Agent 160 bei einer Ausführungsform Befehle an den Client-Agent 118 ausgeben, die anweisen, daß bestimmte Operationen an der Außerbildschirm-Oberfläche nur dann ausgeführt werden, wenn die Außerbildschirm-Oberfläche mit der Onscreen-Oberfläche in Wechselwirkung tritt (z.B. beim Aktualisieren der Onscreen-Oberfläche mit Bitmapdaten von der Außerbildschirm-Oberfläche). Wenn die einzige Interaktion zwischen der Onscreen-Oberfläche und der Außerbildschirm-Oberfläche eine letzte Kopie zu dem Schirm ist, können die Operationen auf die Onscreen-Oberfläche abgezielt werden und verringern somit die Menge an Bitmapdaten, die über das Netzwerk 140 übertragen werden muß. Alternativ dazu kann die Quelle der Onscreen-Oberfläche so eingeschränkt werden, daß sie entweder einer fern im Server 150 gespeicherten Außerbildschirm-Oberfläche oder einer lokal in dem Client 110 gespeicherten Außerbildschirm-Oberfläche entspricht. Zu typischen Operationen an der Außerbildschirm-Oberfläche, die von dem Server-Agent 160 angefordert werden, gehört das Aktualisieren der Bitmap in der Außerbildschirm-Oberfläche mit aktualisierten Text-, Linien- oder anderen Daten.
  • Bei einer Ausführungsform und mit Bezug auf 11 fängt der Server-Agent 160 an das Server-Betriebssystem 156 gestellte Aufrufe, die die Erzeugung einer Außerbildschirm-Oberfläche betreffen, ab und der Server-Agent 160 bildet ein Duplikat der Oberfläche und speichert es zusammen mit seinen Attributen in dem lokalen Speicher des Servers. Der Server-Agent 160 gibt dann einen Befehl an den Client-Agent 118 aus, die Außerbildschirm-Oberfläche in dem flüchtigen Speicher 114 des Clients zu bilden (Schritt 1102). Den Befehl begleitet eine codierte Repräsentation der Außerbildschirm-Oberfläche, wenn es sich um die erste Instanz der Außerbildschirm-Oberfläche handelt, oder ein Index oder Fuzzy-Schlüssel, wenn die Außerbildschirm-Oberfläche zuvor während der Client-Server-Sitzung übertragen worden ist (Schritt 1104). Der Server-Agent 160 weist den Client-Agent 118 an, die durch den Index bzw. die Fuzzy-Key-Indicia oder codierte Oberfläche identifizierten graphischen Daten in die Außerbildschirm-Oberfläche des Clients zu integrieren (Schritt 1106). Der Client-Agent 118 reagiert auf die Anweisungen des Server-Agent, indem er die identifizierte Oberfläche/Bitmap in die Außerbildschirm-Oberfläche des Clients kopiert (Schritt 1108). Wenn ein von dem Server-Agent 160 ausgegebener BITBLT-Befehl erfolglos bleibt, zum Beispiel eine Bitmap in der Außerbildschirm-Oberfläche des Clients zu bilden, wenn zum Beispiel ein Speicherzuteilungsfehler auftritt, sendet der Client-Agent 118 einen C2S_OSS_Error-Befehl zu dem Server-Agent 160, der den erfolglos-Zustand anzeigt (Schritt 1110). Als Reaktion auf den Fehlerzustand verwendet der Server-Agent 160 seine lokale Kopie der Außerbildschirm-Oberfläche als Quelle für die Aktualisierung der Außerbildschirm-Oberfläche des Clients. Der Client-Agent 118 verwendet die von der lokalen Kopie des Servers empfangenen Informationen zur Aktualisierung der Außerbildschirm-Oberfläche auf dem Client 110 und zur Korrektur etwaiger verfälschter/schmutziger Regionen der Außerbildschirm-Oberfläche. Alternativ sendet, wenn ein Fehlerzustand angetroffen wird, der Server-Agent 160 seine lokale bzw. Duplikatkopie der Außerbildschirm-Oberfläche (Schritt 1112) zu dem Client-Agent 118 und befiehlt dem Client-Agent 118, das Duplikat der Oberfläche als Quelle für die Aktualisierung der Onscreen-Oberfläche des Clients zu verwenden und die verfälschte Außerbildschirm-Oberfläche im Client zu verwerfen (1114).
  • Obwohl die vorliegende Erfindung mit Bezug auf spezifische Einzelheiten beschrieben wurde, ist nicht beabsichtigt, daß solche Einzelheiten als den Schutzumfang der Erfindung einschränkend betrachtet werden sollen, außer insofern, als sie in den beigefügten Ansprüchen enthalten sind.

Claims (28)

  1. Verfahren zum effizienten Verringern der Menge an sich wiederholenden graphischen Daten, die zu einer abgesetzten Anzeigeeinrichtung (128) übertragen werden, wobei das Verfahren die folgenden Schritte umfaßt: Durchsuchen einer Tabelle (411) nach einem Index (416), der einem graphischen Datenelement zugeordnet ist, wobei die Anwesenheit des Index (416) in der Tabelle (411) eine vorherige Übertragung des graphischen Datenelements anzeigt; dadurch gekennzeichnet, daß das Verfahren weiterhin die folgenden Schritte umfaßt: wenn der Index (416) nicht in der Tabelle (411) gefunden werden kann, Durchsuchen einer Fuzzy-Datenbank (418) nach einem dem graphischen Datenelement zugeordneten Fuzzy-Schlüssel (419), wobei die Anwesenheit des Fuzzy-Schlüssels (419) in der Fuzzy-Datenbank (418) eine Wahrscheinlichkeit anzeigt, daß das graphische Datenelement in einem an die abgesetzte Anzeigeeinrichtung (128) angekoppelten persistenten Speicher (120) gespeichert ist; und wenn der Fuzzy-Schlüssel (419) gefunden wird, Übertragen des Fuzzy-Schlüssels zu einem dem persistenten Speicher (120) und der abgesetzten Anzeigeeinrichtung (128) zugeordneten Agent (118).
  2. Verfahren nach Anspruch 1, wobei das graphische Datenelement einer codierten Bitmap entspricht.
  3. Verfahren nach Anspruch 1, wobei das graphische Datenelement einer Glyphe entspricht.
  4. Verfahren nach Anspruch 1, wobei das graphische Datenelement einem Streifen entspricht.
  5. Verfahren nach Anspruch 1, wobei das graphische Datenelement einer Außerbildschirm-Oberfläche entspricht.
  6. Verfahren nach Anspruch 1, wobei der Index (416) eine Speicherstelle in einem an die abgesetzte Anzeigeeinrichtung (128) angekoppelten Cache (114) identifiziert, wobei der Agent (128) die vorherige Übertragung des graphischen Datenelements zuvor an der Speicherstelle gespeichert hat.
  7. Verfahren nach Anspruch 6, wobei die Größe des graphischen Datenelements nicht größer als eine maximale Cache-Objektgröße ist.
  8. Verfahren nach Anspruch 1, wobei der Fuzzy-Schlüssel (419) einer Länge des graphischen Datenelements entspricht.
  9. Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: Empfangen mehrerer Fuzzy-Schlüssel (419) von dem Agent (118) als Reaktion auf das Einleiten einer Session mit dem Agent (118).
  10. Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: periodisches Empfangen mehrerer Fuzzy-Schlüssel (419) von dem Agent (118).
  11. Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: wenn der Index (416) gefunden wird, Übertragen des Index (416) zu dem Agent (118).
  12. Verfahren nach Anspruch 1, weiterhin mit den folgenden Schritten: wenn der Fuzzy-Schlüssel (419) nicht gefunden werden kann, Bilden des Fuzzy-Schlüssels (419); Speichern des Fuzzy-Schlüssels (419) in der Fuzzy-Datenbank (418); Übertragen des graphischen Datenelements zu dem Agent (118); und Anweisen des Agent (118), das graphische Datenelement in einem an den Agent (118) angekoppelten flüchtigen Speicher (114) zu speichern.
  13. Verfahren nach Anspruch 12, weiterhin mit dem folgenden Schritt: Speichern des graphischen Datenelements in einer in dem persistenten Speicher (120) verankerten Datei, wobei die Datei einen Dateinamen aufweist, der dem Fuzzy-Schlüssel (419) entspricht.
  14. Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: Anweisen des Agent, das graphische Datenelement aus dem persistenten Speicher in einen an den Agent (118) und die abgesetzte Anzeigeeinrichtung (128) angekoppelten Cache zu kopieren.
  15. Verfahren nach Anspruch 14, weiterhin mit dem folgenden Schritt: wenn der Agent das graphische Datenelement nicht kopieren kann, Übertragen des graphischen Datenelements und einer Behebungsmarkierung zu dem Agent.
  16. Verfahren nach Anspruch 1, weiterhin mit den folgenden Schritten: Einreihen eines dem graphischen Datenelement zugeordneten Befehls zusammen mit mehreren anderen Befehlen in einer Warteschlange; Bestimmen, ob der eingereihte, dem graphischen Datenelement zugeordnete Befehl mindestens einen der mehreren anderen eingereihten Befehle ablöst; und wenn bestimmt wird, daß der eingereihte, dem graphischen Datenelement zugeordnete Befehl den mindestens einen der mehreren anderen eingereihten Befehle ablöst, Entfernen des mindestens einen der mehreren anderen eingereihten Befehle aus der Warteschlange.
  17. Verfahren nach Anspruch 16, wobei der eingereihte, dem graphischen Datenelement zugeordnete Befehl nach dem mindestens einen der mehreren anderen eingereihten Befehle in der Warteschlange plaziert ist.
  18. Verfahren nach Anspruch 1, weiterhin mit den folgenden Schritten: wenn das dem übertragenen Fuzzy-Schlüssel (419) zugeordnete graphische Datenelement nicht gefunden werden kann, speichert der Agent (118) einen dem graphischen Datenelement zugeordneten Befehl zusammen mit mehreren später empfangenen Befehlen in einer an den Agent (118) angekoppelten Warteschlange; Empfangen des graphischen Datenelements; und Verarbeiten des dem graphischen Datenelement zugeordneten Befehls und mindestens eines Teils der in der Warteschlange gespeicherten später empfangenen Befehle.
  19. System zum effizienten Verringern der Menge an sich wiederholenden graphischen Daten, die zu einer abgesetzten Anzeigeeinrichtung (128) übertragen werden, wobei das System folgendes umfaßt: eine Tabelle (411), die einen Index (416) speichert, der einem graphischen Datenelement zugeordnet ist, wobei die Anwesenheit des Index (416) in der Tabelle (411) eine vorherige Übertragung des graphischen Datenelements anzeigt; dadurch gekennzeichnet, daß das System weiterhin folgendes umfaßt: eine Fuzzy-Datenbank (418), die einen dem graphischen Datenelement zugeordneten Fuzzy-Schlüssel (419) speichert, wobei die Anwesenheit des Fuzzy-Schlüssels (419) in der Fuzzy-Datenbank eine Wahrscheinlichkeit anzeigt, daß die graphischen Daten in einem an die abgesetzte Anzeigeeinrichtung (128) angekoppelten persistenten Speicher (120) gespeichert sind; und einen Server-Agent (160), der im Betrieb dafür ausgelegt ist, die Fuzzy-Datenbank (418) nach dem Fuzzy-Schlüssel (419) zu durchsuchen, wenn der Index (416) nicht in der Tabelle (411) gefunden werden kann und, wenn der Fuzzy-Schlüssel (419) gefunden wird, den Fuzzy-Schlüssel (419) zu einem dem persistenten Speicher (120) und der abgesetzten Anzeigeeinrichtung (128) zugeordneten Cache zu übertragen.
  20. System nach Anspruch 19, wobei das graphische Datenelement einer codierten Bitmap entspricht.
  21. System nach Anspruch 19, wobei das graphische Datenelement einer Glyphe entspricht.
  22. System nach Anspruch 19, wobei das graphische Datenelement einem Streifen entspricht.
  23. System nach Anspruch 19, wobei das graphische Datenelement einer Außerbildschirm-Oberfläche entspricht.
  24. System nach Anspruch 19, wobei der Index (416) eine Speicherstelle in einem an die abgesetzte Anzeigeeinrichtung (128) angekoppelten Cache (114) identifiziert.
  25. System nach Anspruch 19, wobei die Größe des graphischen Datenelements nicht größer als die maximale Cache-Objektgröße ist.
  26. System nach Anspruch 19, wobei der Fuzzy-Schlüssel einer Länge des graphischen Datenelements entspricht.
  27. System nach Anspruch 19, weiterhin mit einer in dem persistenten Speicher (120) verankerten Datei, wobei die Datei einen Dateinamen aufweist, der dem Fuzzy-Schlüssel entspricht.
  28. System nach Anspruch 19, weiterhin mit einer Warteschlange, wobei der Server-Agent im Betrieb dafür ausgelegt ist, wenn der Fuzzy-Schlüssel nicht in der Fuzzy-Datenbank gefunden werden kann, in einer Warteschlange einen dem graphischen Datenelement zugeordneten Befehl zu speichern, wobei der Client-Agent (118) im Betrieb dafür ausgelegt ist, den zugeordneten Befehl bei Empfang des graphischen Datenelements zu verarbeiten.
DE60109602T 2000-05-26 2001-05-29 Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten Expired - Lifetime DE60109602T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US20753200P 2000-05-26 2000-05-26
US207532P 2000-05-26
US22521700P 2000-08-14 2000-08-14
US225217P 2000-08-14
PCT/US2001/017323 WO2001092973A2 (en) 2000-05-26 2001-05-29 Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism

Publications (2)

Publication Number Publication Date
DE60109602D1 DE60109602D1 (de) 2005-04-28
DE60109602T2 true DE60109602T2 (de) 2006-04-27

Family

ID=26902328

Family Applications (4)

Application Number Title Priority Date Filing Date
DE60109631T Expired - Lifetime DE60109631T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112103T Expired - Lifetime DE60112103T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112107T Expired - Lifetime DE60112107T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60109602T Expired - Lifetime DE60109602T2 (de) 2000-05-26 2001-05-29 Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten

Family Applications Before (3)

Application Number Title Priority Date Filing Date
DE60109631T Expired - Lifetime DE60109631T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112103T Expired - Lifetime DE60112103T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112107T Expired - Lifetime DE60112107T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten

Country Status (11)

Country Link
US (7) US20020029285A1 (de)
EP (1) EP1285517B1 (de)
JP (1) JP2004501445A (de)
KR (4) KR100783217B1 (de)
AU (3) AU2001274972A1 (de)
CA (1) CA2408924A1 (de)
DE (4) DE60109631T2 (de)
ES (4) ES2246433T3 (de)
HK (1) HK1049415B (de)
IL (3) IL152797A0 (de)
WO (2) WO2001093525A2 (de)

Families Citing this family (204)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7555529B2 (en) 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6928469B1 (en) * 1998-12-29 2005-08-09 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US7127425B1 (en) * 2000-01-14 2006-10-24 H & R Block Tax Services, Inc. System and method for providing a loan to a taxpayer based on a pre year-end tax refund
US20020029285A1 (en) * 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7603407B2 (en) * 2000-08-17 2009-10-13 Sun Microsystems, Inc. Method and system for registering binary data
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US20030017846A1 (en) * 2001-06-12 2003-01-23 Estevez Leonardo W. Wireless display
JP2005501355A (ja) * 2001-08-27 2005-01-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ キャッシュ方法
US7589737B2 (en) * 2001-10-31 2009-09-15 Hewlett-Packard Development Company, L.P. System and method for communicating graphics image data over a communication network
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US7499030B2 (en) * 2001-11-30 2009-03-03 Texas Instruments Incorporated Graphics initialization for wireless display devices
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
FR2834104B1 (fr) * 2001-12-20 2004-10-15 France Telecom Procede de transmission d'objets entre un serveur et un terminal client mettant en oeuvre une gestion de cache, systeme de transmission, serveur et terminal correspondants
KR20030060713A (ko) * 2002-01-11 2003-07-16 (주) 씨네티아 정보통신 씬 클라이언트/서버시스템의 폰트캐쉬 제어방법
US7035091B2 (en) * 2002-02-28 2006-04-25 Accenture Global Services Gmbh Wearable computer system and modes of operating the system
WO2003075116A2 (en) 2002-03-01 2003-09-12 T5 Labs Ltd Centralised interactive graphical application server
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US8135843B2 (en) * 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
KR100490401B1 (ko) * 2002-03-26 2005-05-17 삼성전자주식회사 TC(Thin-Client)환경에서 영상 처리 장치 및 방법
US20030195922A1 (en) * 2002-04-10 2003-10-16 Alcatel SNMP trap and inform shaping mechanism
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
EP1540957A4 (de) * 2002-04-30 2009-07-08 Gen Dynamics Advanced Inf Sys Verfahren und vorrichtung zur seriellen inline-datenverschlüsselung
US7245665B2 (en) * 2002-05-30 2007-07-17 Matsushita Electric Industrial Co., Ltd. Wireless remote operation system
US20040006633A1 (en) * 2002-07-03 2004-01-08 Intel Corporation High-speed multi-processor, multi-thread queue implementation
US20040008205A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging single-color images for improved compression
US8370420B1 (en) * 2002-07-11 2013-02-05 Citrix Systems, Inc. Web-integrated display of locally stored content objects
US7046250B1 (en) 2002-07-11 2006-05-16 Sun Microsystems, Inc. Caching fonts for improved bandwidth of transmitted text
US20040008213A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging multicolor images for improved compression
US20040008214A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging repeating images for improved compression
US20050102352A1 (en) * 2002-09-24 2005-05-12 Junbiao Zhang Constrained user interface in a communications network
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
CN1765101B (zh) * 2003-04-23 2010-09-01 意大利电信股份公司 用于为移动终端提供多媒体和交互业务的客户机-服务器系统及其方法
US7760729B2 (en) * 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
EP1665798A1 (de) * 2003-09-12 2006-06-07 Citrix Systems, Inc. Verfahen und vorrichtung zur erzeugung graphischer und media-displays in einem thin-client
US7877390B2 (en) * 2003-10-20 2011-01-25 International Business Machines Corporation Systems and methods for providing autonomous persistent storage systems
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8868716B2 (en) * 2003-11-26 2014-10-21 General Electric Company Method and apparatus for dynamically adapting image updates based on network performance
JP2005184165A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム
US7631071B2 (en) * 2004-01-23 2009-12-08 Microsoft Corporation Mechanism for ensuring processing of messages received while in recovery mode
KR100574502B1 (ko) * 2004-02-06 2006-04-27 삼성전자주식회사 클라이언트에 실행된 윈도우의 상태에 따라데이터전송률을 조정하는 홈네트워크 시스템 및데이터전송률 조정방법
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US20060028479A1 (en) * 2004-07-08 2006-02-09 Won-Suk Chun Architecture for rendering graphics on output devices over diverse connections
US7287139B2 (en) * 2004-07-23 2007-10-23 International Business Machines Corporation Maintenance of persistent data using bitmaps
US8914522B2 (en) * 2004-07-23 2014-12-16 Citrix Systems, Inc. Systems and methods for facilitating a peer to peer route via a gateway
KR20070037650A (ko) * 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 종단에서 게이트웨이로 패킷을 라우팅하기 위한 방법 및시스템
WO2006020823A1 (en) * 2004-08-13 2006-02-23 Citrix Systems, Inc. A method for maintaining transaction integrity across multiple remote access servers
US7483963B2 (en) * 2004-08-20 2009-01-27 Research In Motion Limited Method and system for configuring a client on host devices by utilizing an interface between a configuration application and host device drivers on a configuring device
US7774789B1 (en) 2004-10-28 2010-08-10 Wheeler Thomas T Creating a proxy object and providing information related to a proxy object
US7823169B1 (en) 2004-10-28 2010-10-26 Wheeler Thomas T Performing operations by a first functionality within a second functionality in a same or in a different programming language
US8266631B1 (en) 2004-10-28 2012-09-11 Curen Software Enterprises, L.L.C. Calling a second functionality by a first functionality
US20070055386A1 (en) * 2004-11-03 2007-03-08 Rockwell Automation Technologies, Inc. Abstracted display building method and system
US7589731B2 (en) * 2004-11-15 2009-09-15 Hewlett-Packard Development Company, L.P. Graphics systems and methods
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US7716683B2 (en) * 2004-12-30 2010-05-11 Graphics Properties Holdings, Inc. Distributed graphics processing apparatus and method
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8145777B2 (en) 2005-01-14 2012-03-27 Citrix Systems, Inc. Method and system for real-time seeking during playback of remote presentation protocols
US8340130B2 (en) * 2005-01-14 2012-12-25 Citrix Systems, Inc. Methods and systems for generating playback instructions for rendering of a recorded computer session
US8230096B2 (en) * 2005-01-14 2012-07-24 Citrix Systems, Inc. Methods and systems for generating playback instructions for playback of a recorded computer session
US8200828B2 (en) * 2005-01-14 2012-06-12 Citrix Systems, Inc. Systems and methods for single stack shadowing
US8296441B2 (en) 2005-01-14 2012-10-23 Citrix Systems, Inc. Methods and systems for joining a real-time session of presentation layer protocol data
US8935316B2 (en) 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US7831728B2 (en) * 2005-01-14 2010-11-09 Citrix Systems, Inc. Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream
US20060159432A1 (en) * 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
US7711695B2 (en) * 2005-01-18 2010-05-04 Oracle International Corporation Reducing memory used by metadata for duplicate user defined types
EP2739014B1 (de) 2005-01-24 2018-08-01 Citrix Systems, Inc. Systeme und Verfahren zur Ausführung von Zwischenspeicherung von dynamisch erzeugten Objekten in einem Netzwerk
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8171169B2 (en) 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US7861212B1 (en) 2005-03-22 2010-12-28 Dubagunta Saikumar V System, method, and computer readable medium for integrating an original application with a remote application
US8578349B1 (en) 2005-03-23 2013-11-05 Curen Software Enterprises, L.L.C. System, method, and computer readable medium for integrating an original language application with a target language application
US8019883B1 (en) 2005-05-05 2011-09-13 Digital Display Innovations, Llc WiFi peripheral mode display system
US11733958B2 (en) 2005-05-05 2023-08-22 Iii Holdings 1, Llc Wireless mesh-enabled system, host device, and method for use therewith
US8200796B1 (en) 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
US7847755B1 (en) 2005-05-23 2010-12-07 Glance Networks Method and apparatus for the identification and selective encoding of changed host display information
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20110157196A1 (en) * 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
US8527563B2 (en) * 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US8191008B2 (en) 2005-10-03 2012-05-29 Citrix Systems, Inc. Simulating multi-monitor functionality in a single monitor environment
US7924884B2 (en) * 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) * 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US7783985B2 (en) 2006-01-04 2010-08-24 Citrix Systems, Inc. Systems and methods for transferring data between computing devices
JP4742888B2 (ja) * 2006-01-27 2011-08-10 カシオ計算機株式会社 サーバー装置、クライアント装置およびプログラム
US8284759B2 (en) * 2006-01-31 2012-10-09 Alcatel Lucent System and method for compressing voice over IP headers
WO2007101967A1 (fr) * 2006-03-07 2007-09-13 Thomson Licensing Dispositif de communication et base pour un affichage evolue
US7958501B2 (en) * 2006-03-31 2011-06-07 Sap Ag System to disclose the internal structure of persistent database objects
US8677252B2 (en) * 2006-04-14 2014-03-18 Citrix Online Llc Systems and methods for displaying to a presenter visual feedback corresponding to visual changes received by viewers
JP4577267B2 (ja) * 2006-05-17 2010-11-10 株式会社日立製作所 シンクライアントシステム
US7810140B1 (en) 2006-05-23 2010-10-05 Lipari Paul A System, method, and computer readable medium for processing a message in a transport
JP4916227B2 (ja) * 2006-06-14 2012-04-11 キヤノン株式会社 デバイスの管理装置及びその管理装置の制御方法
US7747953B2 (en) 2006-06-15 2010-06-29 Citrix Online, Llc Methods and systems for receiving feedback from a scalable number of participants of an on-line presentation
US7844759B1 (en) 2006-07-28 2010-11-30 Cowin Gregory L System, method, and computer readable medium for processing a message queue
US8484718B2 (en) * 2006-08-03 2013-07-09 Citrix System, Inc. Systems and methods for enabling assured records using fine grained auditing of virtual private network traffic
US8312120B2 (en) * 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
US8493858B2 (en) 2006-08-22 2013-07-23 Citrix Systems, Inc Systems and methods for providing dynamic connection spillover among virtual servers
US7885988B2 (en) * 2006-08-24 2011-02-08 Dell Products L.P. Methods and apparatus for reducing storage size
US7974478B2 (en) * 2006-08-24 2011-07-05 Dell Products L.P. Methods and apparatus for reducing storage size
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
EP2105019A2 (de) * 2006-09-29 2009-09-30 Avinity Systems B.V. Verfahren zum streaming paralleler benutzersitzungen, system und computersoftware
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US7702604B1 (en) * 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes supplied rules and rules resident in an execution environment
US8200603B1 (en) 2006-12-22 2012-06-12 Curen Software Enterprises, L.L.C. Construction of an agent that utilizes as-needed canonical rules
US7664721B1 (en) * 2006-12-22 2010-02-16 Hauser Robert R Moving an agent from a first execution environment to a second execution environment using supplied and resident rules
US7660777B1 (en) * 2006-12-22 2010-02-09 Hauser Robert R Using data narrowing rule for data packaging requirement of an agent
US8132179B1 (en) 2006-12-22 2012-03-06 Curen Software Enterprises, L.L.C. Web service interface for mobile agents
US7949626B1 (en) * 2006-12-22 2011-05-24 Curen Software Enterprises, L.L.C. Movement of an agent that utilizes a compiled set of canonical rules
US7698243B1 (en) * 2006-12-22 2010-04-13 Hauser Robert R Constructing an agent in a first execution environment using canonical rules
US7660780B1 (en) 2006-12-22 2010-02-09 Patoskie John P Moving an agent from a first execution environment to a second execution environment
US8423496B1 (en) 2006-12-22 2013-04-16 Curen Software Enterprises, L.L.C. Dynamic determination of needed agent rules
US7702602B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Moving and agent with a canonical rule from one device to a second device
US7860517B1 (en) 2006-12-22 2010-12-28 Patoskie John P Mobile device tracking using mobile agent location breadcrumbs
US9311141B2 (en) 2006-12-22 2016-04-12 Callahan Cellular L.L.C. Survival rule usage by software agents
US7970724B1 (en) 2006-12-22 2011-06-28 Curen Software Enterprises, L.L.C. Execution of a canonical rules based agent
US7702603B1 (en) * 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes a compiled set of canonical rules
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
WO2008088741A2 (en) 2007-01-12 2008-07-24 Ictv, Inc. Interactive encoded content system including object models for viewing on a remote device
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7584294B2 (en) * 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US7809818B2 (en) * 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US7783757B2 (en) * 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US8074028B2 (en) 2007-03-12 2011-12-06 Citrix Systems, Inc. Systems and methods of providing a multi-tier cache
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US8037126B2 (en) * 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US9264483B2 (en) 2007-07-18 2016-02-16 Hammond Development International, Inc. Method and system for enabling a communication device to remotely execute an application
US7952580B1 (en) 2007-08-31 2011-05-31 Adobe Systems Incorporated Classification of exterior and interior triangles for artwork rendering
US8044955B1 (en) 2007-08-31 2011-10-25 Adobe Systems Incorporated Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
US8068106B1 (en) 2007-08-31 2011-11-29 Adobe Systems Incorporated Rendering cubic Bézier curves as quadratic curves using a GPU
US7928984B1 (en) 2007-08-31 2011-04-19 Adobe Systems Incorporated Efficient data packaging for rendering bézier curves on a GPU
US20090067629A1 (en) * 2007-09-06 2009-03-12 Paltronics, Inc. Table-based encryption/decryption techniques for gaming networks, and gaming networks incorporating the same
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US8904044B2 (en) * 2007-09-28 2014-12-02 International Business Machines Corporation Adapting compression techniques over data based on context
US20090094263A1 (en) * 2007-10-04 2009-04-09 Microsoft Corporation Enhanced utilization of network bandwidth for transmission of structured data
US7868887B1 (en) 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU
US8190707B2 (en) * 2007-10-20 2012-05-29 Citrix Systems, Inc. System and method for transferring data among computing environments
CN101464785B (zh) * 2007-12-17 2010-12-08 联想(北京)有限公司 基于wddm的屏幕获取方法及带多显示器的计算机系统
WO2009094673A2 (en) * 2008-01-27 2009-07-30 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
CN102007487A (zh) 2008-02-27 2011-04-06 N处理有限公司 用于低带宽显示信息传输的系统和方法
US8484291B1 (en) 2008-04-02 2013-07-09 Glance Networks, Inc. Method and apparatus for selecting commands for transmission from an updated queue
US8295617B2 (en) * 2008-05-19 2012-10-23 Citrix Systems, Inc. Systems and methods for enhanced image encoding
JP5315862B2 (ja) * 2008-08-29 2013-10-16 カシオ計算機株式会社 サーバ装置、クライアント装置、およびプログラム
US8386443B2 (en) * 2008-10-06 2013-02-26 Dell Products L.P. Representing and storing an optimized file system using a system of symlinks, hardlinks and file archives
WO2010042578A1 (en) * 2008-10-08 2010-04-15 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component
US8260926B2 (en) 2008-11-25 2012-09-04 Citrix Systems, Inc. Systems and methods for GSLB site persistence
US8352561B1 (en) 2009-07-24 2013-01-08 Google Inc. Electronic communication reminder technology
US8751844B2 (en) * 2009-09-24 2014-06-10 Citrix Systems, Inc. Systems and methods for attributing an amount of power consumption to a workload
US8171154B2 (en) * 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
US8489725B2 (en) * 2010-07-16 2013-07-16 Research In Motion Limited Persisting file system information on mobile devices
GB2483166B (en) * 2010-08-27 2013-10-23 Fxi Technologies As Electronic devices
EP2616954B1 (de) 2010-09-18 2021-03-31 Google LLC Ein verfahren und einen mechanismus zum ferngesteuerten rendern von grafiken
WO2012051528A2 (en) 2010-10-14 2012-04-19 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
US8907987B2 (en) 2010-10-20 2014-12-09 Ncomputing Inc. System and method for downsizing video data for memory bandwidth optimization
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법
EP2695388B1 (de) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Latenzreduktion in videoverteilungsnetzwerken mit adaptiver bitrate
US8863136B2 (en) * 2011-05-19 2014-10-14 International Business Machines Corporation Lock control in multiple processor systems
US9351028B2 (en) * 2011-07-14 2016-05-24 Qualcomm Incorporated Wireless 3D streaming server
US9032467B2 (en) 2011-08-02 2015-05-12 Google Inc. Method and mechanism for efficiently delivering visual data across a network
US8615159B2 (en) 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
US10042674B2 (en) * 2011-09-30 2018-08-07 Teradata Us, Inc. Regulating capacity and managing services of computing environments and systems that include a database
US9747334B2 (en) * 2011-09-30 2017-08-29 Teradata Us, Inc. Managing excess capacity of database systems in a capacity controlled computing environment
US8681813B2 (en) 2011-11-29 2014-03-25 Wyse Technology L.L.C. Bandwidth optimization for remote desktop protocol
EP2815582B1 (de) 2012-01-09 2019-09-04 ActiveVideo Networks, Inc. Wiedergabe einer interaktiven vereinfachten benutzerschnittstelle auf einem fernsehgerät
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US20130298199A1 (en) * 2012-05-02 2013-11-07 Elwha Llc Control of Transmission to a Target Device with a Cloud-Based Architecture
US9148331B2 (en) * 2012-05-02 2015-09-29 Elwha Llc Control of transmission to a target device with a cloud-based architecture
US20130297725A1 (en) * 2012-05-02 2013-11-07 Elwha Llc Control of Transmission to a Target Device with a Cloud-Based Architecture
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9326047B2 (en) 2013-06-06 2016-04-26 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US10075630B2 (en) 2013-07-03 2018-09-11 HJ Laboratories, LLC Providing real-time, personal services by accessing components on a mobile device
WO2015094366A1 (en) * 2013-12-20 2015-06-25 Intel Corporation Execution offloading
WO2015110804A1 (en) * 2014-01-21 2015-07-30 Elektraglide Ltd A method and system for interactive graphics streaming
US10915984B2 (en) * 2014-01-21 2021-02-09 Elektraglide Ltd Method and system for interactive graphics streaming
US20150207742A1 (en) * 2014-01-22 2015-07-23 Wipro Limited Methods for optimizing data for transmission and devices thereof
CN104135452B (zh) * 2014-08-08 2018-05-01 福建三元达网络技术有限公司 一种iq数据同步压缩还原算法及装置
JP6293627B2 (ja) * 2014-09-19 2018-03-14 アンリツ株式会社 画像表示装置及び画像表示方法
US9785332B1 (en) * 2014-12-05 2017-10-10 Amazon Technologies, Inc. Conserving processing resources by controlling updates to damaged tiles of a content page
US10546038B2 (en) 2014-12-08 2020-01-28 Amazon Technologies, Inc. Intelligent browser-based display tiling
KR102287948B1 (ko) * 2015-02-09 2021-08-09 삼성전자주식회사 애니메이션 처리 장치 및 방법
US10083096B1 (en) * 2015-12-15 2018-09-25 Workday, Inc. Managing data with restoring from purging
CN106383705B (zh) * 2016-08-31 2020-05-08 华为技术有限公司 在应用瘦客户端中设置鼠标显示状态的方法及装置
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
US10657599B2 (en) 2016-10-14 2020-05-19 Allstate Insurance Company Virtual collaboration
US11463654B1 (en) * 2016-10-14 2022-10-04 Allstate Insurance Company Bilateral communication in a login-free environment
US10742812B1 (en) 2016-10-14 2020-08-11 Allstate Insurance Company Bilateral communication in a login-free environment
US11271828B2 (en) 2018-11-15 2022-03-08 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
US11627091B2 (en) * 2019-05-20 2023-04-11 Citrix Systems Inc. Systems and methods for managing streams of packets via intermediary devices
CN111031007A (zh) * 2019-11-22 2020-04-17 珠海豹趣科技有限公司 电子白板间的通信控制方法、装置及服务器

Family Cites Families (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US73061A (en) * 1868-01-07 Improvement in harrows
US32632A (en) * 1861-06-25 Water-elevator
US29285A (en) * 1860-07-24 A M Karr Improvement in mole-plows
US35596A (en) * 1862-06-17 Improvement in envelopes for sewing-needles
US3596257A (en) 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US4013828A (en) * 1976-02-20 1977-03-22 Bell Telephone Laboratories, Incorporated Method and arrangement for reducing the bandwidth and/or time required to transmit a dithered image
US4410916A (en) 1979-08-24 1983-10-18 Compression Labs, Inc. Dual mode facsimile coding system and method
DE2939411C2 (de) * 1979-09-28 1982-09-02 Siemens AG, 1000 Berlin und 8000 München Datenverarbeitungsanlage mit virtueller Speicheradressierung
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US4394732A (en) * 1980-11-14 1983-07-19 Sperry Corporation Cache/disk subsystem trickle
US4463424A (en) * 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4562423A (en) 1981-10-15 1985-12-31 Codex Corporation Data compression
US4503501A (en) 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4430712A (en) 1981-11-27 1984-02-07 Storage Technology Corporation Adaptive domain partitioning of cache memory space
USRE32632E (en) 1982-07-19 1988-03-29 Apple Computer, Inc. Display system
JPS5949071A (ja) * 1982-09-13 1984-03-21 Dainippon Screen Mfg Co Ltd 図形輪郭デ−タ圧縮方法
US4499499A (en) * 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
US4545016A (en) 1983-01-07 1985-10-01 Tandy Corporation Memory management system
DE3483489D1 (de) * 1983-04-13 1990-12-06 Nec Corp Speicherzugriffseinrichtung in einem datenverarbeitungssystem.
JP2785821B2 (ja) 1983-10-07 1998-08-13 ソニー株式会社 デイジタル信号発生回路
US4796003A (en) 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
GB2172127B (en) 1985-03-06 1988-10-12 Ferranti Plc Data compression system
JPS62282328A (ja) 1986-02-21 1987-12-08 Hitachi Ltd 多重画面制御方式
US4899149A (en) 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US4937036A (en) * 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
JP2608400B2 (ja) 1986-06-16 1997-05-07 富士写真フイルム株式会社 圧縮処理を経た画像データからの画像再構成方法
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4949281A (en) 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4992954A (en) * 1987-08-05 1991-02-12 Hitachi, Ltd. Method of storing character patterns and character pattern utilization system
US4903218A (en) 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US4928247A (en) * 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US4870662A (en) * 1987-12-01 1989-09-26 Concord Data Systems, Inc. System and method for compressing transmitted or stored data
JPH01246656A (ja) * 1988-03-29 1989-10-02 Nec Corp プロセッサ間共有メモリ管理方式
US5103303A (en) * 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
US4958303A (en) * 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
CA1341310C (en) 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
JP2790815B2 (ja) * 1988-08-10 1998-08-27 株式会社リコー 画像データ圧縮方法
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5126739A (en) 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
EP0389151A3 (de) 1989-03-22 1992-06-03 International Business Machines Corporation System und Verfahren für die Verwaltung eines verteilten Cache-Speichers
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
KR930003126B1 (ko) * 1989-04-20 1993-04-19 가부시기가이샤 도시바 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템
US5305440A (en) * 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
JP2858795B2 (ja) 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
EP0416768B1 (de) 1989-09-08 1998-06-17 Digital Equipment Corporation Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
JP2805096B2 (ja) 1989-10-31 1998-09-30 ソニー株式会社 ディジタル変調方法及び復調方法
US5119319A (en) 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5077669A (en) 1989-12-27 1991-12-31 International Business Machines Corporation Method for quasi-key search within a national language support (nls) data processing system
US5001478A (en) 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5309555A (en) 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5269003A (en) 1990-05-24 1993-12-07 Apple Computer, Inc. Memory architecture for storing twisted pixels
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
CA2045788A1 (en) * 1990-06-29 1991-12-30 Kadangode K. Ramakrishnan Cache arrangement for file system in digital data processing system
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
JP3189276B2 (ja) * 1990-09-12 2001-07-16 ブラザー工業株式会社 データ変換装置
JPH0799508B2 (ja) 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5544317A (en) * 1990-11-20 1996-08-06 Berg; David A. Method for continuing transmission of commands for interactive graphics presentation in a computer network
US5241625A (en) * 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
US5339411A (en) 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
DE69133032T2 (de) 1990-12-26 2003-01-30 Canon Kk Multimedia-Kommunikationsvorrichtung
US5161015A (en) 1990-12-31 1992-11-03 Zenith Electronics Corporation System for peaking a video signal with a control signal representative of the perceptual nature of blocks of video pixels
US5164727A (en) 1991-04-30 1992-11-17 Regents Of The Unversity Of California Optimal decoding method and apparatus for data acquisition applications of sigma delta modulators
CA2069355C (en) 1991-06-07 1998-10-06 Robert C. Pike Global user interface
US6643656B2 (en) * 1991-07-31 2003-11-04 Richard Esty Peterson Computerized information retrieval system
US5315698A (en) 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
US5321806A (en) 1991-08-21 1994-06-14 Digital Equipment Corporation Method and apparatus for transmitting graphics command in a computer graphics system
US5140321A (en) * 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
CA2083634C (en) 1991-12-30 1999-01-19 Hung Ping Wong Method and apparatus for mapping page table trees into virtual address space for address translation
GB9205774D0 (en) 1992-03-17 1992-04-29 Int Computers Ltd Computer security system
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
WO1994002898A1 (en) 1992-07-24 1994-02-03 Microsoft Corporation Computer method and system for allocating and freeing memory
JPH0659982A (ja) 1992-08-10 1994-03-04 Hitachi Ltd 仮想記憶制御方法および装置
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5434992A (en) * 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5491808A (en) 1992-09-30 1996-02-13 Conner Peripherals, Inc. Method for tracking memory allocation in network file server
DE69324204T2 (de) * 1992-10-22 1999-12-23 Cabletron Systems Inc Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5469540A (en) 1993-01-27 1995-11-21 Apple Computer, Inc. Method and apparatus for generating and displaying multiple simultaneously-active windows
IL104568A (en) 1993-01-31 1995-12-31 Age Computational Graphics Ltd Method and system for generating amplified output signals
CA2127053C (en) 1993-07-02 2005-01-04 Makoto Furuhashi Method and apparatus for time-sharing cpu system bus in image generation system
US5521597A (en) 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
WO1995012165A1 (en) 1993-10-22 1995-05-04 Gestalt Technologies, Incorporated Distributed management in a partitioned memory system
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5473742A (en) 1994-02-22 1995-12-05 Paragraph International Method and apparatus for representing image data using polynomial approximation method and iterative transformation-reparametrization technique
US5537635A (en) 1994-04-04 1996-07-16 International Business Machines Corporation Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size
US5734388A (en) 1994-05-16 1998-03-31 Agfa Division, Bayer Corporation Method and apparatus for data compression of digital data to produce a scaleable font database
US5754187A (en) 1994-05-16 1998-05-19 Agfa Division, Bayer Corporation Method for data compression of digital data to produce a scaleable font database
US5729710A (en) * 1994-06-22 1998-03-17 International Business Machines Corporation Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
EP0770246A4 (de) * 1994-07-14 1998-01-14 Johnson Grace Company Verfahren und gerät zur bildkompression
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5566288A (en) 1994-09-02 1996-10-15 Caterpillar Inc. System and method for automatically fitting a B-spline curve to a set of data points
US5802281A (en) * 1994-09-07 1998-09-01 Rsi Systems, Inc. Peripheral audio/video communication system that interfaces with a host computer and determines format of coded audio/video signals
US5771383A (en) * 1994-12-27 1998-06-23 International Business Machines Corp. Shared memory support method and apparatus for a microkernel data processing system
US5771034A (en) * 1995-01-23 1998-06-23 Microsoft Corporation Font format
US5682486A (en) 1995-03-14 1997-10-28 International Business Machines Corporation Video display and control of multiple graphical interfaces
EP0734144A3 (de) 1995-03-20 1999-08-18 Siemens Aktiengesellschaft Verfahren und Anordnung zum Ermitteln der Benutzergebühr in einer Teilnehmereinrichtung
US5682488A (en) 1995-04-03 1997-10-28 International Business Machine Corp. Variable computer icon for single control of complex software functions executed on a data processing system
US5621660A (en) 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
US5651136A (en) 1995-06-06 1997-07-22 International Business Machines Corporation System and method for increasing cache efficiency through optimized data allocation
US5501478A (en) * 1995-06-07 1996-03-26 Robert L. Doan Occupant propelled three wheeled vehicle
US5930493A (en) * 1995-06-07 1999-07-27 International Business Machines Corporation Multimedia server system and method for communicating multimedia information
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US5864711A (en) * 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5793371A (en) * 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5742797A (en) * 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US5767849A (en) * 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5835959A (en) 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
US5850632A (en) 1995-09-08 1998-12-15 Texas Instruments Incorporated Memory access controller utilizing cache memory to store configuration information
US6016535A (en) * 1995-10-11 2000-01-18 Citrix Systems, Inc. Method for dynamically and efficiently caching objects by subdividing cache memory blocks into equally-sized sub-blocks
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US6081623A (en) * 1995-10-11 2000-06-27 Citrix Systems, Inc. Method for lossless bandwidth compression of a series of glyphs
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
JPH09233467A (ja) 1996-02-21 1997-09-05 Fujitsu Ltd 画像データ通信装置及び画像データ通信システムにおける通信データ量調整方法
US5961588A (en) * 1996-02-22 1999-10-05 Alcatel Usa Sourcing, L.P. Handling of commands passed between the server and client stations of a telecommunications system
US6553410B2 (en) * 1996-02-27 2003-04-22 Inpro Licensing Sarl Tailoring data and transmission protocol for efficient interactive data transactions over wide-area networks
US5740171A (en) 1996-03-28 1998-04-14 Cisco Systems, Inc. Address translation mechanism for a high-performance network switch
US5923654A (en) * 1996-04-25 1999-07-13 Compaq Computer Corp. Network switch that includes a plurality of shared packet buffers
US5864678A (en) 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US6034689A (en) * 1996-06-03 2000-03-07 Webtv Networks, Inc. Web browser allowing navigation between hypertext objects using remote control
US6057857A (en) * 1996-06-12 2000-05-02 Citrix Systems, Inc. Method for the lossless compression of lines in a distributed computer system
US6014133A (en) * 1996-06-14 2000-01-11 Seiko Epson Corporation Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method
KR100203266B1 (ko) * 1996-07-09 1999-06-15 윤종용 윤곽선복호화장치
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
JP3853877B2 (ja) * 1996-08-06 2006-12-06 紀伊産業株式会社 コンパクト容器
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5883640A (en) 1996-08-15 1999-03-16 Hsieh; Paul Computing apparatus and operating method using string caching to improve graphics performance
US5936940A (en) 1996-08-22 1999-08-10 International Business Machines Corporation Adaptive rate-based congestion control in packet networks
US6052120A (en) 1996-10-01 2000-04-18 Diamond Multimedia Systems, Inc. Method of operating a portable interactive graphics display tablet and communications systems
US5944791A (en) * 1996-10-04 1999-08-31 Contigo Software Llc Collaborative web browser
US5931904A (en) 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
US5864811A (en) * 1996-11-13 1999-01-26 Compaq Computer Corporation Audio circuit for use with synthesized audio signals and signals from a modem
US5913230A (en) * 1997-01-07 1999-06-15 Richardson; John J. Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US5949975A (en) * 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems
GB2323946B (en) * 1997-04-04 2002-04-17 Sony Uk Ltd Database accessing method and apparatus
US6061714A (en) * 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US5907678A (en) * 1997-05-07 1999-05-25 International Business Machines Corporation Client/server system in which protocol caches for multiple sessions are selectively copied into a common checkpoint cache upon receiving a checkpoint request
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5877757A (en) 1997-05-23 1999-03-02 International Business Machines Corporation Method and system for providing user help information in network applications
US6181711B1 (en) * 1997-06-26 2001-01-30 Cisco Systems, Inc. System and method for transporting a compressed video and data bit stream over a communication channel
US5999950A (en) 1997-08-11 1999-12-07 Webtv Networks, Inc. Japanese text input method using a keyboard with only base kana characters
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6489956B1 (en) * 1998-02-17 2002-12-03 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
US7263127B1 (en) 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
US6061715A (en) * 1998-04-30 2000-05-09 Xerox Corporation Apparatus and method for loading and reloading HTML pages having cacheable and non-cacheable portions
US6163773A (en) * 1998-05-05 2000-12-19 International Business Machines Corporation Data storage system with trained predictive cache management engine
KR20010043446A (ko) * 1998-05-08 2001-05-25 지오워크스 코포레이션 풍부한 콘텐츠와 직접 사용자 응답 메카니즘을 가진 무선통신 장치에 대한 통합된 광고
US6397259B1 (en) * 1998-05-29 2002-05-28 Palm, Inc. Method, system and apparatus for packet minimized communications
US6639593B1 (en) * 1998-07-31 2003-10-28 Adobe Systems, Incorporated Converting bitmap objects to polygons
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6233606B1 (en) * 1998-12-01 2001-05-15 Microsoft Corporation Automatic cache synchronization
US6449639B1 (en) * 1998-12-23 2002-09-10 Doxio, Inc. Method and system for client-less viewing of scalable documents displayed using internet imaging protocol commands
US6731600B1 (en) * 1999-02-08 2004-05-04 Realnetworks, Inc. System and method for determining network conditions
US6657954B1 (en) 1999-03-31 2003-12-02 International Business Machines Corporation Adapting receiver thresholds to improve rate-based flow control
US6483515B1 (en) * 1999-04-09 2002-11-19 Sun Microsystems, Inc. Method and apparatus for displaying data patterns in information systems
US6801499B1 (en) 1999-08-10 2004-10-05 Texas Instruments Incorporated Diversity schemes for packet communications
US6314452B1 (en) * 1999-08-31 2001-11-06 Rtimage, Ltd. System and method for transmitting a digital image over a communication network
WO2001080561A1 (en) 2000-04-18 2001-10-25 Rtimage Inc. System and method for the lossless progressive streaming of images over a communication network
US20020029285A1 (en) * 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7092740B1 (en) 2001-04-20 2006-08-15 Trilogy Development Group, Inc. High density information presentation using space-constrained display device
JP2007099007A (ja) * 2005-09-30 2007-04-19 Auto Network Gijutsu Kenkyusho:Kk ワイヤハーネスの配索構造
JP2008002007A (ja) * 2006-06-21 2008-01-10 Daiwabo Co Ltd ナノ粒子担持材料およびその製造方法
JP4873139B2 (ja) * 2006-06-23 2012-02-08 Nok株式会社 ガスケットの製造方法

Also Published As

Publication number Publication date
WO2001092973A3 (en) 2002-05-23
DE60109631T2 (de) 2006-01-19
JP2004501445A (ja) 2004-01-15
KR20030031903A (ko) 2003-04-23
ES2246432T3 (es) 2006-02-16
US20020073061A1 (en) 2002-06-13
HK1049415A1 (en) 2003-05-09
EP1285517A2 (de) 2003-02-26
US20030046432A1 (en) 2003-03-06
KR100824120B1 (ko) 2008-04-22
US8099389B2 (en) 2012-01-17
US7127525B2 (en) 2006-10-24
CA2408924A1 (en) 2001-12-06
KR20070086443A (ko) 2007-08-27
EP1285517B1 (de) 2005-03-23
US20100205246A1 (en) 2010-08-12
US7490166B2 (en) 2009-02-10
US20090144292A1 (en) 2009-06-04
ES2246433T3 (es) 2006-02-16
HK1049415B (zh) 2005-06-24
DE60112107T2 (de) 2006-04-20
IL152797A (en) 2008-03-20
AU2001274972A1 (en) 2001-12-11
DE60112103T2 (de) 2006-06-01
DE60109602D1 (de) 2005-04-28
KR100783216B1 (ko) 2007-12-06
US8290907B2 (en) 2012-10-16
US7028025B2 (en) 2006-04-11
US20020029285A1 (en) 2002-03-07
KR20070086442A (ko) 2007-08-27
US20060153423A1 (en) 2006-07-13
IL152797A0 (en) 2003-06-24
US20020035596A1 (en) 2002-03-21
WO2001093525A2 (en) 2001-12-06
IL184891A (en) 2008-12-29
DE60109631D1 (de) 2005-04-28
ES2240872T3 (es) 2005-10-16
KR20070086444A (ko) 2007-08-27
DE60112107D1 (de) 2005-08-25
US7502784B2 (en) 2009-03-10
WO2001093525A3 (en) 2002-03-21
ES2240461T3 (es) 2005-10-16
KR100783217B1 (ko) 2007-12-06
WO2001092973A2 (en) 2001-12-06
KR100824121B1 (ko) 2008-04-22
DE60112103D1 (de) 2005-08-25
AU6349001A (en) 2001-12-11
AU2001263490B2 (en) 2006-06-08

Similar Documents

Publication Publication Date Title
DE60109602T2 (de) Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten
AU2001263490A1 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
EP1326406B1 (de) Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
AU2006202299B2 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
DE602004002104T2 (de) Ultraleicht browser
AU2006202292B2 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
DE10128147A1 (de) Verfahren zur Übermittlung von Daten in einem Computer-Netzwerk

Legal Events

Date Code Title Description
8364 No opposition during term of opposition