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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/75—Indicating network or usage conditions on the user display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-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 von1 durchgeführten Schritte gemäß einer Ausführungsform der vorliegenden Erfindung; -
3 ein im Vergleich zu dem Diagramm von2 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 von1 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 von7A 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 von8B auf die Repräsentation auf Pixelniveau von7B 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 von8B , 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-Knoten110' ,110'' (im folgenden wird jeder Client-Knoten oder Vielzahl von Client-Knoten im allgemeinen als110 bezeichnet) in Kommunikation mit einem oder mehreren Server-Knoten150' ,150'' (im folgenden wird jeder Server-Knoten oder jede Vielzahl von Server-Knoten allgemein als150 bezeichnet) über ein Kommunikationsnetz140 . Das Netzwerk140 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-Knotens110 können durch vielfältige Verbindungen mit dem Netzwerk140 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 Netzwerk140 von dem Anwendungsserver150 gesendet werden, um eine graphische Anzeige wiederzugeben. Bei einem verteilten Computersystemmodell findet die Ausführung von Anwendungsprogrammen hauptsächlich auf dem Anwendungsserver150 statt, und die Benutzeroberfläche, die Tastenbetätigungen und die Mausbewegungen, die durch Eingaben auf der Clientseite erzeugt werden, werden über das Netzwerk140 zu und von dem Client-Knoten110 übertragen. - Der Client-Knoten
110 enthält typischerweise einen Prozessor112 , einen flüchtigen Speicher114 (z.B. RAM-Cache), ein Betriebssystem116 , einen Client-Agent118 , einen persistenten Speicher120 , eine Netzwerkschnittstelle122 (z.B. eine Netzwerkschnittstellenkarte), eine Tastatur124 , eine Maus126 und eine Anzeige128 . Zu von dem Client-Knoten110 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-Agent118 entspricht einem Softwareprogramm, das Befehle und Daten von dem Server-Knoten150 und von einem (nicht gezeigten) Benutzer des Client-Knotens110 empfängt. Der Client-Agent118 verwendet die empfangenen Informationen, wenn er mit anderen Komponenten des Client-Knotens110 in Wechselwirkung tritt (z.B. beim Anleiten des Betriebssystems116 , Daten auf die Anzeige128 auszugeben). Außerdem sendet der Client-Agent118 Anforderungen und Daten als Reaktion auf vom Server ausgegebene Befehle oder Benutzeraktionen an dem Client-Knoten110 zu dem Server-Knoten150 . - Ähnlich enthält der Server-Knoten
150 einen Prozessor152 , einen flüchtigen Speicher154 , ein Betriebssystem156 , ein Anwendungsprogramm158 , einen Server-Agent160 , persistenten Speicher162 und eine Netzwerkschnittstelle164 . Der Server-Agent160 entspricht einem Softwareprogramm, das eine Schnittstelle mit dem Client-Agent118 und anderen Komponenten des Server-Knotens150 zur Unterstützung der Fernanzeige und Operabilität des Anwendungsprogramms158 aufweist. - Jeder Anwendungsserver
150 ist Host für ein oder mehrere Anwendungsprogramme158 , auf die die Client-Knoten110 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 Server150 über einen Transportmechanismus (Teil des Server-Agent160 ) mit dem Client-Knoten110 . 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-Knoten150 zu dem Client-Knoten110 . Der Server150 führt einen Protokolltreiber aus (Teil des Server-Agent160 ), der Schnittstellenbefehle der graphischen Anzeige (die durch das Anwendungsprogramm158 erzeugt werden und für das Betriebssystem156 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-Agent160 eine von dem Anwendungsprogramm158 ausgegebenen und an das Betriebssystem156 gerichteten Schnittstellenbefehl der graphischen Anzeige ab (Schritt202 ), codiert mit dem Befehl und dem Anwendungsprogramm158 assoziierte Daten (Schritt204 ), komprimiert die codierten graphischen Daten (Schritt206 ), erzeugt ein Transportprotokollpaket, das den abgefangenen Befehl und komprimierte codierte Daten enthält (Schritt208 ) und sendet das Transportprotokollpaket zu dem Zielclient-Knoten110 (Schritt210 ). Graphische Daten bedeuten eine beliebige Art von Daten, die auf der Anzeige128 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 (Schritt202 ). Bei einer Ausführungsform fängt der Protokolltreiber Aufrufe der Anwendungsprogrammierschnittstelle auf hoher Ebene ab, die von dem Anwendungsprogramm158 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-Knotens150 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 Server150 und dem Client110 im wesentlichen ähnlich oder identisch sein. Der Protokolltreiber erzeugt auf der Basis des abgefangenen graphischen Anzeigebefehls ein Transportprotokollpaket (Schritt208 ). 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 Anwendungsprogramms158 auf der Anzeige128 des Client anzuzeigen, reiht der Server-Agent160 den betreffenden Protokollbefehle zusammen mit einem eindeutigen Schlüssel412 (4 ), der den betroffenen graphischen Daten zugeordnet ist, in eine Warteschlange ein. Der eindeutige Schlüssel412 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üssel412 werden im Server150 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-Agent160 diese aus der Warteschlange und vermeidet somit das Übertragen unnötiger Daten zu dem Client-Agent118 . - 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-Agent160 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.
- 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 (Schritt206 ), 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 Netzwerk140 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-Knoten110 übertragen (Schritt208 ). - Bei einem Ausführungsbeispiel führt das Anwendungsprogramm
158 einen GDI-Befehl aus, der das Betriebssystem156 des Servers anweist, eine Bitmap zu zeichnen. Der Server-Agent160 fängt diesen GDI-Befehl ab (Schritt202 ) und gibt einen BITBLT-Befehl an den Client-Agent118 aus, der den Client-Agent118 anweist, die Ausgangsdaten des Anwendungsprogramms auf der Anzeige128 des Client anzuzeigen. Vor der Ausgabe des BITBLT-Befehls codiert der Server-Agent160 die Ausgangsdaten (Schritt204 ) und nimmt die codierten Daten zusammen mit dem BITBLT-Befehl in den zu dem Client-Agent118 übertragenen komprimierten Protokollpaketstrom auf. Bei einer Ausführungsform werden die die Bitmap410 (4 ) beschreibenden Daten codiert und komprimiert (Schritte204 und206 ), um bestimmte der in der Bitmap410 vorhandenen Redundanzen auszunutzen. Zum Beispiel kann die Bitmap410 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 und4 erzeugt der Server-Agent160 wie oben beschrieben den eindeutigen Schlüssel412 (Schritt330 ) und ordnet den eindeutigen Schlüssel412 den graphischen Daten (z.B. der Bitmap410 ) zu. Diese Zuordnung definiert im wesentlichen die Bitmap410 und ihre betreffenden Daten als ein graphisches Objekt, das danach zusammen mit seinem eindeutigen Schlüssel412 und den codierten Daten414 in einer Datenstruktur411 (z.B. einer Tabelle) registriert wird (Schritt340 ), die in dem flüchtigen Speicher154 (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 Speicherung162 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üssel412 aus der Warteschlange (Schritt360 ) und durchsucht die in dem flüchtigen Speicher154 des Servers gespeicherte Tabelle411 , um zu bestimmen, ob der eindeutige Schlüssel412 zuvor darin gespeichert wurde. Wenn sich der eindeutige Schlüssel412 in der Tabelle411 befindet, bestimmt der Server-Agent160 , daß die codierten Daten414 zuvor bereits durch den Server150 verarbeitet worden sind. Der Server-Agent160 durchsucht dann die Tabelle411 nach einem der codierten Bitmap414 zugeordneten Index oder Handle416 . Wenn der Index416 gefunden wurde, bestimmt der Server-Agent160 , daß die codierte Bitmap414 nicht nur durch den Server150 verarbeitet wurde, sondern daß sie auch zuvor zu dem Client-Agent118 übertragen wurde. Wenn sich der Index416 nicht in der Tabelle411 befindet, bestimmt der Server-Agent160 , daß die codierte Bitmap414 nicht zuvor übertragen wurde. - Bei einer Ausführungsform identifiziert der Index
416 eine bestimmte Stelle in dem flüchtigen Speicher114 des Client, die die zuvor übertragene codierte Bitmap414 speichert. Bei einer Ausführungsform liefert der Client-Agent118 einen Schnappschuß seines verfügbaren flüchtigen Speichers114 beim Einleiten einer Client-Server-Sitzung mit dem Server-Agent160 an den Server-Agent160 . Nachdem die Sitzung hergestellt wurde, steuert der Server-Agent160 danach die Zuteilung des verfügbaren flüchtigen Speichers114 des Client. Auf diese Weise kann der Server-Agent160 den flüchtigen Speicher114 der codierten Bitmap414 zuteilen und dem Index416 als Zeiger oder Referenz auf den zugeteilten Speicher und als Kennung der zuvor übertragenen codierten Bitmap414 behalten. - Wenn sich der Index
416 in der Tabelle411 des Servers befindet, erhält der Server-Agent160 den Index416 (Schritt370 ), komprimiert den Index416 zusammen mit dem betreffenden Protokollbefehl (Schritt380 ) und sendet die komprimierten Daten in einem an den Client-Agent118 gerichteten Paket über das Netzwerk140 . Bei einer Ausführungsform ist der Index416 kürzer (z.B. 16 Bit) als der eindeutige Schlüssel412 (z.B. 64 Bit) und verbraucht folglich bei der Übertragung weniger Bandbreite. Nach dem Empfang und der Dekomprimierung des komprimierten Pakets greift der Client-Agent118 auf die bestimmte Speicherstelle in dem flüchtigen Speicher114 des Client zu, die durch den Index416 spezifiziert wird, um die entsprechenden graphischen Daten410 zu erhalten. Danach manipuliert der Client-Agent118 die erhaltenen graphischen Daten410 gemäß dem Befehl, der den Index416 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 Tabelle411 des Servers befindet (und somit nicht zuvor zu dem Client-Agent118 übertragen wurde), teilt der Server-Agent160 einen Teil des flüchtigen Speichers114 des Client für die Bitmap410 zu und bildet den Index416 , der die Speicherstelle identifiziert. Der Server-Agent160 speichert die codierte Bitmap414 (entsprechend der Bitmap410 ), den neugebildeten Index416 und den der codierten Bitmap414 zugeordneten eindeutigen Schlüssel412 dann in der Tabelle411 des Servers. Danach komprimiert der Server-Agent160 die codierte Bitmap414 , den Index416 und betreffenden Befehl und sendet die komprimierten Daten in einem an den Client-Agent118 gerichteten Paket. Nach Empfang und Dekomprimierung decodiert der Client-Agent118 die codierten Daten414 und speichert die resultierende Bitmap410 in der durch den Index416 identifizierten Speicherstelle und manipuliert die resultierende Bitmap410 gemäß dem Begleitbefehl. Alternativ dazu speichert der Client-Agent118 die codierten Daten414 in der durch den Index416 identifizierten Speicherstelle und decodiert die codierten Daten414 nur, wenn notwendig zur weiteren Manipulation der resultierenden Bitmap410 . 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-Agent118 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-Agent118 übertragen wird (mit dem Begleitbefehl, aber ohne den Index416 ), kann der Client-Agent118 die bestimmte Stelle in dem flüchtigen Speicher114 zum Speichern der Bitmap410 bestimmen. Bei dieser Ausführungsform bildet der Client-Agent118 einen (nicht gezeigten) Index, der die codierte Bitmap und ihre entsprechende Speicherstelle eindeutig identifiziert, und sendet den Index zu dem Server-Agent160 , der den Index an der entsprechenden Stelle in der Tabelle411 des Servers speichert. - Weiter mit Bezug auf die Ausführungsform, bei der der Server-Agent
160 die Zuteilung des flüchtigen Speichers114 des Client steuert, führt der Client-Agent118 eine kreisförmige Warteschlange421 aller durch den Server-Agent160 spezifizierten Indizes gemäß auch von diesem empfangenen Warteschlangenwartungsbefehlen. Zum Beispiel kann der Server-Agent160 den Client-Agent118 anleiten, die Zuordnung eines vorbestimmten Blocks von Indizes417 (z.B. entsprechend 128K Speicher) zu ihren jeweiligen graphischen Daten aufzuheben, um neu angetroffene graphische Objekte unterzubringen, wenn der flüchtige Speicher114 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-Agent160 übermittelt diese Entscheidung zu dem Client-Agent118 . Wenn zum Beispiel der Server-Agent160 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 Speicherung120 des Client verschoben und die den Handles 1 und 3 zugeordneten Objekte gesichert werden sollen, weist der Server-Agent160 somit den Client-Agent118 an, 0 und 2 zu löschen (oder zu verschieben) und 1 und 3 zu sichern. Der Client-Agent118 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 Speicher114 des Client110 wird voll von zuvor übertragenen Bitmaps410 und anderen graphischen Objekten. Die Anzahl zuvor übertragener graphischer Objekte422 , die aus dem flüchtigen Speicher114 in die persistente Speicherung120 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 Objekte422 zu suchen, die möglicherweise in der persistenten Speicherung120 des Client gespeichert sind, wenn ein Index auf dieses graphische Objekt422 nicht in der Tabelle411 des Servers gefunden wird. Wenn solche Indicia gefunden werden, besteht eine starke Wahrscheinlichkeit, daß das zuvor übertragene graphische Objekt422 immer noch lokal in dem Client-Agent118 verankert und diesem zugänglich ist und daß das graphische Objekt422 deshalb möglicherweise nicht neu von dem Server-Agent150 zu dem Client-Agent110 übertragen werden muß. Es muß beachtet werden, daß das Finden solcher Indicia eine starke Wahrscheinlichkeit, aber keine Bestimmtheit, ergibt, daß das graphische Objekt422 lokal verankert ist, da möglicherweise andere Programme oder Client-Agents, die möglicherweise gemeinsam dieselbe persistente Speicherung120 verwenden, das graphische Objekt422 aus der persistenten Speicherung120 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 und5 durchsucht der Server-Agent118 , wenn der Server-Agent160 keinen Index für eine bestimmte Bitmap422 in der Indextabelle411 des Servers finden kann, eine zweite Tabelle418 (im folgenden „Fuzzy-Datenbank") nach einem Eintrag419 (im folgenden „Fuzzy-Schlüssel"), der mit der Bitmap422 assoziiert ist (Schritt520 ). Bei einer Ausführungsform ist jeder Fuzzy-Schlüssel419 eine Kombination des eindeutigen Schlüssels412 in der Tabelle411 des Servers und der Länge/Größe der zugeordneten Bitmap422 . Der Fuzzy-Schlüssel kann zum Beispiel über eine XOR-(exklusiv-OR-)Verknüpfung zwischen den zur Berechnung des eindeutigen 64-Bit-Schlüssels412 in der Tabelle411 des Servers verwendeten 32-Bit-CRSs und der Länge der mit dem eindeutigen Schlüssel412 assoziierten Bitmap422 gebildet werden. Die Fuzzy-Datenbank418 liefert im wesentlichen eine Anfangsprädiktion darüber, ob in der persistenten Speicherung120 des Clients110 eine Kopie der Bitmap422 gespeichert ist. Wenn die Fuzzy-Datenbank418 den der Bitmap zugeordneten Fuzzy-Schlüssel419 nicht enthält, ist wahrscheinlich keine Kopie der Bitmap422 in der persistenten Speicherung120 des Clients gespeichert und der Server-Agent160 muß deshalb eine codierte Version der Bitmap422 wie zuvor beschrieben zu dem Client-Agent118 übertragen. Wenn dagegen die Fuzzy-Datenbank418 den Fuzzy-Schlüssel419 für die Bitmap422 enthält, besteht eine starke Wahrscheinlichkeit, daß die Bitmap422 in der persistenten Speicherung120 des Clients gespeichert ist. - Wenn der Server-Agent
160 keinen Fuzzy-Schlüssel419 in der Fuzzy-Datenbank418 findet, der der Bitmap422 zugeordnet ist, sendet der Server-Agent160 genauer gesagt eine (der Bitmap422 entsprechende) codierte Bitmap zu dem Client-Agent118 mit einem Befehl, der von dem Client-Agent118 anfordert, die Bitmap422 (oder die entsprechende codierte Bitmap) in dem flüchtigen Speicher114 zu speichern (Schritt530 ). Außerdem und wie oben beschrieben nimmt der Server-Agent160 den der Bitmap422 zugeordneten Fuzzy-Schlüssel in die Fuzzy-Datenbank418 auf (Schritt540 ). Man beachte, daß die Reihenfolge der Schritte530 und540 umgekehrt werden kann, so daß die Fuzzy-Datenbank418 vor der Übertragung des Befehls und der codierten Version der Bitmap422 aktualisiert wird. Der Client-Agent118 kopiert danach die Bitmap422 in eine bestimmte Stelle in dem flüchtigen Speicher114 des Client, wie durch den Server-Agent160 spezifiziert (Schritt560 ). - Bei einer Ausführungsform wartet der Server-Agent
160 nicht auf eine Bestätigung von dem Client-Agent118 , da die der Bitmap422 zugeordnete codierte Bitmap erfolgreich empfangen und verarbeitet wurde. Statt dessen nimmt der Server-Agent160 an, daß die codierte Bitmap ordnungsgemäß verarbeitet wurde, und streamt weiter Protokollbefehle, ohne auf die Rückgabe einer Bestätigungsnachricht von dem Client-Agent118 zu warten. Der Server-Agent160 verfolgt die Anzahl der seit der letzten gelesenen Bestätigung ausgegebenen Protokollbefehle. Der Server-Agent160 blockiert die weitere Übertragung von Protokollbefehlen, wenn die Anzahl eine vordefinierte Schwelle erreicht. Durch die Schwelle kann der Client-Agent118 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-Datenbank420 gefunden wird, sendet der Server-Agent160 einen Befehl zu dem Client110 , der den Client-Agent118 anweist, die dem Fuzzy-Schlüssel419 zugeordnete Bitmap422 aus der persistenten Speicherung120 des Client in den flüchtigen Speicher114 des Client zu kopieren (Schritt550 ). Diesen Befehl begleitet nicht nur der Fuzzy-Schlüssel419 , der die interessierende Bitmap422 eindeutig identifiziert, sondern auch der durch den Server-Agent160 (wie zuvor beschrieben) erzeugte zugeordnete Index, um die spezifische Speicherstelle in dem flüchtigen Speicher114 des Clients zu identifizieren, der die kopierte Bitmap422 empfängt und speichert. Durch Kopieren der Bitmap422 in den flüchtigen Speicher114 , statt einfach nur ihre Stelle in der persistenten Speicherung120 aufrechtzuerhalten, kann die Erfindung schnell auf mehrere Anforderungen zum Entnehmen der Bitmap422 reagieren, die in schneller Abfolge empfangen werden oder ohne viel dazwischentretende Cache-Aktivität, indem die Bitmap422 beim Auftreten der ersten Anforderung kopiert wird. - Wenn die Bitmap
422 trotz der Anwesenheit des entsprechenden Fuzzy-Schlüssels419 in der Fuzzy-Datenbank418 nicht gerade in der persistenten Speicherung120 gespeichert ist, gibt der Client-Agent118 (als Antwort auf den zuvor von dem Server-Agent160 ausgegebenen Befehl „LACHE_READ_DISK_OBJECT") eine Nachricht an den Server-Agent160 zurück, die angibt, daß die Bitmap422 fehlt. Nach dem Empfang dieser Nachricht sendet der Server-Agent160 die der Bitmap422 zugeordneten codierten Bitmapdaten neu zu dem Client-Agent118 (Schritt530 ). Man beachte, daß der Server-Agent160 eine sequentielle Liste aller zu dem Client-Agent118 gesendeten solchen LACHE_READ_DISK_OBJECT-Befehle, für die der Server-Agent160 noch keine Bestätigung empfangen hat, führt, so daß der Server-Agent160 eine empfangene Bestätigung ordnungsgemäß einer bestimmten Bitmap422 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-Agent118 weiter den ankommenden Protokollstrom liest, aber ihn nicht verarbeitet. Statt dessen konstruiert der Client-Agent118 eine Warteschlange zum Empfang des Befehlsstroms, der weiter von dem Server150 nach dem Befehl, der die Bitmap422 nicht in der persistenten Speicherung120 finden konnte, fließt. Der Client-Agent118 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 Bitmap422 zu erzeugen. Um die fehlende Bitmap422 in dem ankommenden Befehlsstrom zu erkennen, sucht der Client-Agent118 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 Bitmap422 (d.h. dem 64-Bit-CRC und 32-Bit Länge) XOR-verknüpft wird. Der Server-Agent160 erzeugt die Recovery-Markierung nach dem Empfang einer Keine-Bestätigung-Nachricht von dem Client-Agent118 . Wenn die Bitmap422 ankommt, speichert der Client-Agent118 sie in seinem flüchtigen Speicher114 (Schritt560 ) (d.h. wo die Bitmap422 gespeichert worden wäre, wenn das Objekt zu Anfang in der persistenten Speicherung120 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-Agent118 den ankommenden Strom von Protokollbefehlen, der von dem Server150 über das Netzwerk140 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 Client110 gesendet hätte, wenn der Server-Agent160 zu Anfang gewußt hätte, daß sich die Bitmap422 nicht in der persistenten Speicherung120 befand. - Bei einer Ausführungsform erleichtert die vorliegende Erfindung das Finden der Bitmap
422 in der persistenten Speicherung120 des Clients durch Speichern der Bitmap422 in einer Datei, deren Dateiname durch Codieren des Fuzzy-Schlüssels419 zusammen mit der Bitmap422 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üssels419 als Teil des Dateinamens der Bitmap ermöglicht dem Client-Agent118 außerdem eine schnelle Extraktion der Fuzzy-Schlüssel-Informationen aus dem Dateinamen und ein Senden dieser zu dem Server-Agent160 während eines anfänglichen Bootens des Client110 oder beim Start der Client/Server-Sitzung. Die extrahierten Fuzzy-Schlüssel können in einer Reihenfolge zu dem Server150 ü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-Datenbank418 hinzugefügt und aus dieser gelöscht. Erstens sendet beim Herauffahren des Client-Agent118 oder bei Herstellung einer Client-Server-Sitzung mit dem Server-Agent160 der Client-Agent118 Befehle zu dem Server-Agent160 , um für jede entsprechende Bitmap422 in der persistenten Speicherung120 des Client (die Fuzzy-Schlüssel begleiten die Befehle des Client-Agent) Befehle zu dem Server-Agent160 hinzuzufügen. Der Client-Agent118 kann eine Sendeliste führen, die für das Senden von Fuzzy-Schlüsseln beim Herauffahren zu dem Server150 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-Agent118 beim Lesen des Verzeichnisses seiner persistenten Speicherung120 und dem Führen einer Repräsentation des Verzeichnisses in dem flüchtigen Speicher114 gebildet werden. In einem Aspekt der Erfindung extrahiert der Client-Agent118 Fuzzy-Schlüssel-Informationen aus dem Dateinamen der Datei, die die Bitmap422 enthält, wenn die Repräsentation des Verzeichnisses erstellt wird. In vorbestimmten Abfrageintervallen fragt zweitens der Client-Agent118 seine persistente Speicherung120 ab, um die Bitmaps zu bestimmen, die sich gerade in seiner persistenten Speicherung120 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-Agent160 , so wie es notwendig ist, um die Fuzzy-Datenbank418 des Servers zu aktualisieren. Wenn der Server-Agent160 einen Befehl zum Schreiben einer Bitmap in die persistente Speicherung120 des Client zu dem Client-Agent118 sendet, erzeugt und speichert drittens der Server-Agent160 einen entsprechenden Fuzzy-Schlüssel419 in der Fuzzy-Datenbank418 . - Die Übertragung von Bitmap-Daten von dem Server
150 zu dem Client110 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 Netzwerks140 bestimmt wird. Zum Beispiel kann der Server-Agent180 durch dynamisches Bewerten der Bandbreite des Netzwerks140 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-Cache114 entsprechend vor. Während die codierte Bitmap414 übertragen wird, kann die Übertragungszeit überwacht werden, um die Leistungsfähigkeit des Netzwerks140 zu bestimmen. Wenn die Übertragungszeit einen Schwellenwert übersteigt, kann der Client-Agent118 jegliche bereits in seinem Cache114 gespeicherten Bitmap-Daten entnehmen und die übrigen Teile der Bitmapdaten entweder in Echtzeit, während sie in dem Cache114 empfangen werden, oder in vorbestimmten Intervallen anzeigen. Auf diese Weise erkennt ein Benutzer des Clients, daß der Client114 immer noch an den Bitmapdaten operiert und kann erkennen, daß sich der Client110 nicht in einem Häng- oder erfolglos-/Fehler-Zustand befindet. Durch Approximieren der effektiven Netzwerkbandbreite für den Client110 und entsprechendes Anpassen des Verhaltens des Servers150 kann der Server-Agent160 zum Beispiel den Client-Agent118 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 Bitmapdaten414 und einen Start_StopWatch-Befehl zu dem Client-Agent118 . Der Client-Agent118 reagiert auf den Start_StopWatch-Befehl, indem er den aktuellen Zeit-Tick liest und ihn in ein erstes Arrayelement schreibt. Nachdem die codierte Bitmap414 empfangen wurde, reagiert der Client-Agent118 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-Agent160 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 Server150 verlangsamen und ein Überlaufen an der Quelle verhindern kann, wenn der Server150 Daten schneller erzeugt, als der Client110 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 Speicherung120 des Client behalten zu werden und werden also während nachfolgender Client/Server-Sitzungen nicht in dem Client110 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 Speicherung120 enthalten sein werden. Bei einer Ausführungsform werden ganze Spalten dann in zwei Phasen angezeigt. Die erste Phase bereitet den Cache114 mit etwaigen fehlenden Daten vor und die zweite Phase entnimmt dann die Spalte aus dem Cache114 , wobei möglicherweise mehr als ein Cache-gespeichertes Objekt benutzt wird. Die Spalte wird deshalb auf atomische Weise auf dem Anzeigeschirm128 angezeigt. Wenn die Netzwerkverbindung langsam ist, können wie bereits besprochen die Spalten einzeln atomisch angezeigt werden, um dem Benutzer an dem Client110 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 Maus126 . Da die Rollbefehle zu dem schnellen Server gesendet werden, führt der Server150 die Rolloperationen aus und gibt die assoziierten Daten schneller zurück, als der langsame Client110 (oder das langsame Netzwerk140 ) die Ergebnisse auf seinem Anzeigeschirm128 anzeigt. Wenn der Benutzer an dem Client110 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 Server150 bereits die Rollbefehle verarbeitet und die entsprechenden Daten zu dem Client110 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 Client110 (über die oben beschriebenen StopWatch-Befehle), um eine laufende Mittelwertschätzung ihrer jeweiligen Geschwindigkeiten zu berechnen. Auf diese Weise schätzt der Server-Agent160 , wie lange ein bestimmtes Rollereignis dauern wird (Geschwindigkeit mal die Anzahl beteiligter Pixel), um im Server150 verarbeitet zu werden, und wie lange erwartungsgemäß der Client110 brauchen wird, und wenn die erwartete Verarbeitungszeit im Client110 größer als die des Servers150 ist, wird die Serververarbeitung durch die entsprechende Zeitdifferenz suspendiert, um so Client110 und Server150 im wesentlichen im Gleichschritt zu halten. Dieser Ansatz führt zu viel weniger Überrollereignissen aufgrund der Zeitverzögerung zwischen Client110 und Server150 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 Anzeige128 des fernen Client110 remoten. Mit Bezug auf6 führt der Server150 das Anwendungsprogramm158 aus, das eine Textkette erzeugt, die zu dem Client110 geremotet werden muß. Der Server-Agent160 fängt die von dem Anwendungsprogramm158 zu dem Serverbetriebssystem156 gesendeten Befehle ab, die die Textkette betreffen und bewirkt, daß der Anzeigetreiber612 des Server-Agent160 die textbezogenen Informationen verarbeitet und eine Reihe von Protokollbefehlen614 für die Anzeige einer Textkette416 auf der Anzeige128 des Clients einer Reihe von Protokollbefehlen614 zu dem Client-Agent118 zu senden. Zum Beispiel führt die Anwendung158 Prozeduraufrufe aus, die die Textfarbe und die Hintergrundfarbe (hier „Hello!") setzen. Die Ausführung der TextOut-Prozedur618 durch die Anwendung158 löst die Ausführung der DrvTextOut-Prozedur620 des Anzeigetreibers612 aus. Wie gezeigt, definiert die DrvTextOut-Prozedur620 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-Agent118 sendet. Die Protokollbefehle werden von dem Client-Agent118 empfangen und verarbeitet und er führt Prozeduren614 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 Server150 kann außerdem andere Protokollbefehle zu dem Client-Agent118 senden, die den Client-Agent118 anweisen, die zugeordnete Glyphen in dem flüchtigen Speicher114 und/oder in der persistenten Speicherung120 wie zuvor beschrieben zu speichern. Der Client-Agent118 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-Agent118 das Client-Betriebssystem116 an, die Bitmap auf dem Anzeigeschirm128 des Client110 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-Agent160 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 Weg700 zwei Liniensegmente710 ,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 Weg700 auf einem Anzeigeschirm128 angezeigt wird (1 ). Diese Approximation ist notwendig, weil die einzelnen Pixel auf dem Anzeigeschirm128 von höchstens acht anderen Pixeln umgeben werden, die entweder perfekt horizontal, vertikal oder 45 Grad diagonal relativ zueinander liegen und alle Liniensegmente710 ,720 , die in einem anderen Gesamtwinkel liegen, müssen also durch eine Reihe von Streifen approximiert werden. Folglich und mit Bezug auf den beispielhaften Weg700 von7B besteht das Segment710 aus vier Streifen712 ,714 ,716 ,718 , wobei die einzelnen Pixel (durch quadratische Blöcke abgebildet) jedes Streifens712 ,714 ,716 ,718 in 45-Grad-Diagonalen relativ zueinander organisiert sind und das Segment720 besteht aus fünf Streifen722 ,724 ,726 ,728 ,730 wobei die einzelnen Pixel jedes Streifens722 ,724 ,726 ,728 ,730 horizontal relativ zueinander organisiert sind. - Bei einer Ausführungsform und mit Bezug auf
7B und8A analysiert der Server-Agent160 den Weg700 zu Liniensegmenten710 ,720 , die jeweils eine bestimmte Länge und einen bestimmten Winkel aufweisen (Schritt810 ). Dann wird ein Array von Liniensegmenten gebildet, um quantisierte Segmentinformationen (die im folgenden als ein quantisierter Winkel oder „QA" bezeichnet werden) für jedes Liniensegment710 ,720 zu speichern (Schritt820 ). Anstatt den einem bestimmten Segment710 ,720 zugeordneten Absolutwinkel zu berechnen, bestimmt der Server-Agent160 auch mit Bezug auf8B statt dessen, in welchen der 16 quantisierten Winkel880 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 Liniensegment710 ,720 zu Streifen (712 ,714 ,716 ,718 ;722 ,724 ,726 ,728 bzw.730 ) (Schritt830 ). Die Länge jedes Streifens eines bestimmten Segments710 ,720 wird danach in einem Streifenlängenarray zur weiteren Verarbeitung gespeichert (Schritt840 ). Bei einer Ausführungsform wird der Algorithmus bLine von Windows NT zum Zerlegen des Weges700 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-Agent160 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 Weges700 zusammen mit den quantisierten Winkeldaten in dem Liniensegmentarray und Pixellängendaten in dem Streifenmengenarray, um einen Protokollstrom zu bilden (Schritt850 ). Die codierten Daten werden dann einem Kompressionsalgorithmus unterzogen, um die Datenredundanzen in dem Protokollstrom auszunutzen (Schritt860 ), und die komprimierten graphischen Liniendaten werden danach zur Decodierung und weiteren Verarbeitung zu dem Client-Agent118 gesendet (Schritt870 ). - Mit Bezug auf die beispielhafte Darstellung in
9 und die quantisierten Winkelinformationen von10 umfaßt das Liniensegment710 vier Streifen712 ,714 ,716 ,718 , die innerhalb des quantisierten Winkels 1 positioniert sind. Die Anfangskoordinate des Weges700 , die von dem Server-Agent160 als Teil der komprimierten graphischen Liniendaten zu dem Client-Agent118 gesendet werden, entsprechen dem ersten Pixel im Streifen712 (positioniert am Ursprung von880 ). Die graphischen Liniendaten umfassen ferner die Pixellänge jedes Streifens712 ,714 ,716 ,718 in dem Segment710 . - Da das Segment
710 keiner perfekten Horizontalen, Vertikalen oder 45-Grad-Diagonalen entspricht, wird jeder nachfolgende Streifen714 ,716 und718 in dem Segment710 wie in10 angegeben um einen bestimmten Deltawert eingestellt, um den Gesamtwinkel des Segments710 ordnungsgemäß zu approximieren. Bei dem vorliegenden Beispiel zeigt der Client-Agent118 , um von dem letzten Punkt in dem vorherigen Streifen712 zu dem Anfangspunkt des nächsten nachfolgenden Streifen714 zu gelangen, den Streifen714 im wesentlichen bei demselben x-Wert und bei einem zunehmenden y-Wert an. Dieser Prozeß wird für jeden Schritt in dem Segment710 sowie für die Streifen in dem Segment720 , 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 in10 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-Agent118 ü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 Anzeigeschirm128 des Client110 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-Agent160 über die Menge an für Außerbildschirm-Oberflächen verfügbarem lokalen flüchtigen Speicher114 , so daß der Server-Agent160 keine Außerbildschirm-Oberfläche bildet, die größer als der verfügbare Speicher des Clients ist. Danach bildet der Server-Agent160 eine Außerbildschirm-Oberfläche und sendet sie mit Anweisungen zum Speichern der Oberfläche in dem flüchtigen Speicher114 des Client-Agent118 zu dem Client-Agent118 . Der Client-Agent118 wählt einen bestimmten Teil seines flüchtigen Speichers114 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-Agent160 bei einer Ausführungsform Befehle an den Client-Agent118 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 Netzwerk140 übertragen werden muß. Alternativ dazu kann die Quelle der Onscreen-Oberfläche so eingeschränkt werden, daß sie entweder einer fern im Server150 gespeicherten Außerbildschirm-Oberfläche oder einer lokal in dem Client110 gespeicherten Außerbildschirm-Oberfläche entspricht. Zu typischen Operationen an der Außerbildschirm-Oberfläche, die von dem Server-Agent160 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-Agent160 an das Server-Betriebssystem156 gestellte Aufrufe, die die Erzeugung einer Außerbildschirm-Oberfläche betreffen, ab und der Server-Agent160 bildet ein Duplikat der Oberfläche und speichert es zusammen mit seinen Attributen in dem lokalen Speicher des Servers. Der Server-Agent160 gibt dann einen Befehl an den Client-Agent118 aus, die Außerbildschirm-Oberfläche in dem flüchtigen Speicher114 des Clients zu bilden (Schritt1102 ). 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 (Schritt1104 ). Der Server-Agent160 weist den Client-Agent118 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 (Schritt1106 ). Der Client-Agent118 reagiert auf die Anweisungen des Server-Agent, indem er die identifizierte Oberfläche/Bitmap in die Außerbildschirm-Oberfläche des Clients kopiert (Schritt1108 ). Wenn ein von dem Server-Agent160 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-Agent118 einen C2S_OSS_Error-Befehl zu dem Server-Agent160 , der den erfolglos-Zustand anzeigt (Schritt1110 ). Als Reaktion auf den Fehlerzustand verwendet der Server-Agent160 seine lokale Kopie der Außerbildschirm-Oberfläche als Quelle für die Aktualisierung der Außerbildschirm-Oberfläche des Clients. Der Client-Agent118 verwendet die von der lokalen Kopie des Servers empfangenen Informationen zur Aktualisierung der Außerbildschirm-Oberfläche auf dem Client110 und zur Korrektur etwaiger verfälschter/schmutziger Regionen der Außerbildschirm-Oberfläche. Alternativ sendet, wenn ein Fehlerzustand angetroffen wird, der Server-Agent160 seine lokale bzw. Duplikatkopie der Außerbildschirm-Oberfläche (Schritt1112 ) zu dem Client-Agent118 und befiehlt dem Client-Agent118 , 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)
- 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 ). - Verfahren nach Anspruch 1, wobei das graphische Datenelement einer codierten Bitmap entspricht.
- Verfahren nach Anspruch 1, wobei das graphische Datenelement einer Glyphe entspricht.
- Verfahren nach Anspruch 1, wobei das graphische Datenelement einem Streifen entspricht.
- Verfahren nach Anspruch 1, wobei das graphische Datenelement einer Außerbildschirm-Oberfläche entspricht.
- 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. - Verfahren nach Anspruch 6, wobei die Größe des graphischen Datenelements nicht größer als eine maximale Cache-Objektgröße ist.
- Verfahren nach Anspruch 1, wobei der Fuzzy-Schlüssel (
419 ) einer Länge des graphischen Datenelements entspricht. - 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 ). - Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: periodisches Empfangen mehrerer Fuzzy-Schlüssel (
419 ) von dem Agent (118 ). - Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: wenn der Index (
416 ) gefunden wird, Übertragen des Index (416 ) zu dem Agent (118 ). - 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. - 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. - 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. - 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.
- 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.
- 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.
- 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. - 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. - System nach Anspruch 19, wobei das graphische Datenelement einer codierten Bitmap entspricht.
- System nach Anspruch 19, wobei das graphische Datenelement einer Glyphe entspricht.
- System nach Anspruch 19, wobei das graphische Datenelement einem Streifen entspricht.
- System nach Anspruch 19, wobei das graphische Datenelement einer Außerbildschirm-Oberfläche entspricht.
- System nach Anspruch 19, wobei der Index (
416 ) eine Speicherstelle in einem an die abgesetzte Anzeigeeinrichtung (128 ) angekoppelten Cache (114 ) identifiziert. - System nach Anspruch 19, wobei die Größe des graphischen Datenelements nicht größer als die maximale Cache-Objektgröße ist.
- System nach Anspruch 19, wobei der Fuzzy-Schlüssel einer Länge des graphischen Datenelements entspricht.
- 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. - 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.
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)
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)
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株式会社 | ガスケットの製造方法 |
-
2001
- 2001-05-25 US US09/866,374 patent/US20020029285A1/en not_active Abandoned
- 2001-05-25 WO PCT/US2001/017059 patent/WO2001093525A2/en active Application Filing
- 2001-05-25 US US09/866,531 patent/US7028025B2/en not_active Expired - Lifetime
- 2001-05-25 US US09/866,520 patent/US7127525B2/en not_active Expired - Lifetime
- 2001-05-25 US US09/866,375 patent/US7490166B2/en active Active
- 2001-05-25 AU AU2001274972A patent/AU2001274972A1/en not_active Abandoned
- 2001-05-29 DE DE60109631T patent/DE60109631T2/de not_active Expired - Lifetime
- 2001-05-29 EP EP01937791A patent/EP1285517B1/de not_active Expired - Lifetime
- 2001-05-29 DE DE60112103T patent/DE60112103T2/de not_active Expired - Lifetime
- 2001-05-29 KR KR1020077013942A patent/KR100783217B1/ko active IP Right Grant
- 2001-05-29 KR KR1020077013944A patent/KR100824120B1/ko active IP Right Grant
- 2001-05-29 ES ES03005806T patent/ES2246433T3/es not_active Expired - Lifetime
- 2001-05-29 ES ES03005805T patent/ES2240872T3/es not_active Expired - Lifetime
- 2001-05-29 JP JP2002501120A patent/JP2004501445A/ja not_active Withdrawn
- 2001-05-29 WO PCT/US2001/017323 patent/WO2001092973A2/en active Application Filing
- 2001-05-29 DE DE60112107T patent/DE60112107T2/de not_active Expired - Lifetime
- 2001-05-29 CA CA002408924A patent/CA2408924A1/en not_active Abandoned
- 2001-05-29 ES ES01937791T patent/ES2240461T3/es not_active Expired - Lifetime
- 2001-05-29 DE DE60109602T patent/DE60109602T2/de not_active Expired - Lifetime
- 2001-05-29 ES ES03005803T patent/ES2246432T3/es not_active Expired - Lifetime
- 2001-05-29 AU AU6349001A patent/AU6349001A/xx active Pending
- 2001-05-29 KR KR1020027016060A patent/KR100783216B1/ko active IP Right Grant
- 2001-05-29 KR KR1020077013943A patent/KR100824121B1/ko active IP Right Grant
- 2001-05-29 AU AU2001263490A patent/AU2001263490B2/en not_active Expired
- 2001-05-29 IL IL15279701A patent/IL152797A0/xx active IP Right Grant
-
2002
- 2002-11-12 IL IL152797A patent/IL152797A/en unknown
-
2003
- 2003-02-27 HK HK03101450.8A patent/HK1049415B/zh not_active IP Right Cessation
-
2006
- 2006-03-03 US US11/368,235 patent/US7502784B2/en not_active Expired - Fee Related
-
2007
- 2007-07-29 IL IL184891A patent/IL184891A/en active IP Right Grant
-
2009
- 2009-02-06 US US12/366,861 patent/US8099389B2/en not_active Expired - Fee Related
-
2010
- 2010-02-19 US US12/709,179 patent/US8290907B2/en not_active Expired - Lifetime
Also Published As
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 |