DE10051024A1 - Methode zum Einrichten optimaler intermediärer Cachingpunkte durch Gruppierung von Programmelementen in einem Softwaresystem - Google Patents
Methode zum Einrichten optimaler intermediärer Cachingpunkte durch Gruppierung von Programmelementen in einem SoftwaresystemInfo
- Publication number
- DE10051024A1 DE10051024A1 DE10051024A DE10051024A DE10051024A1 DE 10051024 A1 DE10051024 A1 DE 10051024A1 DE 10051024 A DE10051024 A DE 10051024A DE 10051024 A DE10051024 A DE 10051024A DE 10051024 A1 DE10051024 A1 DE 10051024A1
- Authority
- DE
- Germany
- Prior art keywords
- group
- program elements
- cache
- caching
- given
- 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.)
- Granted
Links
Classifications
-
- 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]
-
- 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/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by 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/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- 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
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
Abstract
Ein Satz von Programmelementen (z. B. Umcodierer) wird zu einer administrativen Einheit zusammengefasst. Anstatt die einzelnen Ausgänge eines jeden Programmelements im Cache zu speichern, wird vorzugsweise nur der Gesamtausgang des Satzes von Programmelementen als ganzes im Cache gespeichert. Die Technik der Erfindung ermöglicht die wirksame Wiederverwendung eines Zwischeninhalts. In einem Beispiel einer Client-Server-basierten Implementierung, die einen in einem Server befindlichen Umcodierungsdienst betrifft, können die im Cache gespeicherten Informationen von mehreren Serverinstanzen gemeinsam genutzt werden, um eine redundante Verarbeitung zu vermeiden. Mit der vorliegenden Erfindung kann ein Caching-Mechanismus in einem komplexen Softwaresystem benutzerkonfigurierbar erweitert werden, indem optimale intermediäre Cachingpunkte eingerichtet werden, die durch in langen Berechnungen definierte Programmgruppen definiert werden.
Description
Die vorliegende Erfindung betrifft allgemein die Verwaltung
von Daten in einem komplexen Computersystem und im Besonderen
ein Verfahren zum Wiederverwenden von Softwareelementen in
einem solchen System, zur Vereinfachung eines effizienten
intermediären Caching von Daten.
Intermediaries sind Recheneinheiten, die an einer beliebigen
Stelle in einem Datenstrom, beispielsweise einem HTTP-Strom,
plaziert werden können und die so programmiert werden, dass
sie die Daten auf ihrem Weg durch den Datenstrom
kundenspezifisch anpassen, personalisieren oder auf andere
Weise destillieren oder verbessern. Ein Caching Web Proxy ist
ein einfaches Beispiel für ein HTTP-Intermediary. Eine
Intermediary-basierte Programmierung ist besonders nützlich,
um einem System weitere Funktionen hinzuzufügen, wenn der
Datenerzeuger (z. B. ein Server oder eine Datenbank) oder der
Datenverbraucher (z. B. ein Browser) nicht verändert werden
können.
Web Intermediaries (oder WBI, ausgesprochen "webby"), eine
bekannte Intermediary-Architektur und -Framework, dient der
Erzeugung von intermediären Applikationen im Web. Grundlegend
ist WBI ein programmierbarer Web Proxy und Web Server, der in
Verbindung mit einem Web Development Kit mit Java APIs für
den Aufbau von intermediären Web-Applikationen innerhalb des
WBI-Frameworks benutzt werden kann. Als Beispiele für
intermediäre Applikationen wären zu nennen: Umcodierung eines
Inhalts zwischen verschiedenen Formaten, Personalisierung,
Passwort- und Privatsphärenverwaltung, Interaktivität und
Inhaltsfilterung. WBI ist nur ein Beispiel für eine
Architektur zur Verwaltung von Web Intermediaries. Andere
konzeptionelle Techniken umfassen beispielsweise die
Verkettung von Java-basierten Servlets.
Umcodierung ist der Prozess, in dem ein Datenobjekt einer
bestimmten Darstellung in eine andere Darstellung umgewandelt
wird. Typische Beispiele sind die Konvertierung innerhalb
eines Medientyps (z. B. wird ein Bild, das nach einem
bestimmten Standard codiert wurde, in ein Bild umcodiert, das
nach einem zweiten Standard codiert wurde) sowie die
Konvertierung zwischen verschiedenen Medientypen (z. B.
Sprache in Text). Ein Umcodierer ist ein Funktionsmodul,
typischerweise in Form eines Computercodes, das einen
Datenstrom als Eingang annimmt und einen Datenstrom als
Ausgang erzeugt. Der erzeugte Ausgangsstrom basiert auf dem
Eingangsstrom und der gewünschten Funktion des Umcodierers.
Ein Satz von "n" Umcodierern kann verkettet oder in anderer
Form zu einer Gruppe zusammengefasst sein, um ein Umcodierer-
Proxy-Framework zu bilden. In einem gegebenen Umcodierer
könnte die Umcodierungsfunktion eine Operation aus einer
beliebigen Anzahl von Operationen sein, wie z. B.: ein
Anforderungsmodifizierer, ein Inhaltseditor, ein
Inhaltsgenerator oder ähnliches. Der Ausgangsstrom eines
gegebenen Umcodierers kann auch auf einer ursprünglichen
Anforderung oder einer modifizierten Anforderung, einer
histographischen Information auf bereits vorhandenen
Umcodierungspfaden, und/oder auf externen Präferenzen (z. B.
Netzanschlussgeschwindigkeit, Fähigkeiten des Kundengeräts,
User-Präferenzen und ähnliches) basieren, die in einer
separaten Datenbank eingerichtet wurden.
Das WBI-Backbone bietet eine gut definierte Schnittstelle,
bekannt als Teilschicht, die Anforderungen annimmt und
Antworten erzeugt. In einem Server, der das WBI-Framework
unterstützt, können viele Teilschichten vorhanden sein, die
jeweils Anforderungen von einer anderen Quelle annehmen (z. B.
von einem Proxy, der einen Port abhört, einem seriellen Port,
einem Servlet und ähnliches) und ein bestimmtes Protokoll
abwickeln (z. B. HTTP, FTP, POP3 und ähnliche). Eine
Teilschicht gibt Anweisungen an das WBI-Backbone, wie eine
Anforderung verarbeitet werden soll, indem sie einen
Regelsatz bereitstellt, der beschreibt, wie eine Antwort
erzeugt werden soll. Das Backbone dient als Regel-Maschine
(RM), welche die vorhandenen Regeln zur Abbildung einer
Anforderung auf einen Satz von Plugins verwendet, die dann
die eigentliche Umcodierung des Inhalts durchführen. Bei der
Erzeugung einer Antwort auf eine gegebene Anforderung kann
auch eine Reihe von Zwischenschritten (Plugins) ausgeführt
werden. Es ist wünschenswert, den Ausgang dieser
Zwischenschritte wieder zu verwenden, weil viele
Anforderungen (von verschiedenen Clients) wahrscheinlich
gemeinsame Schritte enthalten und weil der Overhead für die
erneute Erzeugung eines ähnlichen Ausgangs durch einen
Caching-Mechanismus vermieden werden kann. Es kann auch
vorkommen, dass ein gegebener Client eine Ressource
anfordert, die bereits vor kurzem angefordert wurde. Nehmen
wir einmal an, dass ein User sich in sein Konto einloggt, um
den Status eines Online-Auftrags zu prüfen. Wenn sich der
Auftragsstatus nicht verändert hat, dürfte es nicht notwendig
sein, die Statusseite, die an den User zurückgemeldet werden
soll, nochmals zu erzeugen. Die Seite müßte im Cache
gespeichert sein, wobei die Lebensdauer der Seite von den
Cache-Ablaufmodalitäten gesteuert wird.
Eines der Hauptprobleme beim Caching von Zwischendaten ist
jedoch die geeignete Granularität des Caching. Wenn die
Anzahl der intermediären Punkte, an denen während der
Ausführung die Daten im Cache gespeichert werden, nicht mit
der Zeit in Einklang gebracht wird, die für das Erzeugen und
Sichern der Zwischendaten benötigt wird, ist das intermediäre
Caching für die System-Performanz gegenproduktiv.
Die vorliegende Erfindung spricht das Problem an, wie ein
intermediäres Caching in einem komplexen Softwaresystem, wie
es beispielsweise oben beschrieben wurde, wirksam
durchgeführt werden kann.
Entsprechend der vorliegenden Erfindung wird ein Satz von
Programmelementen (z. B. Umcodierer) in einer Gruppe
zusammengefasst und für Caching-Zwecke als eine Einheit
verwaltet. Anstatt die einzelnen Ausgänge eines jeden
Programmelements im Cache zu speichern, wird vorzugsweise nur
der Gesamtausgang der Programmelement-Gruppe als Ganzes im
Cache gespeichert. Die Technik der Erfindung ermöglicht die
wirksame Wiederverwendung der Programmelemente und des
dadurch erzeugten Zwischeninhalts. In einer illustrativen
Client-Server-Implementierung, z. B. einem Umcodierer-Proxy
eines Servers, können die im Cache gespeicherten
Informationen von mehreren Serverinstanzen genutzt werden, um
einer redundanten Verarbeitung der Client-Anforderungen
vorzubeugen.
Es ist demnach eine spezielle Aufgabe der vorliegenden
Erfindung, Programmelemente in einem komplexen Softwaresystem
zusammenzufassen, indem ein Gesamtausgang im Cache
gespeichert wird, so dass Berechnungen nicht wiederholt
werden und ein unnötiges und zu häufiges Caching vermieden
wird. Es ist eine besondere Aufgabe der Erfindung, diesen
Caching-Mechanismus in der Domäne der Umcodierung von Daten
aus dem Web bereitzustellen.
Es ist eine weitere Hauptaufgabe der Erfindung, einen
Mechanismus bereitzustellen, mit dem ein Satz von
zusammengehörigen Umcodierern für Caching-Zwecke in einer
Gruppe zusammengefasst werden kann. Als Anschauungsbeispiel
dient eine Gruppe von zusammengehörigen Umcodierern, die
einen Satz von Software-Routinen darstellen, welche Bilder
eines gegebenen Bildformats (z. B. .gif) in ein oder mehrere
andere Bildformate (z. B. .png, .jpeg, oder ähnliche)
umcodieren. Ein anderes Beispiel einer Gruppe von
zusammengehörigen Umcodierern sind Umcodierer, die Daten von
einem Datenformat in ein anderes Datenformat konvertieren.
Zum Zwecke des intermediären Caching entsprechend der
vorliegenden Erfindung können die einzelnen Umcodierer in
einer Gruppe also eine gegebene Beziehung zueinander haben.
In einem besonderen Ausführungsbeispiel wird eine Reihe von
Umcodierern, die in einem Umcodierungs-Framework eingesetzt
werden und eine Reihe von Präferenzkategorien (z. B. bestimmte
Netzwerk-, Benutzer- oder Gerätepräferenzen) gemeinsam
nutzen, in einer Gruppe zusammengefasst, um die Häufigkeit
des intermediären Caching im Framework zu reduzieren. Es wird
also nicht der Ausgang eines jeden Umcodierers, sondern nur
der Gruppenausgang im Cache gespeichert.
Entsprechend einem anderen Merkmal der vorliegenden Erfindung
wird eine Gruppe von zusammengehörigen Umcodierern
vorzugsweise von einem Systemadministrator definiert. Indem
man dem Administrator die Kontrolle über die Granularität des
intermediären Caching ermöglicht, wird die System-Gesamt-
Performanz über viele Client-Anforderungen verteilt und
dadurch maximiert.
Mit der vorliegenden Erfindung kann ein Caching-Mechanismus
in einem komplexen Softwaresystem benutzerkonfigurierbar
erweitert werden, indem optimale intermediäre Cachingpunkte
eingerichtet werden. Diese werden von Programmgruppen
definiert, die für lange Berechnungen verwendet werden.
Hierdurch werden die Raum- und Zeitressourcen innerhalb des
Systems miteinander in Einklang gebracht.
In der obigen Beschreibung wurden einige der mehr
zweckdienlichen Aufgaben und Vorteile der vorliegenden
Erfindung angesprochen. Diese sind als reine
Anschauungsbeispiele für einige der herausragenden Merkmale
und Anwendungen der Erfindung zu betrachten. Viele andere
vorteilhafte Ergebnisse können erzielt werden, wenn die
beschriebene Erfindung auf andere Weise eingesetzt wird, oder
wenn die Erfindung, wie nachstehend beschrieben, modifiziert
wird. Dementsprechend werden andere Aufgaben und ein
umfassenderes Verständnis der Erfindung anhand der folgenden
ausführlichen Beschreibung des bevorzugten
Ausführungsbeispiels deutlich.
Ein umfassenderes Verständnis der vorliegenden Erfindung
sowie ihrer Vorteile erhält man aus der nachstehenden
ausführlichen Beschreibung in Verbindung mit den beiliegenden
Zeichnungen. Es zeigt:
Fig. 1 ein Blockdiagramm, das ein Umcodierungs-Backbone
veranschaulicht, wie es für die Registrierung, das Laden, die
Initialisierung und die Verwaltung eines Satzes von
Umcodierern eingesetzt werden kann;
Fig. 2 ein vereinfachtes Blockdiagramm eines
Gruppenadministrationsmechanismus der vorliegenden Erfindung;
Fig. 3 einen repräsentativen Dialog einer graphischen
Benutzeroberfläche, mit dem ein Systemadministrator gegebene
Umcodierer entsprechend der vorliegenden Erfindung einer oder
mehreren Gruppen zuweisen kann;
Fig. 4a ein Blockdiagramm einer Teilschicht einer WBI-
Clientsitzung, in der die vorliegende Erfindung implementiert
werden kann;
Fig. 4b ein Blockdiagramm einer Teilschicht einer WBI-
Transaktions-Sitzung, die in Verbindung mit der Teilschicht
der Clientsitzung aus Fig. 4a verwendet wird;
Fig. 5 ein Blockdiagramm eines komplexen Softwaresystems,
das eine Vielzahl von Programmen veranschaulicht, die
sequentiell und parallel arbeiten;
Fig. 6, wie eine Gruppe von Programmelementen zur
Wiederverwendung zusammengefasst wird, gemäß der vorliegenden
Erfindung; und
Fig. 7 ein anderes Beispiel der Grundsätze der vorliegenden
Erfindung im Zusammenhang mit einer Web-
Umcodierungsanwendung.
Als kurze Hintergrundinformation und unter Bezugnahme auf
Fig. 1, die vorliegende Erfindung kann in einem
Umcodierungs-Backbone 100 implementiert werden, in dem
einzelne Umcodierer 102a-102n installiert sind und verwaltet
werden. Ein bekanntes Umcodierungs-Backbone ist WeB
Intermediaries ("WBI" oder webby). In WBI wird ein gegebener
Umcodierer manchmal als MEG bezeichnet, womit die jeweilige
Funktion gekennzeichnet wird (z. B. Anforderungsmodifizierer,
Inhaltseditor, Inhaltsgenerator), die von dem Umcodierer
ausgeführt wird. Im typischen Fall umfasst ein Umcodierer
eine Reihe von Software-Routinen. Das Umcodierungs-Backbone
100 lässt sich in unterschiedlicher Weise einfach
implementieren, beispielsweise als selbständiger Proxy-
Server, als verwaltetes Java-Servlet in einer Web-
Serveranwendung (z. B. IBM WebSphere), die für alle
Anforderungen registriert ist, als aufrufbarer Dienst (über
eine direkte API), oder als von jeder serverseitigen
Anwendung aufrufbares Enterprise Java Bean (EJB). Die nun
folgende Beschreibung erfolgt zwar in Zusammenhang mit einem
WBI-basierten Umcodierungs-Backbone, ist jedoch nicht als
Einschränkung der vorliegenden Erfindung zu betrachten. Die
im folgenden beschriebenen Konzepte sind voneinander trennbar
und können in einer anderen Servlet-basierten Umgebung oder
in anderer Form direkt in einem Serverprogramm oder als
Plugin eines solchen Programms codiert sein.
Bezugnehmend auf Fig. 1; ein gegebener Umcodierer 102 wird
in dem Backbone von einem Administrator entweder statisch
(z. B. in einer Eigenschaften-Datei 104) oder dynamisch (über
eine Konsole 106 am Server) registriert. Alternativ kann der
Umcodierer über eine externe Java-basierte GUI registriert
werden. Nach der Registrierung werden ein oder mehrere
Umcodierer bei der Initialisierung des Backbone geladen
(d. h., wenn das Backbone, je nach Konfiguration, aus einer
Befehlszeile gestartet wird, ein Servlet-Wrapper
initialisiert wird, usw.) Nachdem die einzelnen Umcodierer
geladen sind, kann das Backbone 100 die Umcodierer über die
Schnittstellen 114 abfragen.
Ein intermediäres Caching von Daten im WBI-Framework ist
wünschenswert, wenn dieses Caching sich entsprechend mit der
Zeit in Einklang bringen läßt, die zur Erzeugung und
Sicherung der Zwischendaten benötigt wird. Die vorliegende
Erfindung löst dieses Problem, indem sie bestimmte MEGs zu
einer oder mehreren MEG- (oder Umcodierer-)-Gruppen
zusammenfasst. Anstatt die Ausgänge eines jeden MEG in einer
gegebenen Gruppe im Cache zu speichern, wird nur der
endgültige Ausgang zwischengespeichert. Fig. 2 zeigt einen
bevorzugten Mechanismus, der für die Bereitstellung dieser
Gruppenfunktionen entsprechend der Erfindung eingesetzt
werden kann.
Insbesondere ist ein Gruppenadministrationsmanager 200 für
das Zusammenfassen von MEGs zu MEG-Gruppen verantwortlich.
Eine Reihe von MEG-Gruppen kann entsprechend einer Reihe von
in der Datenbank 202 gespeicherten Ausführungsprioritäten
ausgeführt werden. Weiter können einer gegebenen MEG auch
eine Reihe von Abhängigkeiten zugeordnet sein, z. B. von
welchen Netzwerkpräferenzen, welchen User-Präferenzen,
welchen Gerätepräferenzen die MEG abhängig ist und so weiter.
Repräsentative Netzwerkpräferenzen enthalten beispielsweise
unterstützte und nicht unterstützte Erweiterungen, Bilder,
Komprimierungsquelle und ähnliches. Zu den repräsentativen
User-Präferenzen gehört eine Text/Bild-Link-Präferenz, ein
Typ der gewünschten Quellenkomprimierung, wie Bilder
angeordnet werden, bevorzugte Bildskalierungsfaktoren oder
ähnliches. Zu den repräsentativen Gerätepräferenzen gehören
unterstützte und nicht unterstützte Formate, Gerätetypen,
gewünschte Inhaltstypen und ähnliches. Die Abhängigkeiten
werden, vorzugsweise als (Code, Wert)-Paare, in einer
Datenbank 204 gespeichert.
Wenn die Vorteile der Caching-Techniken der Erfindung genutzt
werden sollen, kann ein Plugin-Schreibsystem die
Präferenzinformation beim Bearbeiten der MEG durch den Autor
bereitstellen. Der Administrator, der die MEG installiert,
verwendet dann eine Schnittstelle 206 des
Gruppenadministrationsmanagers 200, um die MEG einer
gegebenen Gruppe zuzuweisen, um zu kennzeichnen, ob der
Ausgang einer bestimmten Gruppe im Cache gespeichert werden
soll, oder nicht, um die Reihenfolge der Ausführung der MEGs
innerhalb einer gegebenen Gruppe zu definieren, um die
Reihenfolge der Ausführung der MEG-Gruppen zu definieren, und
so weiter. Die Schnittstelle 206 kann auch verwendet werden,
um neue Gruppen zu erzeugen, um die Präferenzen einer
gegebenen MEG zu verändern oder zu modifizieren, und
ähnliches. Die Schnittstelle 206 kann eine graphische
Benutzerschnittstelle (GUI), eine Befehlszeilen-
Schnittstelle, oder eine andere passende Implementierung
sein. Eine repräsentative GUI-Implementierung wird im
folgenden ausführlich beschrieben.
In dem bevorzugten Ausführungsbeispiel der Erfindung werden
MEGs mit verwandten Funktionen in einer MEG-Gruppe
zusammengefasst. Auf diese Weise werden Programmelemente
innerhalb des Softwaresystems leicht nutzbar gemacht. Bei
einer gegebenen Gruppe von miteinander verwandten MEGs kann
es sich also beispielsweise um diejenigen Plugins handeln,
die ein Bildformat in ein anderes umwandeln, z. B. .gif in
.png oder .jpeg, um Plugins, die einen Datentyp in einen
anderen umwandeln, z. B. AFP (Advanced Function Printing
Language) in SVG (Scalable Vector Graphics, eine XML 2D
Graphiksprache nach dem W3C Standard), Postscript in HTML
oder andere geeignete Beziehungen. Verwandte MEGs können
solche sein, die Datentypen unabhängig von den Gerät-, User-
oder Netzwerkpräferenzen umwandeln, oder solche, die eine
Dokumentenauszeichnungssprache in eine andere umwandeln. Eine
Gruppe kann MEGs umfassen, die Präferenzkategorien, gegebene
Präferenzen oder ähnliches gemeinsam nutzen. Eine weitere Art
von MEG-Gruppe können verschiedene MEGs sein, die eine
Dokumentobjektmodelldarstellung (DOM-Darstellung) mit einem
gegebenen Inhalt im Rahmen der W3C DOM-Richtlinien erzeugen.
Die vorliegende Erfindung ist natürlich im Hinblick auf eine
gegebene MEG-Gruppe nicht auf einen bestimmten Beziehungstyp
beschränkt. Bezugnehmend auf Fig. 2; um die Funktionen der
MEG-Gruppe zu unterstützen, liefert eine MEG eine gegebene
Information mit den folgenden Methoden an den
Gruppenadministrationsmanager:
- a) String getGroup() - rufe logischen Namen der Gruppe ab, zu der die MEG gehört;
- b) String getDependencies() - rufe logische Namen der Kategorien ab, von denen diese MEG abhängig ist; und
- c) boolean isNeverCached() - möglicher Platzhalter, um die Fähigkeit der besitzenden Gruppe zum Caching zu optimieren.
Die folgenden Methoden werden dann dem Ausführungsprozessor
in dem Umcodierungsdienst bereitgestellt:
- a) Enumeration enumerateGroups();
- b) StringgetDependenciesForGroup() - erzeugt eine Vereinigung aller Abhängigkeiten, die von den MEGs in der Gruppe zurückgemeldet wurden;
- c) ExecuteMEGLoop(Group, Requestobject)
Immer dann, wenn Enumeration erscheint, kann es sich um ein
Objekt handeln, das seine eigene Enumeration wrappert oder
implementiert. Wenn die Gruppenfunktionalität eingesetzt
wird, sollte der Administrator außerdem sicherstellen, dass
die erste ausgewählte Gruppe eine Antwort (d. h., einen
Ausgang) erzeugt. Dies ist eine Standardvoraussetzung.
Um diese Funktionen zu implementieren, wird eine
registerAdmin(Admin)-Methode in dem Umcodierungsdienst zu der
Proxy-Klasse hinzugefügt, um eine Mitteilung über die
administrative Information zu erhalten. Die Caching- und
Sitzungsverwaltungsimplementierung von Run.java (wird
nachfolgend beschrieben) erzeugt Proxy-Lade-Plugins (aber
keine Teilschichten) aus den Eigenschaften-Dateien. Dann wird
eine Teilschicht erzeugt (die auch Admin verwaltet), und
diese Teilschicht wird als Administrator für das WBI-Backbone
sowie als Teilschicht für den Proxy registriert. Die
Teilschicht erhält eine Mitteilung über die MEG-
Registrierungen und gibt die Information an einen
Ausführungsprozessor weiter, um, unter Anwendung der oben
beschriebenen Methoden, die entsprechenden Gruppierungen
vorzunehmen. Wenn er abgefragt wird, meldet der
Gruppenadministrationsmanager ein Enumerationobjekt zurück,
und zwar enumerateReverseOrderedGroups(), bei dem die letzte
auszuführende Gruppe die erste auf der Liste ist.
Entsprechend einem Ausführungsbeispiel der vorliegenden
Erfindung werden die Gruppenprioritäten also vorzugsweise vom
Administrator definiert und die MEGs werden während der
Initialisierung an ihrer getGroup()-Schnittstellenmethode
aufgerufen, um den logischen Gruppennamen für die Gruppe zu
holen, zu der sie gehören. Die Gruppen erhält man mit der
hasMoreElements()-Methode und der nextElement()-Methode.
Ein durchschnittlicher Fachmann wird erkennen, dass die MEGs
durch den Gruppenadministrationsmechanismus alternativ auch
dynamisch in ihre Gruppen gerufen werden können. Insbesondere
kann eine gegebene MEG-Gruppe "on-the-fly" (also dynamisch)
definiert und erzeugt werden, da sich der Umcodierungsdienst
an verschiedene Betriebsbedingungen anpasst.
Fig. 3 zeigt eine repräsentative GUI-Schnittstelle, die zur
Implementierung der Gruppenadministrationsfunktionen der
vorliegenden Erfindung eingesetzt werden kann. Das zur
Veranschaulichung gezeigte Anzeigentableau ist ein
Gruppenadministrations-Tableau 300, das ein Anzeigefeld
'Gruppenreihenfolge auswählen', 302, ein Anzeigefeld
'Umcodierer zuweisen', 304, und ein Anzeigefeld 'Verfügbare
Umcodierer', 306, enthält. Der Administrator weist mit Hilfe
eines herkömmlichen Drag-and-Drop-Mechanismus (oder einer
anderen geeigneten User-E/A-Technik) die verfügbaren
Umcodierer den Gruppen zu und bestimmt dann die Reihenfolge
der Gruppen für die Ausführung. Wie bereits oben erwähnt kann
die Zuordnung von Umcodierern zu Gruppen auch dynamisch
erfolgen. In dem Anschauungsbeispiel wird die Gruppe C zur
Ausführung vor den Gruppen A und B plaziert. Gruppe C umfasst
Umcodierer, die unabhängig von Geräte-/User-
/Netzwerkpräferenz von AFP entweder nach HTML oder SVG
konvertieren. Gruppe A hat nur einen einzigen Umcodierer, der
von SVG nach HTML konvertiert. Gruppe B berücksichtigt
Geräte-/User-/Netzwerkpräferenzen und reduziert HTML zu WML
und HTML zu VoxML (Voice Markup Language, ein anderer XML-
Standard). Die verfügbaren Umcodierer (die als 'ungruppiert'
gekennzeichnet wurden) umfassen einen Umcodierer, der AFP in
Postscript konvertiert, einen Umcodierer für HTML zu PvC HTML
(für universelle Rechner, die nicht über die volle HTML-
Funktionalität verfügen) und einen Umcodierer für Xerox zu
AFP. Natürlich dienen alle oben genannten
Umcodiererfunktionen sowie ihre repräsentativen Gruppierungen
nur der anschaulichen Darstellung. Die
Gruppenadministrationsfunktion der Erfindung ist nicht
beschränkt auf eine bestimmte Umcodierungsfunktion, auf eine
bestimmte MEG-Gruppe oder bestimmte Gruppenkonstituenten.
Der Benutzerdialog umfasst auch ein Schaltfeld 'Neue Gruppe
erstellen', 308. Wenn dieses Schaltfeld angeklickt wird,
öffnet sich ein Dialog (nicht dargestellt), der eine Liste
mit den verfügbaren Umcodierern enthält. Aus dieser Liste
kann der Administrator eine benutzerdefinierte Gruppe
auswählen und dann die Ergebnisse sichern. Bei Auswahl eines
gegebenen Umcodierers (z. B. aus dem Gruppendialogtableau 300
der Fig. 3 oder aus dem Dialog 'Neue Gruppe erstellen') wird
von der administrativen Schnittstelle ein Umcodiererdialog
(nicht dargestellt) geöffnet, in dem der Administrator
gegebene Eigenschaften des Umcodierers definieren, Netzwerk-,
User- oder Geräteabhängigkeiten modifizieren und ähnliche
Operationen durchführen kann.
Gemäß der vorliegenden Erfindung soll das intermediäre
Caching von Gruppenausgangsdaten die Wiederverwendung von
MEGs in einem Server mit Umcodierungsdienst vereinfachen. Es
soll nun zur Veranschaulichtung ein WBI-Framework beschrieben
werden, in dem die vorliegende Erfindung eingesetzt wird.
Die Fig. 4a-4b veranschaulichen einen Umcodierungsdienst,
der z. B. als Web-Server eingesetzt werden kann. Mit diesem
Service ist die Verwaltung und das Caching von
Clientsitzungen im Rahmen eines WBI-basierten Backbone
möglich. Zu diesem Zweck werden zwei spezialisierte
Teilschichten eingesetzt, die als Clientsitzungs-Teilschicht
bzw. als Umcodierungssitzungs-Teilschicht bezeichnet werden.
Allgemein ausgedrückt hört eine Teilschicht einen oder
mehrere Ports auf ankommende Anforderungen von einem Client
(beispielsweise einem Browser) ab und gibt diese
Anforderungen über das Backbone und die registrierten Plugins
weiter, von denen eine an den Client zurückzumeldende Antwort
erzeugt wird. Wie man sehen wird, nutzt eine gegebene
Teilschicht einen Caching-Proxy, um sowohl Umcodierungs-
Zwischenschritte als auch den endgültigen Ausgang im Cache zu
speichern, so dass es nicht notwendig ist, bei jeder
Anforderung einer gegebenen Ressource einen Ausgang neu zu
erzeugen. Zu diesem Zweck werden die Gruppen-Caching-
Techniken der vorliegenden Erfindung eingesetzt.
Die Clientsitzungs-Teilschicht 400, die in Fig. 4a
dargestellt ist, ist für das Identifizieren von
Clientsitzungen verantwortlich. Clientsitzungen können
beispielsweise durch Plazieren von Cookies oder durch eine
andere Implementierung identifiziert werden. Die Teilschicht
für die Umcodierungssitzung, 450, die in Fig. 4b dargestellt
ist, ist sowohl für das Caching der Umcodierungs-
Zwischenschritte als auch des endgültigen Ausgangs
verantwortlich. Vorzugsweise wird für diese Funktionen ein
vorhandener Caching-Proxy 402 verwendet, da bereits viele
dieser Proxies verfügbar sind. Bekanntlich arbeitet ein
Caching-Proxy mit einem Pull-Mechanismus. Im einzelnen wird
eine Ressource vom Cache angefordert und, falls verfügbar,
zurückgemeldet; andernfalls holt der Cache die Ressource
selbst und meldet sie dann dem Client. Dieses Verhalten
erfordert, dass alle Anforderungen einer Ressource über den
Cache laufen.
In einer bevorzugten WBI-Umgebung, wie sie beispielsweise in
den Fig. 4a-4b dargestellt ist, wird ein URL-
Umschreibsystem in Antwort auf eine gegebene Client-
Anforderung verwendet. Wenn ein URL mit einer ursprünglichen
Anforderung an der Clientsitzungs-Teilschicht 400 ankommt,
wird dieser URL so modifiziert, dass er auf die Teilschicht
der Umcodierungssitzung, 450, zeigt. Der umgeschriebene URL
codiert den ursprünglichen URL sowie alle Umcodierer (d. h.
MEGs), die zur Erfüllung der Anforderung laufen müssen. Die
Teilschicht 400 der Clientsitzung fordert dann diesen
umgeschriebenen URL über den Cache 402 an (eine proxifierte
Anforderung). Bei einem Cache-Miss (z. B. wenn die Ressource
zum ersten Mal angefordert wird), ruft die Teilschicht 450
der Umcodierungssitzung die richtigen MEGs auf, um die
Antwort zu erzeugen. Weil die Antwort über den Cache 402
erfolgte, wird die von der Teilschicht 450 der
Umcodierungssitzung erzeugte Antwort im Cache gespeichert und
bei allen nachfolgenden Anforderungen für diese Ressource
direkt vom Cache zurückgemeldet (unter Beachtung der für den
Cache gültigen Ablaufregeln).
Die Teilschicht 400 der Clientsitzung und die Teilschicht 450
der Umcodierungssitzung arbeiten zusammen, um eine
Umcodierung des Inhalts über das WBI-Backbone durchzuführen,
und den Ausgang der Umcodierung zur Wiederverwendung bei
späteren Anforderungen im Cache zu speichern. Vorzugsweise
verwenden sowohl die Teilschicht der Clientsitzung als auch
die Teilschicht der Umcodierungssitzung das HTTP-Protokoll.
Bezugnehmend auf Fig. 4; die Teilschicht 400 der
Clientsitzung umfasst einen Protokollinterpretierer 404 an
ihrem Eingang und einen Protokollcodierer 406 an ihrem
Ausgang. Der Protokollinterpretierer 404 hört einen
dedizierten Port auf HTTP-Anforderungen von Clients ab und
arbeitet mit dem Sitzungsmanager 408 zusammen, um
Clientsitzungen herzustellen und/oder bereits bestehende
Clientsitzungen zu erkennen. Die Bezeichnung (a) in der Figur
weist darauf hin, dass der Protokollinterpretierer einen
Client-Code bereitstellt, wenn er Teil des Protokolls ist.
Wird kein Sitzungscode bereitgestellt, wird eine
Standardsitzung verwendet. Die Teilschicht der Clientsitzung
umfasst außerdem zwei Regelmaschinen (RMs) 409 und 410. Die
Teilschicht gibt die Anforderungen im WBI-Backbone über einen
registrierten Anforderungsinterpretierer weiter.
Wenn bei der Teilschicht eine Anforderung eingeht, erzeugt
diese RequestHandle- und ResponseHandle-Objekte. Das Objekt
RequestHandle kapselt den InputStream vom Socket 405, der
erzeugt wurde, als die Teilschicht die Verbindung
(serversocket.accept()) akzeptierte, und den
ProtocolInterpreter ein. Das Objekt ResponseHandle kapselt
den OutputStream des Socket und den ProtocolEncoder ein. Das
Backbone nutzt den Protokollinterpretierer 402, um den
InputStream der Anforderung in eine Form zu 'interpretieren',
die von den registrierten MEGs genutzt werden kann. Wenn der
Protokollinterpretierer 402 in dem InputStream ein Cookie
oder ein anderes Sitzungserkennungszeichen findet, fordert er
den Sitzungsmanager 408 auf, ein Sitzungsobjekt
zurückzumelden, das die Clientsitzung repräsentiert. Die
Bezeichnung (b) in der Figur weist darauf hin, dass der
Client-Code von einer Cookie-Implementierung abgeleitet sein
kann. Die Bezeichnung (f) weist darauf hin, dass das
Sitzungsobjekt zu den anforderungsspezifischen Daten
hinzugefügt werden kann, die von dem Request-Handle-Objekt
gepflegt werden. Nachdem eine bereits bestehende Sitzung,
falls vorhanden, erkannt wurde, fragt die Teilschicht der
Clientsitzung den Gruppenadministrationsmanager 412 und seine
zugeordnete Datenbank 414 nach den Gruppen-
Ausführungsprioritäten.
Wie bereits weiter oben beschrieben, werden die
Gruppenprioritäten vorzugsweise vom Administrator definiert.
Wie durch die Bezeichnung (e) wiedergegeben wird, werden
gegebene MEGs während der Initialisierung an ihrer
GetGroup()-Schnittstellenmethode aufgerufen, um den logischen
Namen einer Gruppe abzurufen, zu dem sie gehören. Der
Gruppenadministrationsmanager 412 meldet die MEG-Gruppen
zurück, vorzugsweise in umgekehrter Reihenfolge; das
bedeutet, dass die erste zurückgemeldete Gruppe die letzte
Gruppe ist, die ausgeführt wird. Für jede zurückgemeldete
Gruppe fragt die Teilschicht der Clientsitzung ein
Präferenzsystem 416 und seine zugehörige Datenbank 418 ab, um
eine Liste der Abhängigkeiten (Präferenzwerte) zu bekommen.
Diese Abhängigkeiten, bei denen es sich, wie weiter oben
beschrieben, vorzugsweise um (Code, Wert)-Paare handelt,
werden dann von dem Präferenzsystem 416 zu einer einzigen
Kette komprimiert. Die Bezeichnung (c) in der Figur weist
darauf hin, dass Präferenzcodes gewöhnlich über alle
Serverinstanzen homogen sind. Diese Abhängigkeiten sind
vorzugsweise die Vereinigung aller Abhängigkeiten der
einzelnen MEGs innerhalb der Gruppe, zu der die MEGs gehören.
In einem repräsentativen Ausführungsbeispiel werden diese
Abhängigkeiten vom Präferenzsystem über die
Schnittstellenmethode getDependencies() abgerufen. Die
Bezeichnung (i) in der Figur weist auf eine optionale Prüfung
des Clientsitzungsobjekts an dem angegebenen Punkt hin.
Nachdem alle Gruppen und ihre Abhängigkeiten vorliegen, führt
der Generator 418 eine Umschreibung des URL durch. Der neue
URL enthält die ursprüngliche Anforderung, die MEG-Gruppen
und ihre Abhängigkeiten, und ein Cookie (oder ein anderes
Sitzungserkennungszeichen), wenn vom Sitzungsmanager 408 ein
solches angegeben wurde. Dieser neue URL wird dann von der
Teilschicht 450 der Umcodierungssitzung (in Fig. 4b) über
die Cache-Schnittstelle 420 angefordert. Die Bezeichnung (d)
weist darauf hin, dass der Generator 418 vorzugsweise eine
abstrakte Klasse, beispielsweise Bytestore, verwendet, um das
Caching beweglicher Fenster und andere Funktionen zu
ermöglichen.
Der neue URL kann beispielsweise folgende Form aufweisen:
GET http://TSS:8000/www.cnn.com/group1/compressed_data1/group 2/compressed_data2.
GET http://TSS:8000/www.cnn.com/group1/compressed_data1/group 2/compressed_data2.
Wenn sich die Ressource dieses URL momentan im Cache 402
befindet, wird die Ressource direkt vom Cache zurückgemeldet
und an den ProtocolEncoder 406 weitergegeben, wo sie codiert
und über den Outputstream in ResponseHandle an den Client
zurückgegeben wird. Befindet sich die Ressource jedoch
momentan nicht im Cache, leitet der Cache 402 die Anforderung
an die Teilschicht 450 der Umcodierungssitzung weiter. Wie
noch zu sehen sein wird, gibt die Teilschicht 450 dann die
Anforderung an das Backbone weiter, um die richtige Antwort
zu erzeugen.
Wenn eine Anforderung dann schließlich komplett ist und von
der Teilschicht der Umcodierungssitzung zurückgemeldet wird,
kann in der Antwort ein zu speicherndes Cookie enthalten
sein. In diesem Fall gibt die Teilschicht 400 der
Clientsitzung das Cookie an den Sitzungsmanager 408 weiter,
so dass dieser Client in eine Sitzung eingebunden werden
kann. Spätere Anforderungen von diesem Client würden dann vom
Sitzungsmanager 408 erkannt, wie oben beschrieben.
In Fig. 4 enthält die Teilschicht der Clientsitzung einen
anderen Umcodierungseditor 422. Wie durch die Bezeichnung (g)
angezeigt wird, kann der Umcodierer verwendet werden, um
optionale Client-Cachingregeln zu implementieren und zu
verwalten, die sich von den Cachingregeln eines
Ursprungsservers unterscheiden. Die Client-Cachingregeln
können von einem Administrator aufgestellt werden. Hierdurch
ist eine erneute Umcodierung mit einer gegebenen
Zeitgranularität möglich, die auf der Umcodierungs-Proxy-
Ebene gesteuert wird.
Bezugnehmend auf Fig. 4b; die Teilschicht 450 der
Umcodierungssitzung hört einen dedizierten Port auf
Anforderungen von der Teilschicht 400 der Clientsitzung ab.
Wie weiter oben bereits erwähnt, besteht die Funktion der
Teilschicht 450 der Umcodierungssitzung darin, die
Anforderung durch das WBI-Backbone weiterzugeben, um die
gewünschte Umcodierung zu erreichen. Wie noch zu sehen ist,
nutzt die Teilschicht der Umcodierungssitzung viele
Komponenten der Teilschicht der Clientsitzung.
Bei einer Eingangsanforderung der oben beschriebenen Form
stellt die Teilschicht 450 der Umcodierungssitzung fest, dass
der URL mehr als einen Gruppennamen enthält. Die Teilschicht
baut daher zuerst einen neuen URL auf, vorzugsweise durch
Entfernen des Namens und der Daten der letzten Gruppe. Der
daraus resultierende URL sieht wie folgt aus:
GET http://TSS:8000/www.cnn.com/group1/compressed_data1. Die Teilschicht fordert dann diesen neuen URL über die Cache- Schnittstelle an. Solange ein Cache-Miss vorliegt, fordert die Teilschicht der Umcodierungssitzung in der gleichen Weise rekursiv URLs über den Cache 402 an. Wenn es sich hierbei um die erste Anforderung für diesen speziellen Satz von MEG- Gruppen handelt, kommt es nicht zu einem Cache-Hit. Sobald die Teilschicht also feststellt, dass der URL nur eine einzige MEG-Gruppe/ein einziges Datenpaar enthält, sendet sie die Anforderung in das Backbone, um den Inhalt zu erzeugen. Weil die Anforderung ursprünglich jedoch über die Cache- Schnittstelle 402 erfolgte, wird der von dieser letzten MEG- Gruppe zuletzt zurückgemeldete OutputStream im Cache gespeichert. Er steht als Eingang für die vorherige MEG- Gruppe zur Verfügung. Wenn die Kette abgewickelt wird, wird jeder Umcodierungs-Zwischenschritt (d. h., der Ausgang einer gegebenen MEG-Gruppe) im Cache gespeichert und steht somit zur Verfügung, falls nachfolgende Anforderungen denselben Ausgang benötigen. Wie durch Bezeichnung (h) angegeben wird, ist dieser Schritt eine rekursive Anforderung an die Umcodierungs-Teilschicht, die immer noch auf den Cache zugreift und entweder auf prev = null kommt und sich auflöst, oder ein Zwischenergebnis aus dem Cache erhält und sich von diesem Punkt an auflöst. Wie durch Bezeichnung (j) angezeigt wird, wenn Generatoren Ursprungsdaten über HTTP abrufen, sollten sie dies über die Cache-Schnittstelle tun, so dass auch die ursprünglichen (d. h. die nicht umcodierten) Ressourcen im Cache gespeichert werden. In Fig. 4b ist die Raute "1", die mit der Bezugszahl 460 bezeichnet wurde, ein Entscheidungspunkt, der den nachfolgenden Pfad durch das System bestimmt. Wenn der endgültige Ausgang erzeugt wurde, kann der ProtocolEncoder aufgerufen werden, um ein Ergebnis an den Anforderer zurückzugeben. Wie bereits oben beschrieben, war der Anforderer in diesem Fall tatsächlich die Teilschicht 400 der Clientsitzung. Die Teilschicht der Clientsitzung gibt dann die Ressource an den realen Client, nämlich an den anfordernden Client-Browser. Hiermit ist die Verarbeitung abgeschlossen.
GET http://TSS:8000/www.cnn.com/group1/compressed_data1. Die Teilschicht fordert dann diesen neuen URL über die Cache- Schnittstelle an. Solange ein Cache-Miss vorliegt, fordert die Teilschicht der Umcodierungssitzung in der gleichen Weise rekursiv URLs über den Cache 402 an. Wenn es sich hierbei um die erste Anforderung für diesen speziellen Satz von MEG- Gruppen handelt, kommt es nicht zu einem Cache-Hit. Sobald die Teilschicht also feststellt, dass der URL nur eine einzige MEG-Gruppe/ein einziges Datenpaar enthält, sendet sie die Anforderung in das Backbone, um den Inhalt zu erzeugen. Weil die Anforderung ursprünglich jedoch über die Cache- Schnittstelle 402 erfolgte, wird der von dieser letzten MEG- Gruppe zuletzt zurückgemeldete OutputStream im Cache gespeichert. Er steht als Eingang für die vorherige MEG- Gruppe zur Verfügung. Wenn die Kette abgewickelt wird, wird jeder Umcodierungs-Zwischenschritt (d. h., der Ausgang einer gegebenen MEG-Gruppe) im Cache gespeichert und steht somit zur Verfügung, falls nachfolgende Anforderungen denselben Ausgang benötigen. Wie durch Bezeichnung (h) angegeben wird, ist dieser Schritt eine rekursive Anforderung an die Umcodierungs-Teilschicht, die immer noch auf den Cache zugreift und entweder auf prev = null kommt und sich auflöst, oder ein Zwischenergebnis aus dem Cache erhält und sich von diesem Punkt an auflöst. Wie durch Bezeichnung (j) angezeigt wird, wenn Generatoren Ursprungsdaten über HTTP abrufen, sollten sie dies über die Cache-Schnittstelle tun, so dass auch die ursprünglichen (d. h. die nicht umcodierten) Ressourcen im Cache gespeichert werden. In Fig. 4b ist die Raute "1", die mit der Bezugszahl 460 bezeichnet wurde, ein Entscheidungspunkt, der den nachfolgenden Pfad durch das System bestimmt. Wenn der endgültige Ausgang erzeugt wurde, kann der ProtocolEncoder aufgerufen werden, um ein Ergebnis an den Anforderer zurückzugeben. Wie bereits oben beschrieben, war der Anforderer in diesem Fall tatsächlich die Teilschicht 400 der Clientsitzung. Die Teilschicht der Clientsitzung gibt dann die Ressource an den realen Client, nämlich an den anfordernden Client-Browser. Hiermit ist die Verarbeitung abgeschlossen.
Der Schutzbereich der vorliegenden Erfindung lässt viele
Varianten zu. Wenn beispielsweise von einer MEG innerhalb
einer Gruppe eine Ausführungsunterbrechung verursacht wird,
kann ein Controller für die Ausführung von Anforderungen
andere MEGs in dieser Gruppe überspringen. Die Funktionen der
Gruppenadministration können außerdem erweitert werden, um
Gruppenregeln vorzukonfigurieren, so dass unter bestimmten
Umständen ganze MEG-Gruppen übersprungen werden können.
Gemäß der vorliegenden Erfindung werden also Software-
Elemente in Gruppen zusammengefasst, wobei der Ausgang der
Gruppe zur späteren Wiederverwendung im Cache gespeichert
wird. Das Zusammenfassen von Software-Elementen in Gruppen
ist wünschenswert, um weniger Platz im Cache zu verbrauchen
und gleichzeitig sicherzustellen, dass der Cache nicht
überlastet wird. Der Ausgang einer gegebenen Gruppe wird im
Cache gespeichert und in späteren Rechenvorgängen
wiederverwendet. Es wird nun ein weiteres Anschauungsbeispiel
des Erfindungskonzepts unter Bezugnahme auf die Fig. 5-7
beschrieben.
Fig. 5 zeigt ein herkömmliches komplexes Softwaresystem 500.
Zur anschaulichen Darstellung sind die Eingangsdaten A 502
der Eingang in das Programm A 504. Der Ausgang G 520 ist der
endgültige Ausgang des Systems. Programm A 504 erzeugt als
Dateneingang die Daten AB 505 und die Eingangsdaten AD 507
für das Programm B 506 bzw. das Programm D 508. Programm B
506 erzeugt die Daten BC 509 für Programm C 510. Programm C
510 und Programm D 511 erzeugen zusammen die Daten CDF 512
als Eingang in das Programm E 514. Programm E 514 erzeugt
seinerseits die Daten EF 516 für Programm F 518. Programm F
erzeugt den endgültigen Ausgang G 520.
In vielen Websituationen enthalten die Eingangsdaten 502 zwei
Elemente, ein festes Element und ein variables Element. Die
Eingangsdaten A können beispielsweise Daten von Webseiten
sowie User-Präferenzen darüber enthalten, wie diese
Webseitendaten für die Anzeige umcodiert werden sollen (z. B.
ohne Bilder). Im typischen Fall sind die Webseitendaten ein
festes Element und die User-Präferenzen sind variable
Elemente. Fig. 6 zeigt das Computersystem der Fig. 5, in
dem eine andere Gruppe variabler Elemente als Ersteingang
verwendet wird. Als Anschauungsbeispiel sind die
Eingangsdaten A* 602 der Eingang für das Programm A 604. Der
Ausgang G* 620 ist der endgültige Ausgang des Systems.
Programm A 604 erzeugt die Eingangsdaten AB 605 und die
Eingangsdaten AD* 607 für Programm B 606 bzw. Programm D 608.
Programm B 606 erzeugt die Daten BC 609 für Programm C 610.
Programm C 610 und Programm D 608 erzeugen zusammen die Daten
CD*F 612 als Eingang in das Programm E 614. Programm E 614
erzeugt seinerseits die Daten EF* 616 für Programm F 618.
Programm F erzeugt den endgültigen Ausgang G* 620.
Wie anhand eines Vergleichs der Fig. 5-6 zu erkennen ist,
werden die Programme B und C zweimal ausgeführt, obwohl ihr
Eingang und Ausgang in beiden Operationen gleich ist. Wie
bereits oben beschrieben wurde, wird mit der vorliegenden
Erfindung diese redundante Ausführung dieser Programmelemente
überflüssig, weil die Elemente in Gruppen zusammengefasst
werden (wie durch die gestrichelte Linie in Fig. 6
angedeutet wird) und nur der Ausgang der gesamten Gruppe,
nicht aber der Ausgang von Programm B und der Ausgang von
Programm C, im Cache gespeichert werden.
Fig. 7 zeigt ein konkreteres Beispiel der vorliegenden
Erfindung. In diesem Beispiel ist der Eingang 701 ein HTML-
Dokument mit einem .gif-Bild. In Antwort auf eine erste
Anforderung dieses Eingangs von einem Client ist der an den
ersten User zurückgegebene Ausgang 703 ein PDF-Dokument mit
einem .jpeg-Bild anstelle des .gif-Bildes. In Antwort auf
eine zweite Anforderung von einem Client ist der an den
zweiten User zurückgegebene Ausgang 705 ein SVG-Dokument mit
dem .jpeg-Bild. In diesem Beispiel veranschaulicht die Gruppe
702 die Elemente, die für Caching-Zwecke zusammengefasst
wurden, vorzugsweise unter Verwendung der weiter oben
beschriebenen Gruppenadministrationsfunktionen. Die Gruppe
702 umfasst ein erstes Programmelement 704, welches das .gif-
Bild analysiert, ein zweites Programmelement 706, welches das
.gif-Bild in ein .png-Format konvertiert, und ein drittes
Programmelement 708, welches das .png-Bild in ein .jpeg-
Format konvertiert. Nur der Ausgang 707 der Gruppe (nämlich
das dritte Programmelement 708) wird im Cache gespeichert und
dann wieder verwendet, um die Antworten auf die einzelnen
Clientanforderungen zu vereinfachen.
Wie bereits weiter oben beschrieben wurde, um die
Gruppenadministration zu unterstützen, sollte den in dem
Umcodierer-Framework verwendeten MEGs folgendes zugeordnet
werden: ein logischer Gruppenname, zu dem eine MEG gehört,
logische Namen von Kategorien, von denen eine MEG abhängt,
und (optional) ein Hinweis, dass eine MEG niemals im Cache
gespeichert wird (entweder weil sie personalisierte Daten
enthält oder aus anderen sicherheitstechnischen Gründen).
Vorzugsweise arbeitet MEG in Verbindung mit dem
Gruppenadministrationsmechanismus. Der MEG-Autor sollte eine
adäquate Dokumentation der MEGs bereitstellen, wenn er
Plugins liefert, so dass vom Gruppenadministrator bei der
Klassifizierung der MEGs intelligente Entscheidungen
getroffen werden können.
Die vorliegende Erfindung hat gegenüber dem Stand der Technik
zahlreiche Vorteile. Mit der vorliegenden Erfindung kann ein
Caching-Mechanismus in einem komplexen Softwaresystem
benutzerkonfigurierbar erweitert werden, indem optimale
intermediäre Cachingpunkte eingerichtet werden. Diese werden
von Programmgruppen definiert, die in langen Berechnungen
verwendet werden, wodurch ein Ausgleich zwischen den
räumlichen und zeitlichen Ressourcen in dem System geschaffen
wird. Vorzugsweise werden MEGs abhängig davon in Gruppen
zusammengefasst, ob die einzelnen MEGs zueinander eine
bestimmte Beziehung haben, oder nicht. Diese besondere
Beziehung kann sich auf Bildformate, Datenformate, Netzwerk-,
Gerät- oder Userpräferenzen oder ähnlichen Kriterien
beziehen.
Ein intermediäre Caching von Bild-Umcodierungen gemäß der
vorliegenden Erfindung erhöht die System-Performanz
beträchtlich. Vorgeschlagene MEG-Gruppierungen können
Bildgruppen umfassen, wann immer dies geeignet erscheint,
denn erst durch das Caching von Bildern werden im Betrieb des
Umcodierungs-Frameworks signifikante Leistungsvorteile
erzielt. Typischerweise machen Bilddaten einen wesentlichen
Teil des Netzverkehrs aus (weit über 50%, möglicherweise bis
zu 70%), wenn die Größe das entscheidende Kriterium ist. Aus
dem Caching von Bildgruppen und ihrer Wiederverwendung bei
der Umcodierung, entsprechend der Erfindung, lassen sich also
signifikante Leistungsvorteile erzielen.
Die vorliegende Erfindung kann mit "pull"-Caching-Lösungen
Dritter (z. B. Squid, WTE und ähnliches) verwendet werden, so
dass User bereits vorhandene Caching-Software nutzen können.
Wenn Sie im WBI-Framework eingesetzt werden, müssen bereits
vorhandene Umcodierer nicht modifiziert werden, um zu einem
endgültigen Ausgang einer Gruppe derartiger Umcodierer zu
gelangen. Diese Cachingpunkte werden tatsächlich ohne
Overhead oder Aufwand hinzugefügt, indem man die neuen
steckbaren Komponenten einfach auf der WBI-"Kern"-Codebasis
installiert/konfiguriert. Die Entwickler von Umcodierern, die
den Cachingentwurf verwenden möchten, müssen also keine
zusätzlichen Schnittstellen in ihrem Code bereitstellen,
damit diese Cachingpunkte entstehen. Vielmehr erhält man
durch eine einfache Konfiguration über die Administrations-
Tableaus und zusätzliche Plugin-Installationsschnittstellen
auf bekannten WBI-Plugins genügend Informationen, um diese
Caching-Punkte zu spezifizieren.
Ein gegebener Umcodierer umfasst Software, also eine Reihe
von Programmbefehlen, die in einem Prozessor ausgeführt
werden können. Ein repräsentativer Prozessor ist x86-,
Pentium-, PowerPC®- oder RISC-basiert und hat somit ein
zugeordnetes Betriebssystem. Eine repräsentative
Rechenplattform ist ein IBM S390 und ein AS400.
Die vorliegende Erfindung kann in einer herkömmlichen Client-
Server-Rechenumgebung implementiert werden. Eine gegebene
Client-Maschine und der Server können über das öffentliche
Internet, ein Intranet oder ein anderes Computernetzwerk
miteinander kommunizieren. Falls gewünscht, können gegebene
Kommunikationen über eine sichere Verbindung stattfinden.
Beispielsweise kann ein Client mit dem Server über ein
Netzwerk-Sicherheitsprotokoll kommunizieren, z. B. das
Netscape-Protokoll Secure Socket Layer (SSL) oder ähnliches.
Ein repräsentativer Client ist ein Personalcomputer, ein
Notebook-Computer, ein Internet-Gerät oder ein universelles
Rechengerät (z. B. ein PDA oder ein Palmtop-Computer) auf
x86-, PowerPC®- oder RISC-Basis. Der Client umfasst ein
Betriebssystem, beispielsweise Microsoft Windows, Microsoft
Windows CE oder PalmOS. Wie bereits oben erwähnt, enthält der
Client eine Reihe von Internet-Tools, einschließlich eines
Web-Browsers, beispielsweise Netscape Navigator oder
Microsoft Internet Explorer, der eine Java Virtual Machine
(JVM) und Unterstützung für Anwendungs-Plugins oder
Hilfsanwendungen bietet.
Unter Bezugnahme auf Fig. 1; ein repräsentativer Web-Server
ist ein IBM Netfinity Server, der einen RISC-basierten
Prozessor 121, ein UNIX-basiertes Betriebssystem 123 und ein
Web-Serverprogramm 125 umfasst. Auch geeignete E/A-Geräte 126
und Routinen sind vorhanden, um die oben beschriebenen
Administrationsfunktionen zu vereinfachen. Natürlich kann
auch jede geeignete Server-Plattform (z. B. Apache, WebSphere
oder ähnliches) unterstützt werden. Der Server kann eine
Anwendungsprogrammierschnittstelle (API) 129 umfassen, mit
Möglichkeiten, die Kernfunktionen über Softwareprogramme zu
erweitern oder anzupassen, einschließlich Plugins, CGI-
Programme, Servlets und ähnliches.
Der Gruppenadministrationsmechanismus der vorliegenden
Erfindung kann in einer in einem Prozessor ausführbaren
Software implementiert werden, nämlich als ein Befehlssatz
(Programmcode) in einem Codemodule, das in dem
Direktzugriffsspeicher des Computers gespeichert ist. Der
Befehlssatz kann in einem anderen Computerspeicher
gespeichert werden, bis er vom Computer gebraucht wird,
beispielsweise in einem Festplattenlaufwerk oder in einem
herausnehmbaren Speicher, oder er kann über das Internet oder
ein anderes Computernetzwerk heruntergeladen werden.
Obwohl die verschiedenen, hier beschriebenen Methoden in
einem universellen Computer, der über die Software selektiv
aktiviert oder neu konfiguriert werden kann, auf einfache
Weise implementiert werden können, würde ein
durchschnittlicher Fachmann auch erkennen, dass solche
Methoden in der Hardware, in der Firmware oder in einer
speziellen Vorrichtung ausgeführt werden können, die zur
Durchführung der erforderlichen Schritte der Methode
konstruiert wurden.
Ein durchschnittlicher Fachmann wird auch erkennen, dass die
Caching-Technik der vorliegenden Erfindung für jedes
Softwaresystem generalisiert werden kann, das über eine
Vielzahl von objektbasierten Programmelementen verfügt. Die
Erfindung ist demnach nicht auf ein WBI-Framework mit
Umcodierern beschränkt.
Nachdem wir nun unsere Erfindung beschrieben haben, sollen
diejenigen Merkmale, die wir als neu beanspruchen und mittels
einer Patentschrift sichern möchten, in den folgenden
Ansprüchen dargelegt werden.
Claims (24)
1. Verfahren zum Cachen in einem Softwaresystem, mit einer
Vielzahl von Programmelementen, folgende Schritte
umfassend:
Zusammenfassen einer Reihe von in Beziehung stehenden Programmelementen in einer Gruppe; und
Cachen des Gesamtausgangs der Gruppe nur bei Abschluss der Ausführung sämlticher der in Beziehung stehenden Programmelemente.
Zusammenfassen einer Reihe von in Beziehung stehenden Programmelementen in einer Gruppe; und
Cachen des Gesamtausgangs der Gruppe nur bei Abschluss der Ausführung sämlticher der in Beziehung stehenden Programmelemente.
2. Verfahren nach Anspruch 1, bei dem die Vielzahl von
Programmelementen Umcodierer umfasst und das
Softwaresystem ein Web-Server mit einem
Umcodierungsdienst ist.
3. Verfahren nach Anspruch 2, bei dem ein gegebener
Umcodierer ein Anforderungsmodifizierer ist.
4. Verfahren nach Anspruch 2, bei dem ein gegebener
Umcodierer ein Inhaltseditor ist.
5. Verfahren nach Anspruch 2, bei dem ein gegebener
Umcodierer ein Inhaltsgenerator ist.
6. Verfahren nach Anspruch 1, bei dem jedes der zugehörigen
Programmelemente in der Gruppe Bilder verarbeitet.
7. Verfahren nach Anspruch 1, bei dem jedes der zugehörigen
Programmelemente in der Gruppe Daten verarbeitet.
8. Verfahren nach Anspruch 1, bei dem allen zugehörigen
Programmelementen in der Gruppe eine gegebene
Präferenzkategorie gemeinsam ist.
9. Verfahren nach Anspruch 1, bei dem allen zugehörigen
Programmelementen in der Gruppe eine gegebene Präferenz
gemeinsam ist.
10. Verfahren zum Cachen in einem Softwaresystem, mit einer
Vielzahl von Programmelementen, folgende Schritte
umfassend:
Zusammenfassen einer Reihe von Programmelementen in einer oder mehreren Gruppen;
in Antwort auf eine erste Anforderung von einem Client, selektives Cachen eines Gesamtausgangs einer Gruppe nur bei Abschluss der Ausführung aller Programmelemente in der gegebenen Gruppe; und
in Antwort auf eine zweite Anforderung von einem Client, Verwenden des Gesamtausgangs, um eine Antwort auf die zweite Anforderung von einem Client zu erzeugen.
Zusammenfassen einer Reihe von Programmelementen in einer oder mehreren Gruppen;
in Antwort auf eine erste Anforderung von einem Client, selektives Cachen eines Gesamtausgangs einer Gruppe nur bei Abschluss der Ausführung aller Programmelemente in der gegebenen Gruppe; und
in Antwort auf eine zweite Anforderung von einem Client, Verwenden des Gesamtausgangs, um eine Antwort auf die zweite Anforderung von einem Client zu erzeugen.
11. Verfahren nach Anspruch 10, weiter umfassend folgenden
Schritt:
Kennzeichnen einer gegebenen Priorität für jede der ein
oder mehreren Gruppen.
12. Verfahren nach Anspruch 11, weiter umfassend folgenden
Schritt:
Ausführen der einen oder mehreren Gruppen entsprechend
der gegebenen Priorität.
13. Verfahren nach Anspruch 11, bei dem mindestens eine
Gruppe eine Reihe von Präferenzwerten umfasst.
14. Verfahren nach Anspruch 13, bei dem die Präferenzwerte
aus einer Reihe von Werten ausgewählt werden, die aus
User-Präferenzen, Netzwerkpräferenzen und
Gerätepräferenzen bestehen.
15. Verfahren, das auf einem Server betrieben werden kann,
folgende Schritte umfassend:
in Antwort auf eine Client-Anforderung, Erzeugen eines URL, der eine Reihe von Umcodierungsgruppen kennzeichnet, wobei jede Umcodierungsgruppe eine Reihe von administratordefinierten Umcodierern umfasst;
Ausführen der Umcodierungsgruppen zur Erzeugung eines Ausgangsstroms; und
Cachen eines Ausgangs eines gegebenen Zwischen- Umcodierungsschritts, der von einem der Umcodierergruppen durchgeführt wird, zur späteren Wiederverwendung.
in Antwort auf eine Client-Anforderung, Erzeugen eines URL, der eine Reihe von Umcodierungsgruppen kennzeichnet, wobei jede Umcodierungsgruppe eine Reihe von administratordefinierten Umcodierern umfasst;
Ausführen der Umcodierungsgruppen zur Erzeugung eines Ausgangsstroms; und
Cachen eines Ausgangs eines gegebenen Zwischen- Umcodierungsschritts, der von einem der Umcodierergruppen durchgeführt wird, zur späteren Wiederverwendung.
16. Verfahren nach Anspruch 15, bei dem die
Umcodierungsgruppen entsprechend einer gegebenen
Priorität ausgeführt werden.
17. Verfahren nach Anspruch 16, bei dem die gegebene
Priorität benutzerdefiniert ist.
18. Verfahren nach Anspruch 15, bei dem jede der
Umcodierungsgruppen eine Reihe von ihnen zugeordneten
Präferenzwerten hat.
19. Verfahren nach Anspruch 18, bei dem die Reihe von
Präferenzwerten eine Präferenz umfasst, die aus einer
Netzwerkpräferenz, einer User-Präferenz und einer
Gerätepräferenz ausgewählt wird.
20. Ein Computerprogrammprodukt in einem computerlesbaren
Medium zum Einrichten intermediärer Caching-Punkte in
einem Softwaresystem mit einer Vielzahl von
Programmelementen, umfassend:
Mittel, um Sätze von gegebenen Programmelementen in einer oder mehreren Gruppen zusammenzufassen;
Mittel, um die Gruppen für die Ausführung zu priorisieren; und
Mittel, um einen Satz von Präferenzwerten für jede Gruppe zu definieren.
Mittel, um Sätze von gegebenen Programmelementen in einer oder mehreren Gruppen zusammenzufassen;
Mittel, um die Gruppen für die Ausführung zu priorisieren; und
Mittel, um einen Satz von Präferenzwerten für jede Gruppe zu definieren.
21. Ein Computerprogrammprodukt in einem computerlesbaren
Medium zum Cachen von Daten in einem Softwaresystem mit
einer Vielzahl von Programmelementen, umfassend:
Mittel, um einen Satz von zugehörigen Programmelementen zu einer Gruppe zusammenzufassen;
Mittel, die während der Verarbeitung einer Client- Anforderung aktiv werden, um einen Gesamtausgang des Satzes von zusammengehörigen Programmelementen zur späteren Wiederverwendung im Cache zu speichern, wobei ein einzelner Ausgang mindestens eines Satzes von zusammengehörigen Programmelementen in der Gruppe nicht im Cache gespeichert wird.
Mittel, um einen Satz von zugehörigen Programmelementen zu einer Gruppe zusammenzufassen;
Mittel, die während der Verarbeitung einer Client- Anforderung aktiv werden, um einen Gesamtausgang des Satzes von zusammengehörigen Programmelementen zur späteren Wiederverwendung im Cache zu speichern, wobei ein einzelner Ausgang mindestens eines Satzes von zusammengehörigen Programmelementen in der Gruppe nicht im Cache gespeichert wird.
22. Ein Computersystem zum Bereitstellen eines
Umcodierungsdienstes, folgendes umfassend:
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Mittel zum Zusammenfassen eines Satzes von zusammengehörigen Programmelementen in einer Gruppe; und
Mittel, die während der Verarbeitung einer Client- Anforderung aktiv werden, um in dem Cache zur späteren Wiederverwendung einen Gesamtausgang des Satzes von zusammengehörigen Programmelementen zu speichern, wobei ein einzelner Ausgang von mindestens einem Element aus dem Satz von zusammengehörigen Programmelementen in der Gruppe nicht in dem Cache gespeichert wird.
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Mittel zum Zusammenfassen eines Satzes von zusammengehörigen Programmelementen in einer Gruppe; und
Mittel, die während der Verarbeitung einer Client- Anforderung aktiv werden, um in dem Cache zur späteren Wiederverwendung einen Gesamtausgang des Satzes von zusammengehörigen Programmelementen zu speichern, wobei ein einzelner Ausgang von mindestens einem Element aus dem Satz von zusammengehörigen Programmelementen in der Gruppe nicht in dem Cache gespeichert wird.
23. Ein Computersystem, umfassend:
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Anzeigemittel, die es einem Systemadministrator ermöglichen, einen Satz von zusammengehörigen Programmelementen zu einer Gruppe zusammenzufassen; und
Mittel, die während der Verarbeitung von Client- Anforderungen aktiv werden, zum Speichern eines Gesamtausgangs des Satzes von zusammengehörigen Programmelementen im Cache, zur späteren Wiederverwendung.
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Anzeigemittel, die es einem Systemadministrator ermöglichen, einen Satz von zusammengehörigen Programmelementen zu einer Gruppe zusammenzufassen; und
Mittel, die während der Verarbeitung von Client- Anforderungen aktiv werden, zum Speichern eines Gesamtausgangs des Satzes von zusammengehörigen Programmelementen im Cache, zur späteren Wiederverwendung.
24. Ein Computersystem, umfassend:
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Mittel zum dynamischen Zusammenfassen eines Satzes von zusammengehörigen Programmelementen in einer Gruppe; und
Mittel, um in dem Cache einen Gesamtausgang des Satzes von zugehörigen Programmelementen zur späteren Wiederverwendung zu speichern.
einen Satz von Programmelementen;
einen Cache; und
einen Gruppenadministrationsmechanismus zum Einrichten intermediärer Cachingpunkte, umfassend:
Mittel zum dynamischen Zusammenfassen eines Satzes von zusammengehörigen Programmelementen in einer Gruppe; und
Mittel, um in dem Cache einen Gesamtausgang des Satzes von zugehörigen Programmelementen zur späteren Wiederverwendung zu speichern.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/428,397 | 1999-10-28 | ||
US09/428,397 US6611876B1 (en) | 1999-10-28 | 1999-10-28 | Method for establishing optimal intermediate caching points by grouping program elements in a software system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10051024A1 true DE10051024A1 (de) | 2001-05-23 |
DE10051024B4 DE10051024B4 (de) | 2006-10-26 |
Family
ID=23698730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10051024A Expired - Lifetime DE10051024B4 (de) | 1999-10-28 | 2000-10-14 | Verfahren zum intermediären Cachen in einem Client-Server-Softwaresystem, Computerprogrammprodukte und Computersystem zur Durchführung eines solchen Verfahrens |
Country Status (3)
Country | Link |
---|---|
US (1) | US6611876B1 (de) |
CA (1) | CA2317819A1 (de) |
DE (1) | DE10051024B4 (de) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206824B2 (en) * | 1999-12-08 | 2007-04-17 | Sun Microsystems, Inc. | Technique for configuring network deliverable pluggable components for deployment |
US6742043B1 (en) * | 2000-01-14 | 2004-05-25 | Webtv Networks, Inc. | Reformatting with modular proxy server |
US6704798B1 (en) * | 2000-02-08 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Explicit server control of transcoding representation conversion at a proxy or client location |
US8028314B1 (en) * | 2000-05-26 | 2011-09-27 | Sharp Laboratories Of America, Inc. | Audiovisual information management system |
US7647340B2 (en) | 2000-06-28 | 2010-01-12 | Sharp Laboratories Of America, Inc. | Metadata in JPEG 2000 file format |
US8020183B2 (en) | 2000-09-14 | 2011-09-13 | Sharp Laboratories Of America, Inc. | Audiovisual management system |
US6965947B1 (en) * | 2000-10-06 | 2005-11-15 | International Business Machines Corporation | Method and apparatus for automated transcoder selection |
US6895425B1 (en) * | 2000-10-06 | 2005-05-17 | Microsoft Corporation | Using an expert proxy server as an agent for wireless devices |
GB0029025D0 (en) * | 2000-11-29 | 2001-01-10 | Hewlett Packard Co | Enhancement of communication capabilities |
US7904814B2 (en) | 2001-04-19 | 2011-03-08 | Sharp Laboratories Of America, Inc. | System for presenting audio-video content |
US7103714B1 (en) * | 2001-08-04 | 2006-09-05 | Oracle International Corp. | System and method for serving one set of cached data for differing data requests |
US7474698B2 (en) | 2001-10-19 | 2009-01-06 | Sharp Laboratories Of America, Inc. | Identification of replay segments |
US20030110218A1 (en) * | 2001-12-12 | 2003-06-12 | Stanley Randy P. | Local caching of images for on-line conferencing programs |
US8214741B2 (en) | 2002-03-19 | 2012-07-03 | Sharp Laboratories Of America, Inc. | Synchronization of video and data |
US7277963B2 (en) * | 2002-06-26 | 2007-10-02 | Sandvine Incorporated | TCP proxy providing application layer modifications |
US7657907B2 (en) | 2002-09-30 | 2010-02-02 | Sharp Laboratories Of America, Inc. | Automatic user profiling |
EP1406183A3 (de) * | 2002-10-01 | 2004-04-14 | Sap Ag | Verfahren und System zur Auffrischung von Browserseiten |
US7013331B2 (en) * | 2002-12-20 | 2006-03-14 | Nokia, Inc. | Automated bulk configuration of network devices |
US7506070B2 (en) * | 2003-07-16 | 2009-03-17 | Sun Microsytems, Inc. | Method and system for storing and retrieving extensible multi-dimensional display property configurations |
US8949899B2 (en) | 2005-03-04 | 2015-02-03 | Sharp Laboratories Of America, Inc. | Collaborative recommendation system |
US7594245B2 (en) | 2004-03-04 | 2009-09-22 | Sharp Laboratories Of America, Inc. | Networked video devices |
US8356317B2 (en) | 2004-03-04 | 2013-01-15 | Sharp Laboratories Of America, Inc. | Presence based technology |
US8977636B2 (en) * | 2005-08-19 | 2015-03-10 | International Business Machines Corporation | Synthesizing aggregate data of disparate data types into data of a uniform data type |
US7958131B2 (en) | 2005-08-19 | 2011-06-07 | International Business Machines Corporation | Method for data management and data rendering for disparate data types |
US20070061712A1 (en) * | 2005-09-14 | 2007-03-15 | Bodin William K | Management and rendering of calendar data |
US8266220B2 (en) | 2005-09-14 | 2012-09-11 | International Business Machines Corporation | Email management and rendering |
US8694319B2 (en) | 2005-11-03 | 2014-04-08 | International Business Machines Corporation | Dynamic prosody adjustment for voice-rendering synthesized data |
US8271107B2 (en) | 2006-01-13 | 2012-09-18 | International Business Machines Corporation | Controlling audio operation for data management and data rendering |
US20070165538A1 (en) * | 2006-01-13 | 2007-07-19 | Bodin William K | Schedule-based connectivity management |
US20070192675A1 (en) * | 2006-02-13 | 2007-08-16 | Bodin William K | Invoking an audio hyperlink embedded in a markup document |
US9135339B2 (en) | 2006-02-13 | 2015-09-15 | International Business Machines Corporation | Invoking an audio hyperlink |
US8689253B2 (en) | 2006-03-03 | 2014-04-01 | Sharp Laboratories Of America, Inc. | Method and system for configuring media-playing sets |
US9196241B2 (en) | 2006-09-29 | 2015-11-24 | International Business Machines Corporation | Asynchronous communications using messages recorded on handheld devices |
US9318100B2 (en) | 2007-01-03 | 2016-04-19 | International Business Machines Corporation | Supplementing audio recorded in a media file |
US8276167B2 (en) * | 2007-03-21 | 2012-09-25 | International Business Machines Corporation | Distributed pluggable middleware services |
GB0802585D0 (en) * | 2008-02-12 | 2008-03-19 | Mtld Top Level Domain Ltd | Determining a property of communication device |
GB2465138B (en) * | 2008-10-10 | 2012-10-10 | Afilias Technologies Ltd | Transcoding web resources |
US9135154B2 (en) * | 2010-03-02 | 2015-09-15 | Microsoft Technology Licensing, Llc | Algorithm execution output cache |
US9141724B2 (en) | 2010-04-19 | 2015-09-22 | Afilias Technologies Limited | Transcoder hinting |
GB2481843A (en) | 2010-07-08 | 2012-01-11 | Mtld Top Level Domain Ltd | Web based method of generating user interfaces |
US8843608B2 (en) * | 2011-09-22 | 2014-09-23 | Blue Coat Systems, Inc. | Methods and systems for caching popular network content |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5861906A (en) * | 1995-05-05 | 1999-01-19 | Microsoft Corporation | Interactive entertainment network system and method for customizing operation thereof according to viewer preferences |
US5864854A (en) * | 1996-01-05 | 1999-01-26 | Lsi Logic Corporation | System and method for maintaining a shared cache look-up table |
US5918013A (en) * | 1996-06-03 | 1999-06-29 | Webtv Networks, Inc. | Method of transcoding documents in a network environment using a proxy server |
US5935207A (en) * | 1996-06-03 | 1999-08-10 | Webtv Networks, Inc. | Method and apparatus for providing remote site administrators with user hits on mirrored web sites |
US6421733B1 (en) * | 1997-03-25 | 2002-07-16 | Intel Corporation | System for dynamically transcoding data transmitted between computers |
US6182072B1 (en) * | 1997-03-26 | 2001-01-30 | Webtv Networks, Inc. | Method and apparatus for generating a tour of world wide web sites |
US6226642B1 (en) * | 1997-09-11 | 2001-05-01 | International Business Machines Corporation | Content modification of internet web pages for a television class display |
US6185608B1 (en) * | 1998-06-12 | 2001-02-06 | International Business Machines Corporation | Caching dynamic web pages |
US6401132B1 (en) * | 1999-08-03 | 2002-06-04 | International Business Machines Corporation | Subchaining transcoders in a transcoding framework |
-
1999
- 1999-10-28 US US09/428,397 patent/US6611876B1/en not_active Expired - Lifetime
-
2000
- 2000-09-07 CA CA002317819A patent/CA2317819A1/en not_active Abandoned
- 2000-10-14 DE DE10051024A patent/DE10051024B4/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA2317819A1 (en) | 2001-04-28 |
DE10051024B4 (de) | 2006-10-26 |
US6611876B1 (en) | 2003-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10051024B4 (de) | Verfahren zum intermediären Cachen in einem Client-Server-Softwaresystem, Computerprogrammprodukte und Computersystem zur Durchführung eines solchen Verfahrens | |
DE69724877T2 (de) | Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers | |
DE60225476T2 (de) | Verfahren und vorrichtung zum netzwerk-caching | |
DE60028561T2 (de) | Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen | |
DE60015423T2 (de) | Verfahren und Vorrichtung zur Objektwiedergabe in einem Netzwerk | |
DE69721632T2 (de) | Verfahren und Vorrichtung zur Servletverarbeitung | |
DE69832406T2 (de) | Kombiniertes internet-und datenzugangssystem | |
DE60216918T2 (de) | Verfahren und computersystem zur auswahl eines randservercomputers | |
DE60306186T2 (de) | Verfahren und system zur anordnung von dienste in einer webdienstarchitektur | |
DE10051021B4 (de) | System, Verfahren und Computerprogramm zur Bereitstellung interaktiver Web-Inhalte in statisch verknüpften Dateien | |
DE69725652T2 (de) | Einbettung von Ton in Webseiten | |
DE60011069T2 (de) | Behandlung einer anfrage nach informationen, die von einem dienstleisters angeboten werden | |
DE69732605T2 (de) | Dynamisches Cachespeicher-Vorladen über lose gekoppelte administrative Bereiche | |
DE69724356T2 (de) | Verfahren und Apparat für die Darstellung von Information im Bezug auf jeden einzelnen von mehreren Hyperlinks | |
DE60116343T2 (de) | Webserver | |
DE60308489T2 (de) | Anwendungsfensterschließung als Reaktion auf ein Ereignis in einem Parent-Fenster | |
DE10048940A1 (de) | Erzeugen von Dokumenteninhalten durch Transcodierung mit Hilfe von Java Server Pages | |
DE19936314A1 (de) | Verfahren und System zur Inhaltskonvertierung von elektronischen Daten unter Verwendung von Konvertierungspräferenzen | |
DE202008013034U1 (de) | System zum Beschleunigen von Browsing-Sitzungen | |
EP1369790A2 (de) | Verfahren zur dynamischen Generierung strukturierter Dokumente | |
DE69837550T2 (de) | System und Verfahren zur Datenübermittlung von einer Serverapplikation an Klientknoten | |
EP1241603A1 (de) | Internet-Banner | |
DE60017488T2 (de) | Verfahren zum Steuern des Abrufs von Information mit einer vom Datentyp abhängigen Strategie um die Antwortzeit für die Verbraucher zu verringern | |
DE10314792A1 (de) | Verfolgen von Benutzern an einem Webservernetz | |
DE10352400A1 (de) | Netzwerkdienst-Abfangvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |