-
Querverweis auf verwandte Anmeldungen
-
Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung lfd. Nr. 62/075.825, eingereicht am 5. November 2014, und der US-Anmeldung lfd. Nr. 14/547.086, eingereicht am 18. November 2014, deren beider Inhalte hier durch Bezugnahme vollständig mit aufgenommen sind.
-
Gebiet der Erfindung
-
Allgemein bezieht sich diese Offenbarung auf die Verwendung eines Browsers zum Öffnen einer lokalen Datei mit einer lokalen Anwendung.
-
Hintergrund
-
Cloud-basierte Dokumentspeichersysteme bieten Nutzern viele Vorteile, einschließlich des Zugriffs auf Dateien von mehreren Vorrichtungen, der Zusammenarbeit zwischen mehreren Nutzern und der automatischen Synchronisation von Dateien zwischen einer lokalen Vorrichtung und einem Server. Üblicherweise wird auf Dateien in der Cloud unter Verwendung eines von zwei Verfahren zugegriffen. In einem Verfahren werden Dateien in dem Dateisystem der lokalen Vorrichtung gespeichert und mit einem Server synchronisiert. In diesem Fall wird auf die Dateien lokal unter Verwendung des Betriebssystems der lokalen Vorrichtung und lokal installierter Anwendungen zugegriffen. Allerdings sind die einzigen Zugriffsbeschränkungen jene, die dem Betriebssystem zugeordnet sind. Darüber hinaus kann auf die Dateien nur unter Verwendung der lokalen Vorrichtung zugegriffen werden.
-
In einem anderen Verfahren wird ein Browser verwendet, um auf Dateien in der Cloud zuzugreifen. Das Browser-basierte Verfahren ist dadurch vorteilhaft flexibel, dass auf Dateien von irgendeiner Vorrichtung mit Browserfähigkeiten zugegriffen werden kann. Allerdings fehlen Browser-basierten Bearbeitungsanwendungen im Vergleich zu lokal installierten Anwendungen bestimmte Fähigkeiten. Darüber hinaus hängen Browser-basierte Anwendungen von der Netzkonnektivität und von einer hohen Bandbreite ab, um effektiv zu fungieren. In einem Beispiel wird auf eine Datei über einen Browser zugegriffen und wird sie manuell auf eine lokale Vorrichtung heruntergeladen. Der Nutzer muss dann manuell durch das Dateisystem der lokalen Vorrichtung navigieren, um die Datei unter Verwendung einer lokal installierten Anwendung zu öffnen. Der Prozess ist nicht nur unhandlich für den Nutzer, sondern führt außerdem nicht einmal dazu, dass die bearbeitete Datei mit dem Server synchronisiert wird.
-
Zusammenfassung
-
Dementsprechend werden hier Systeme und Verfahren beschrieben, um die Kommunikation zwischen einem Browser, einem Sync-Client und einer lokalen Anwendung zu ermöglichen. In bestimmten Aspekten beziehen sich die hier beschriebenen Systeme und Verfahren auf die Verwendung eines Browsers zum Öffnen lokaler Dateien mit lokalen Anwendungen. Von einer ersten Anwendung auf einer lokalen Vorrichtung wird eine Anforderung zum Öffnen eines Dokuments empfangen, das eine Dokumentkennung aufweist und das einer auf einem Server gespeicherten ersten Datei zugeordnet ist. Die Anforderung kann die Dokumentkennung und eine Nutzerkennung umfassen. Es kann bestimmt werden, dass der Dokumentkennung eine zweite Datei zugeordnet ist, die auf der lokalen Vorrichtung gespeichert ist, und es kann bestimmt werden, dass ein Nutzer, dem die Nutzerkennung zugeordnet ist, berechtigt ist, auf die zweite Datei zuzugreifen. Auf der Grundlage der Bestimmung kann an die erste Anwendung eine Liste gesendet werden, wobei die Liste eine oder mehrere Anwendungen umfasst, die auf der lokalen Vorrichtung sind und die die zweite Datei öffnen können. Von der ersten Anwendung kann eine Angabe einer aus der Liste ausgewählten zweiten Anwendung empfangen werden. Es kann eine Nachricht zum Öffnen der zweiten Datei mit der zweiten Anwendung gesendet werden.
-
Ein Sync-Client kann einen oder mehrere der oben beschriebenen Schritte des Auslesens, Bestimmens und Sendens ausführen. Der Sync-Client kann mit einem Vermittler-Proxy kommunizieren, der die Anforderung an den Sync-Client sendet, die Liste von dem Sync-Client empfängt und die Angabe an den Sync-Client sendet. Der Vermittler-Proxy kann auf der Grundlage von Formatierungsanforderungen für den Sync-Client und für die erste Anwendung die Anforderung und/oder die Liste und/oder die Angabe ändern.
-
Eine Inhaltsdatei kann eine Liste von Kennungen lokaler Anwendungen speichern, die mehreren lokalen Anwendungen entsprechen, die auf der lokalen Vorrichtung installiert sind und die bei dem Sync-Client registriert sind. Die Nachricht zum Öffnen der zweiten Datei kann eine Anwendungskennung umfassen, die der zweiten Anwendung zugeordnet ist. Es kann bestimmt werden, ob die Anwendungskennung in der Inhaltsdatei enthalten ist.
-
Das Bestimmen, ob der Nutzer berechtigt ist, auf die zweite Datei zuzugreifen, kann einen oder mehrere der folgenden Schritte umfassen. Es kann ein erster Hash empfangen werden, der auf der Grundlage wenigstens eines Pre-Shared Keys berechnet wird. Durch die erste Anwendung und auf der Grundlage des wenigstens einen Pre-Shared Keys kann ein zweiter Hash berechnet werden. Der erste Hash kann mit dem zweiten Hash verglichen werden. Falls der erste Hash zu dem zweiten Hash passt, kann der Nutzer berechtigt werden, auf die zweite Datei zuzugreifen.
-
Der erste und der zweite Hash können jeweils wenigstens teilweise auf der Grundlage eines Einmalschlüssels berechnet werden. Die Anforderung und/oder die Liste und/oder die Angabe können Eingangs- oder Ausgangs-Standarddatenströme enthalten, die der ersten Anwendung zugeordnet sind. Die zweite Datei kann aus einer Kopie der ersten Datei erstellt werden. Die erste Anwendung kann ein Browser oder eine dem Browser zugeordnete Browsererweiterung sein. Der Nutzer kann die eine oder die mehreren Anforderungen über den Browser bereitstellen. Die Liste kann nur dann an die erste Anwendung gesendet werden, wenn die zweite Datei mit der ersten Datei synchronisiert wird.
-
Bei einer lokalen Vorrichtung kann eine Anforderung von einem Nutzer zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine auf einem Server gespeicherte erste Datei zugeordnet ist, empfangen werden. Die Anforderung kann die Dokumentkennung und eine dem Nutzer zugeordnete Nutzerkennung umfassen. Die angeforderte Dokumentkennung und Nutzerkennung können an eine erste Anwendung auf der lokalen Vorrichtung gesendet werden. Von der ersten Anwendung kann eine Liste empfangen werden, wobei die Liste eine oder mehrere Anwendungen, die auf der lokalen Vorrichtung sind, umfasst. Von dem Nutzer kann eine Angabe einer zweiten Anwendung, die aus der Liste ausgewählt wird, empfangen werden. An die erste Anwendung kann eine Nachricht gesendet werden, wobei die Nachricht die Dateikennung und eine der zweiten Anwendung zugeordnete Kennung umfasst.
-
Das in dem obigen Absatz beschriebene Empfangen und/oder Senden kann eine dritte Anwendung ausführen. Die dritte Anwendung kann ein Browser oder eine dem Browser zugeordnete Browsererweiterung sein. Die dritte Anwendung kann mit einem Vermittler-Proxy kommunizieren, der die Anforderung an die dritte Anwendung sendet, von der dritten Anwendung die Liste empfängt und die Angabe an die dritte Anwendung sendet. Der Vermittler-Proxy kann die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für die dritte Anwendung und für die erste Anwendung ändern.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockschaltplan eines Cloud-Computing-Dienstes in Übereinstimmung mit einer veranschaulichenden Implementierung;
-
2 ist ein Blockschaltplan einer lokalen Vorrichtung in Kommunikation mit einem Server über ein Netz in Übereinstimmung mit einer veranschaulichenden Implementierung;
-
3 ist ein Blockschaltplan einer lokalen Vorrichtung in Kommunikation mit einem Netz in Übereinstimmung mit einer veranschaulichenden Implementierung;
-
4 zeigt eine Nutzerschnittstelle eines Cloud-Computing-Dienstes in Übereinstimmung mit einer veranschaulichenden Implementierung;
-
5 ist ein Ablaufplan eines durch einen Browser ausgeführten Verfahrens zum Kommunizieren mit einer lokalen Anwendung zum Öffnen einer lokalen Datei in Übereinstimmung mit einer veranschaulichenden Implementierung;
-
6 ist ein Ablaufplan eines durch einen Browser und durch einen Sync-Client ausgeführten Verfahrens zum Bestimmen, dass sie beide dasselbe Nutzerkonto präsentieren, in Übereinstimmung mit einer veranschaulichenden Implementierung; und
-
7 ist ein Blockschaltplan einer Computervorrichtung zum Ausführen irgendwelcher der hier beschriebenen Prozesse in Übereinstimmung mit einer veranschaulichenden Implementierung.
-
Ausführliche Beschreibung
-
Um ein Gesamtverständnis der Offenbarung zu schaffen, werden nun bestimmte veranschaulichende Beispiele einschließlich eines Systems und eines Verfahrens zum Öffnen lokaler Anwendungen von Browsern beschrieben. Allerdings versteht der Durchschnittsfachmann auf dem Gebiet, dass die hier beschriebenen Systeme und Verfahren nach Bedarf für die Anwendung, die behandelt wird, angepasst und geändert werden können und dass die hier beschriebenen Systeme und Verfahren in anderen geeigneten Anwendungen genutzt werden können und dass solche anderen Hinzufügungen und Änderungen nicht von ihrem Schutzumfang abweichen. Allgemein können die hier beschriebenen computergestützten Systeme eine oder mehrere Komponenten umfassen, die eine oder mehrere Verarbeitungsvorrichtungen wie etwa einen Computer, einen Mikroprozessor, eine Logikvorrichtung oder eine andere Vorrichtung oder einen anderen Prozessor, der bzw. die mit Hardware, Firmware und Software zum Ausführen eines oder mehrerer der hier beschriebenen computergestützten Verfahren konfiguriert ist, enthalten.
-
Das Öffnen lokaler Anwendungen von Browsern ist nützlich, da lokale Anwendungen im Vergleich zu Browser-basierten Anwendungen, die von Servern geliefert werden, erhöhte oder andere Dateibearbeitungsfähigkeiten bereitstellen können. Durch das Öffnen lokaler Anwendungen von Browsern können die Vorteile der Verwendung lokaler Anwendungen verwirklicht werden, während ebenfalls die Vorteile des Speicherns von Dokumenten in Cloud-Diensten verwirklicht werden.
-
1 zeigt ein Client-Server-System 100, das einen Cloud-Computing-Dienst 101 und eine Anzahl von Clientvorrichtungen 102a–102d (allgemein Clientvorrichtung 102) enthält. Der Cloud-Computing-Dienst 101 stellt Cloud-Computing-Dienste für eine Menge von Clientvorrichtungen 102 bereit. Insbesondere kann der Cloud-Computing-Dienst 101 einen oder mehrere Server enthalten, die eine Anzahl von Dateien, auf die durch Clientvorrichtungen 102a–102d zugegriffen werden kann, wie etwa ein beispielhaftes Zusammenarbeits-Spreadsheet 103 speichern. Nutzer der Clientvorrichtungen 102 können in dem Cloud-Computing-Dienst 101 gespeicherte Dateien erstellen, bearbeiten, kopieren, gemeinsam nutzen und löschen. Zum Beispiel können die Clientvorrichtungen 102 jeweils einen Web-Browser verwenden, um gleichzeitig auf das Spreadsheet 103 in dem Cloud-Computing-Dienst 101 zuzugreifen. Der Cloud-Computing-Dienst 101 stellt für jede Clientvorrichtung 102 eine lokale Kopie des Spreadsheets 103 bereit, die Nutzer an den Clientvorrichtungen 102 daraufhin betrachten und bearbeiten können. Der Cloud-Computing-Dienst 101 kann die lokalen Kopien des Spreadsheets 103 miteinander und mit einer Kopie des Spreadsheets 103, die auf einem Server in dem Cloud-Computing-Dienst 101 gespeichert ist, synchronisieren. In einem Beispiel werden Bearbeitungen, die hier als Mutationen bezeichnet werden können, die durch die Clientvorrichtung 102a vorgenommen werden, automatisch an den Cloud-Computing-Dienst 101 gesendet und an die anderen Clientvorrichtungen 102b, 102c und 102d gesendet. Auf diese Weise können Mutationen, die durch einen Mitarbeiter vorgenommen werden, von anderen Mitarbeitern sofort gesehen werden. Wie es hier verwendet ist, enthält eine Datei eine Menge digital codierter Bits, die in einem Datenspeichermedium gespeichert sind. Eine Cloud-Datei enthält eine Datei, die auf einem Server gespeichert ist und auf die über ein Netz zugegriffen werden kann. Eine lokale Datei enthält eine Datei, die auf der lokalen Vorrichtung eines Nutzers gespeichert ist. Eine Clientvorrichtung enthält eine lokale Vorrichtung, die in einer Client-Server-Beziehung mit einem Server kommuniziert. Wie es hier verwendet ist, ist ein Dokument Teil eines Cloud-Computing-Dienstes und können ihm mehrere Dateien zugeordnet sein. Zum Beispiel kann eine Cloud-Datei eine Kopie eines auf einem Server gespeicherten Dokuments sein und kann eine lokale Datei eine Kopie desselben auf einer lokalen Vorrichtung gespeicherten Dokuments sein. Allgemein können mehrere Kopien desselben Dokuments gleich sein, wobei sie sich aber unterscheiden können, falls Mutationen, die durch einen Mitarbeiter vorgenommen wurden, noch nicht an andere Mitarbeiter gesendet worden sind. Diese Situation kann auftreten, wenn eine Netzverbindung langsam oder intermittierend ist. Falls die Kopien auf unterschiedlichen Typen von Vorrichtungen wie etwa Vorrichtungen mit unterschiedlichen Betriebssystemen gespeichert sind, können sich mehrere Kopien desselben Dokuments ebenfalls geringfügig unterscheiden. In diesem Fall können verschiedene Kopien geringfügig verschiedene Metadaten aufweisen oder anders codiert sein. Zum Beispiel kann eine Kopie in einem Big-Endian-Format codiert sein und kann eine andere Kopie in einem Little-Endian-Format codiert sein. Diese Formatunterschiede können über mehrere Dateien vorhanden sein, die Kopien desselben Dokuments sind, solange die Substanz der Informationen, die dem Nutzer angezeigt werden, über die Kopien dasselbe ist.
-
Die Clientvorrichtungen 102 können irgendeine Kombination von Desktopcomputern, Laptopcomputern, Tablets, Smartphones, Mobilelektronikvorrichtungen oder irgendeiner anderen Vorrichtung, die über ein Netz mit dem Cloud-Computing-Dienst 101 verbunden sein kann, enthalten. Im System 100 sind nur vier Clientvorrichtungen 102 gezeigt, wobei aber zu verstehen ist, dass irgendeine Anzahl von Clientvorrichtungen 102 irgendeines Typs dafür konfiguriert sein können, mit dem Cloud-Computing-Dienst 101 zu kommunizieren. Der Cloud-Computing-Dienst 101 und die Clientvorrichtungen 102 des Systems 100 können über ein fernes Netz wie etwa das Internet verbunden sein. Die Netzverbindung kann über ein lokales Netz, über ein Weitverkehrsnetz, über ein Ethernet, über ein Glasfasernetz, über ein drahtloses Netz, über ein Zellennetz, über ein Netz des interaktiven Fernsehens, über ein Telephonnetz, über ein drahtloses Datenübertragungssystem, über ein Zweiwegekabelsystem, über ein kundenspezifisches privates oder öffentliches Computernetz, über ein interaktives Kiosk-Netz, über eine Direktverbindung, über ein Satellitennetz oder über irgendeine andere verdrahtete oder drahtlose Verbindung ermöglicht werden.
-
2 stellt ein beispielhaftes System 200 einer lokalen Vorrichtung 202 in Kommunikation mit einem Server 206 über ein Netz 204 dar. Das System 200 kann zum Öffnen Cloud-basierter Dateien mit lokalen Anwendungen über einen Browser verwendet werden. Zur Klarheit der Darstellung sind in 2 nur eine lokale Vorrichtung 202 und ein Server 206 gezeigt, wobei aber über das Netz 204 allgemein irgendeine Anzahl lokaler Vorrichtungen 202 mit irgendeiner Anzahl von Servern 206 kommunizieren können. Die lokale Vorrichtung 202 kann äquivalent eine der in Bezug auf 1 gezeigten und beschriebenen Clientvorrichtungen 102 sein und der Server 206 kann in einem Cloud-Computing-Dienst wie etwa dem in 1 gezeigten Cloud-Computing-Dienst 101 enthalten sein. Wie in 2 gezeigt ist, enthält der Server 206 eine Datenbank 216, die Cloud-Dateien 218a, 218b, ..., 218m (allgemein Clouddateien 218) speichert. Jede Cloud-Datei 218 kann einem anderen Dokument in dem Cloud-Computing-Dienst 101 zugeordnet sein. Zum Beispiel können die Cloud-Dateien 218a und 218b jeweils verschiedenen Textverarbeitungsdokumenten zugeordnet sein, während die Cloud-Dateien 218m einem Spreadsheet-Dokument wie etwa dem in dem Cloud-Computing-Dienst 101 gespeicherten Spreadsheet-Dokument 103 zugeordnet sein können.
-
Die lokale Vorrichtung 202 enthält eine Datenbank 208, einen Browser 212 und eine Menge lokaler Anwendungen 214a, 214b, ..., 214k (allgemein lokale Anwendung 214). Die Datenbank 208 speichert lokale Dateien 210a, 210b, ..., 210n (allgemein lokale Dateien 210). Den lokalen Dateien 210 können Dokumente in einem Cloud-Computing-Dienst 101 zugeordnet sein oder nicht zugeordnet sein. Wenn den lokalen Dateien 210 Dokumente zugeordnet sind, die in dem Cloud-Computing-Dienst 101 gespeichert sind, kann die Zuordnung einer lokalen Datei zu einem Cloud-Computing-Dienst 101 eine Synchronisation der lokalen Datei mit einer auf einem Server gespeicherten Datei wie etwa einer der Cloud-Dateien 218 enthalten.
-
Die lokalen Anwendungen 214 können Software-Anwendungen sein, die an Dateien eine oder mehrere Operationen ausführen. Beispiele von Operationen, die durch irgendeine der lokalen Anwendungen 214 ausgeführt werden können, enthalten das Öffnen, das Anzeigen, das Bearbeiten, das Empfangen von Bearbeitungen dafür und das Sichern. Der Browser 212 kann dafür konfiguriert sein, über eine oder mehrere Vermittlerkomponenten oder Softwareanwendungen, die die lokalen Anwendungen 214 enthalten oder nicht enthalten können, mit dem Server 206 zu kommunizieren. Insbesondere kann der Browser 212 eine Nutzerschnittstelle anzeigen, so dass ein Nutzer mit Dokumenten in dem Cloud-Computing-Dienst 101 interagieren kann. In einem Beispiel empfängt der Browser 212 eine Nutzereingabe zum Anfordern eines Dokuments, das in dem Cloud-Computing-Dienst 101 gespeichert ist, und zum Ausführen von Operationen an dem Dokument. Das angeforderte Dokument, das in dem Cloud-Computing-Dienst 102 gespeichert ist, kann mit einer der auf der lokalen Vorrichtung 202 gespeicherten lokalen Dateien 210 synchronisiert werden. In Ansprechen auf den Empfang der Nutzereingabe kommuniziert der Browser 212 mit einer der lokalen Anwendungen 214, um für die lokale Anwendung 214 das Ausführen von Operationen an der entsprechenden lokalen Datei 210 anzufordern. Auf diese Weise ermöglicht das System 200 durch das Bereitstellen einer Dateisynchronisation zwischen der lokalen Vorrichtung 202 und dem fernen Server 206, dass ein Nutzer über einen Browser 212 das Ausführen von Operationen an lokalen Dateien 210 mit lokalen Anwendungen 214 anfordert.
-
3 zeigt ein beispielhaftes System 300, das eine lokale Vorrichtung 302 enthält, die mit einem Netz 304 kommuniziert. Die lokale Vorrichtung 302 kann ähnlich der in Bezug auf 2 gezeigten und beschriebenen lokalen Vorrichtung 202 sein, wobei aber 3 eine genauere Ansicht der Komponenten innerhalb der lokalen Vorrichtung 302 zeigt. Genauer enthält die lokale Vorrichtung 302 eine lokale Datenbank 308, die lokale Dateien 310, einen Browser 312, lokale Anwendungen 314, einen Sync-Client 320, einen Proxy-Prozess 322, eine Browsererweiterung 324, eine Netzschnittstelle 326 und einen Prozessor 328 besitzt. Der Prozessor 328 führt auf der lokalen Vorrichtung 302 Anwendungen, Funktionen, Verfahren und Prozesse wie etwa die Anwendungen 314, den Sync-Client 320, den Proxy-Prozess 322, die Browserweiterung 324 und den Browser 312 aus. Das Netz 304, die Datenbank 308, die lokalen Dateien 310, der Browser 312 und die Anwendungen 314 können in dieser Reihenfolge ähnliche Funktionen wie das Netz 204, die Datenbank 208, die lokalen Dateien 210, der Browser 212 und die Anwendungen 214 ausführen. Die Netzschnittstelle 326 wirkt als ein Vermittler in der Kommunikation zwischen der lokalen Vorrichtung 302 und fernen Betriebsmitteln, auf die über das Netz 304 zugegriffen werden kann. Insbesondere kommunizieren die lokalen Anwendungen 314 und/oder die lokalen Dateien 310 auf der lokalen Vorrichtung 302 über das Netz 304 mit einem Server (wie etwa mit dem Server 206).
-
Wie in 3 gezeigt ist, kommuniziert der Browser 312 über die Browsererweiterung 324, den Proxy-Prozess 322 und den Sync-Client 320 mit lokalen Anwendungen 314. Wie in 3 gezeigt ist, enthält die lokale Vorrichtung 302 nur eine Browsererweiterung 324, einen Proxy-Prozess 322 und einen Sync-Client 320, wobei aber allgemein irgendeine Anzahl dieser Komponenten in der lokalen Vorrichtung 302 enthalten sein können und irgendwelche der hier beschriebenen Funktionen ausführen können. In einem Beispiel führt die Browsererweiterung 324 Aktionen in Ansprechen auf durch den Browser 312 empfangene Nutzeranforderungen aus. Solche Nutzeranforderungen können Anforderungen zum Ausführen von Operationen an Dokumenten in einem Cloud-Dienst wie etwa in dem Cloud-Computing-Dienst 101 enthalten. Die Browsererweiterung 324 kann JA-VASCRIPT-Code oder Code einer ähnlichen Sprache enthalten, der Objekte, Funktionen, Methoden, Unterprogramme, Prozesse oder Betriebssystembefehle aufrufen kann. Die Browsererweiterung 324 kann automatisch installiert werden, wenn der Sync-Client 320 auf der lokalen Vorrichtung 302 installiert wird oder wenn die Browsererweiterung 324 installiert wird. Wie es hier verwendet ist, bezieht sich "Browser" auf eine Softwareanwendung, die Informationen auslesen und anzeigen kann, auf eine Browsererweiterung oder auf irgendeine geeignete Kombination davon. Obwohl der Browser 312 und die Browserweiterung 324 in 3 als zwei getrennte Elemente gezeigt sind, ist zu verstehen, dass der Browser 312 die Browsererweiterung 324 enthalten kann und dass irgendwelche der Funktionen, die hier so beschrieben sind, dass sie durch die Browsererweiterung 324 ausgeführt werden, alternativ oder zusätzlich durch den Browser 312 ausgeführt werden können. Ähnlich kann irgendeine der Funktionen, die hier so beschrieben sind, dass sie durch den Browser 212 ausgeführt werden, stattdessen durch die Browsererweiterung 324 ausgeführt werden.
-
In einigen Beispielen enthält die Kommunikation zwischen irgendwelchen des Browsers 312, der Browsererweiterung 324, des Sync-Clients 320 und der lokalen Anwendungen 314 eine Interprozesskommunikation (IPC). In diesem Fall ermöglicht der Proxy-Prozess 322 die Kommunikation zwischen der Browsererweiterung 324 und dem Sync-Client 320 dadurch, dass er von einem (z. B. von der Browsererweiterung 324 oder von dem Sync-Client 320) empfangene Kombinationen zu dem anderen (z. B. zu dem Sync-Client 320 oder zu der Browsererweiterung 324) weiterleitet. Der Proxy-Prozess 322 ist eine getrennte ausführbare Datei, wobei mehrere Instanzen des Proxy-Prozesses 322 gleichzeitig geöffnet oder ausgeführt werden können. In einigen Beispielen wird eine neue Instanz des Proxy-Prozesses 322 gestartet, wenn JAVASCRIPT in der Browsererweiterung 324 in Ansprechen auf den Empfang einer Nutzeranforderung zum Öffnen eines Dokuments mit einer lokalen Anwendung eine Initiierungsfunktion aufruft. In einigen Beispielen kann eine Instanz des Proxy-Prozesses 322 durch den Browser 312, durch die Browsererweiterung 324, durch JAVASCRIPT in der Browsererweiterung 324 oder durch die Speicherbereinigung zerstört oder beendet werden. Die Speicherbereinigung bezieht sich hier auf eine Routinespeicherwartung, die durch Betriebssysteme, Programme, Prozesse und Anwendungen ausgeführt wird. Gelegentlich kann der Proxy-Prozess 322 eine Kommunikation ändern, bevor er die geänderte Kommunikation weiterleitet. In einem Beispiel ändert der Proxy-Prozess 322 die Kommunikation dadurch, dass er eines oder mehrere der folgenden ausführt: Ändern des Formats der Kommunikation, Hinzufügen von Daten oder Elementen zu der Kommunikation oder Entfernen von Daten oder Elementen von der Kommunikation. Die Kommunikation mit den Proxy-Prozessen 322 kann einen Standardeingabestrom (stdin), einen Standardausgabestrom (stdout) und einen Standardfehlerstrom (stderr) enthalten. Stdin-, stdout- und stderr-Ströme sind Byteströme von Daten zwischen einer Anwendung und ihrer Umgebung. Während standardmäßig der stdin-Strom Tastaturdaten annimmt und der stdout-Strom auf einem Monitor angezeigt wird, können irgendwelche der drei Ströme umgeleitet werden. In einem Beispiel kann der stdin-Strom der Browsererweiterung 324 zu dem Proxy-Prozess 322 umgeleitet werden, so dass die Browsererweiterung 324 eine Eingabe von dem Proxy-Prozess 322 empfängt. Der stdout- und der stderr-Strom der Browsererweiterung 324 können zu dem Proxy-Prozess 322 umgeleitet werden, so dass die Browsererweiterung 324 direkt an den Proxy-Prozess 322 ausgibt. Gleichfalls können irgendwelche des stdin-, des stdout- und des stderr-Stroms des Sync-Clients 320 zu dem Proxy-Prozess 322 geleitet werden. In einigen Beispielen erfolgt die stdin-, stdout- und stderr-Kommunikation in dem Format von JAVASCRIPT OBJECT NOTATION-Zeichenketten (JSON-Zeichenketten) mit vorangestellten Längenbytes oder Wörtern. In diesen Beispielen kann die Browsererweiterung nun serialisierbare JAVASCRIPT-Objekte an den Proxy-Prozess 322 geben und Objekte in einem ähnlichen Format zurückempfangen. In einem anderen Beispiel kann die Kommunikation mit dem Proxy-Prozess 322 die Verwendung einer oder mehrerer Named Pipes enthalten. In einem Beispiel kann die Kommunikation mit dem Proxy-Prozess 322 eine Nachrichtenübergabe enthalten. In einem anderen Beispiel kann vor der Kommunikation zwischen dem Browser 312, der Browsererweiterung 324 und dem Sync-Client 320 eine kryptographische Authentisierung erforderlich sein. In einem anderen Beispiel kann die Kommunikation zwischen dem Browser 312, der Browsererweiterung 324, dem Sync-Client 320 und den lokalen Anwendungen 314 andere Formen der Kommunikation zwischen Anwendungen enthalten. Um diese Kommunikation zu ermöglichen, kann die Browsererweiterung 324 installiert werden, wenn sich ein Nutzer bei dem Sync-Client 320 anmeldet oder auf andere Weise authentisiert. Der Browser 312 kann unter Verwendung des Proxy-Prozesses 322 zum Übergeben von Nachrichten zwischen der Browsererweiterung 324 und dem Sync-Client 320 mit lokalen Anwendungen 314 kommunizieren, um an lokalen Dateien 310 zu arbeiten.
-
In einigen Beispielen wird für die Kommunikation zwischen dem Browser 312, der Browsererweiterung 324 und dem Sync-Client 320 eine Platzhalter-Domain in dem Netz 304 verwendet. In einem Beispiel kann die Platzhalter-Domain bei einem Domain-Namen-System, das auf eine Domain wie etwa localhost (127.0.0.1), die einer lokalen Vorrichtung 302 üblicherweise zugeordnet ist, Bezug nimmt, registriert werden. In diesem Fall kann die lokale Vorrichtung 302 ein Zertifikat enthalten, das Secure-Hypertext-Transfer-Protocol-Anforderungen (HTTPS-Anforderungen) validiert. In diesem Fall kann der Proxy-Prozess 322 nicht verwendet werden.
-
In einigen Beispielen wird für die Kommunikation zwischen dem Browser 312 und dem Sync-Client 320 ein Vollduplexkommunikationsprotokoll wie etwa ein WebSocket-Protokoll verwendet. In einigen Beispielen kann die Browsererweiterung 324 nicht verwendet werden. Die Proxy-Prozesse 322 können als ein Vermittler-Proxy zwischen dem Browser 312 und dem Sync-Client 320 wirken. Die Browsererweiterung 324 kann über eine Messaging-Anwendungsprogrammierschnittstelle (Nachrichten-API) einen JSON-Protokollendpunkt freilegen. In diesem Fall kann eine in dem Browser 312 angezeigte Webseite Nachrichten an den Proxy-Prozess 322 senden und von ihm empfangen, der diese Nachrichten an den Sync-Client 320 und von ihm weiterleitet. Der Browser 312 kann sich mit dem Proxy-Prozess 322 verbinden, ein Port-Objekt festsetzen und eine Benachrichtigung an den Proxy-Prozess 322 senden. Der Browser 312 kann eine WebSocket-Verbindung aufbauen und die WebSocket-Verbindung dem Port-Objekt zuordnen. Auf diese Weise wird die Kommunikation zwischen dem Browser 312 und dem localhost (der Loopback-Netzschnittstelle der lokalen Vorrichtung 302) über die WebSocket-Verbindung behandelt. In diesem Fall können eingehende Nachrichten bei dem Port serialisiert und zu dem WebSocket weitergeleitet werden. Eingehende Nachrichten für den WebSocket können in JSON-Zeichenketten umgesetzt werden und an die Webseite zurückgesendet werden. Durch Verwendung des Proxy-Prozesses 322 zum Senden von Inhalt zwischen der in dem Browser 312 angezeigten Webseite und der unsicheren localhost-WebSocket-Verbindung können Warnungen über gemischten Inhalt, die andernfalls auftreten können, falls sichere Webseiten (wie etwa SSL-signierte Seiten) mit ungesicherten Netzadressen wie etwa localhost kommunizieren, vermieden werden. Solche Warnungen über gemischten Inhalt würden die Kommunikation zwischen dem Browser 312 und der localhost-WebSocket-Verbindung hemmen.
-
In einigen Beispielen kommuniziert der Sync-Client 320 mit den lokalen Anwendungen 314 und mit der Datenbank 308. Insbesondere kann der Sync-Client 320 den lokalen Dateien 310 in der Datenbank 308 zugeordnet sein. Diese Zuordnung kann daraus entstehen, dass der Sync-Client 320 eine Synchronisation der lokalen Dateien 310 in der Datenbank 308 mit Dokumenten in dem Cloud-Computing-Dienst 101 ausführt. In einem Beispiel kann die Synchronisation einer lokalen Datei 310a das Senden und Empfangen von Änderungen an der lokalen Datei 310a in der Weise, dass die lokale Datei 310a eine Kopie einer Cloud-Datei 218a ist, die auf dem Server 206 gespeichert ist, oder in der Weise, dass die Cloud-Datei 218a eine Kopie der lokalen Datei 310a ist, umfassen. Wie in 3 gezeigt ist, sendet der Sync-Client 320 durch Senden einer Anforderung zum Öffnen, zum Anzeigen, zum Bearbeiten oder zum Anzeigen einer Datei Anweisungen zum Öffnen an die lokalen Anwendungen 314.
-
In einigen Beispielen werden die Anwendungen 314 unter Verwendung einer Manifestdatei, die dynamisch erstellt werden kann und in einem Nutzerprofil angeordnet werden kann, wenn der Sync-Client 320 und/oder der Browser 312 initialisiert werden, bei dem Sync-Client 320 registriert. In einem Beispiel kann der Sync-Client 320 nur unter Verwendung der Manifestdatei mit lokalen Anwendungen 314, die bei dem Sync-Client 320 registriert sind, kommunizieren. Durch Registrieren lokaler Anwendungen über eine Manifestdatei kann der Sync-Client 320 die Wahrscheinlichkeit von Verletzungen der Sicherheit, die durch die Ausführung potentiell schädlicher Anwendungen verursacht werden, verringern.
-
4 zeigt eine beispielhafte Nutzerschnittstelle 400, die zum Managen von Dokumenten, die in einem Cloud-Computing-Dienst 101 gespeichert sind, und um auf sie zuzugreifen verwendet wird. Die Nutzerschnittstelle 400 kann für einen Nutzer in einem Browser 212 auf einer lokalen Vorrichtung 202 bereitgestellt werden. Wie in 4 gezeigt ist, zeigt die Nutzerschnittstelle 400 eine Webseite an, die von einem Server gelieferten Inhalt enthält. Um die Nutzerschnittstelle 400 zu betrachten, kann es erforderlich sein, dass sich ein Nutzer bei einem Authentisierungsserver anmeldet oder authentisiert. Dadurch, dass eine Authentisierung erforderlich ist, kann die Nutzerschnittstelle 400 Inhalt anzeigen, der an den angemeldeten Nutzer angepasst ist, wie etwa eine Menge von Dokumenten 406, die in einem Cloud-Dienst (wie etwa in dem Cloud-Computing-Dienst 101) gespeichert sind und die dem Nutzer zugeordnet sind. In dem in 4 gezeigten Beispiel sind die Dokumente 406a und 406b Textverarbeitungsdokumente, ist das Dokument 406c ein Zeichnungsdokument, ist das Dokument 406d ein Formulardokument, ist das Dokument 406e ein Präsentationsdokument und ist das Dokument 406f ein Spreadsheet-Dokument. Diese Anordnung von Dokumenten ist nicht einschränkend und in der Nutzerschnittstelle 400 können andere Anordnungen oder Typen von Dokumenten als die in 4 gezeigten angezeigt werden, ohne von dem Schutzumfang der vorliegenden Offenbarung abzuweichen. In dem Cloud-Computing-Dienst 101 gespeicherte Dokumente können in Ordnern wie etwa in dem Ordner 408 angeordnet oder enthalten sein. Wenn der Nutzer eine Erstellen-Schaltfläche 410 auswählt, kann ein neues Dokument erstellt werden. Wie in 4 gezeigt ist, enthält die Nutzerschnittstelle 400 eine Anzeige von Ordnern auf dem Cloud-Dienst, die dem Nutzer zugeordnet sind, und eine Anzeige des Inhalts eines Ordners.
-
Gelegentlich ist die lokale Vorrichtung 202 online und mit dem Server 206 verbunden. In diesem Fall kann der Server 206 Kopien der angezeigten Dokumente 406 in der Datenbank 216 speichern. Die Menge angezeigter Dokumente 406 kann einer Menge von Dokumenten entsprechen, die dem Nutzer zugeordnet sind und für die der Server 206 Kopien in der Datenbank 216 besitzt. Während die lokale Vorrichtung 202 online ist, kann der Sync-Client 320 die Datenbank 208 aktualisieren, so dass lokale Kopien der Dokumente in dem Cloud-Computing-Dienst 101 auf der lokalen Vorrichtung 202 unterhalten werden, so dass weiterhin auf die Dokumente zugegriffen werden kann, selbst wenn die lokale Vorrichtung 202 offline ist. Die lokale Vorrichtung 202 kann offline und von dem Server 206 getrennt werden, wie etwa, wenn die lokale Vorrichtung 202 von dem Netz 204 getrennt wird. Dies kann auftreten, wenn die lokale Vorrichtung 202 in einem Gebiet intermittierender Versorgung mit drahtlosem Netz ist oder von einer verdrahteten Netzverbindung ausgesteckt ist. Der Offline-Zustand kann ebenfalls auftreten, wenn die lokale Vorrichtung 202 mit dem Netz 204 verbunden ist, die lokale Vorrichtung 202 und/oder eine der Anwendungen auf der lokalen Vorrichtung 202 aber nicht authentisiert ist, so dass der Server 206 verhindert, dass die lokale Vorrichtung 202 auf den Server 206 zugreifen kann. Wenn die lokale Vorrichtung 202 offline ist, kann die Nutzerschnittstelle 400 weiterhin in der Lage sein, Dokumente 406 anzuzeigen. Die Dokumente 406 können lokalen Dateien 210 entsprechen, die in der Datenbank 208 gespeichert sind und die dem angemeldeten Nutzer zugeordnet sind.
-
Der Nutzer kann die Nutzerschnittstelle 400 verwenden, um ein Dokument 406 zum Öffnen mit einer der lokalen Anwendungen 214 auszuwählen. Insbesondere kann der Nutzer eines der Dokumente 406 auswählen und daraufhin eine Anwendung 214 auswählen, mit der das ausgewählte Dokument 406 geöffnet werden soll. In dem in 4 gezeigten Beispiel hat der Nutzer durch Auswählen des benachbarten Optionsfelds ein Präsentationsdokument 406e ausgewählt. Allgemein können andere Verfahren zum Auswählen eines Dokuments wie etwa durch ein- oder mehrmaliges Anklicken des Namens des gewünschten Dokuments oder durch Ziehen und Ablegen des gewünschten Dokuments an einen spezifizierten Ort verwendet werden. Wie in 4 gezeigt ist, wählt der Nutzer daraufhin durch Auswählen des Menüs 402 eine Anwendung aus und wählt er daraufhin die Option 418 "Öffnen mit" aus.
-
Wenn der Nutzer die Option 418 ausgewählt hat, wird dem Nutzer eine Liste von Anwendungskandidaten 420a und 420b (allgemein Anwendungskandidat 420) dargestellt. Die Liste der Anwendungskandidaten 420 kann darauf beschränkt werden, nur Anwendungen zu enthalten, die dafür konfiguriert sind, Operationen an Dokumenten mit demselben Dateityp wie die ausgewählte Datei 406e auszuführen. Die in 4 gezeigten Anwendungskandidaten 420 enthalten nur eine lokale Anwendung 420A und eine Serveranwendung 420B, wobei aber allgemein irgendeine Anzahl lokaler Anwendungen und/oder Serveranwendungen gezeigt werden können. Gelegentlich können keine lokalen Anwendungen (oder Serveranwendungen) dafür konfiguriert sein, an der ausgewählten Datei zu arbeiten, so dass keine lokalen Anwendungen (oder Serveranwendungen) in der Liste enthalten sind. Der Nutzer kann eine der aufgeführten Anwendungen 420 dafür auswählen, an dem ausgewählten Dokument 406e zu arbeiten.
-
Wie in Bezug auf 4 beschrieben ist, wählt der Nutzer zunächst die Datei 406 und daraufhin die Anwendung 406, die zum Öffnen der ausgewählten Datei zu verwenden ist, aus. In einem anderen Beispiel kann der Nutzer zunächst aus einer Liste von Anwendungen eine Anwendung auswählen und daraufhin ein Dokument auswählen, von dem zu arbeiten die gewählte Anwendung konfiguriert ist. In einem anderen Beispiel kann der Nutzer keine Auswahl einer Anwendung bereitstellen und kann eine Standardanwendung verwendet werden, um die ausgewählten Datei zu öffnen. Wenn die lokale Vorrichtung 202 online ist, kann eine Kopie des ausgewählten Dokuments von einer der Cloud-Dateien 218 in der Serverdatenbank 216 bereitgestellt werden. Alternativ kann eine Kopie des ausgewählten Dokuments von einer der Dateien 214 in der lokalen Datenbank 208 bereitgestellt werden. Wenn die lokale Vorrichtung 202 offline ist, kann eine Kopie des ausgewählten Dokuments von einer der lokalen Dateien 210 in der lokalen Datenbank 208 bereitgestellt werden. Dementsprechend kann der Nutzer mit der Browser-basierten Nutzerschnittstelle 400 unter Verwendung einer lokalen Anwendung auf ein Cloud-basiertes Dokument zugreifen und es bearbeiten. Das Zugreifen auf ein Cloud-basiertes Dokument und dessen Bearbeiten mit einer lokalen Anwendung ermöglichen, dass der Nutzer im Vergleich zu einer Cloud-basierten Anwendung eine erhöhte Funktionalität der lokalen Anwendung nutzt. Die Verwendung lokaler Anwendungen kann ebenfalls eine verbesserte Bearbeitungserfahrung bereitstellen, da die Verwendung einer Cloud-basierten Anwendung zu einer merklichen Latenzzeit führen kann, falls eine Netzverbindung langsam oder intermittierend ist.
-
5 ist ein Ablaufplan eines beispielhaften Verfahrens 500 zum Öffnen eines Dokuments unter Verwendung einer lokalen Anwendung auf der Grundlage einer Anforderung von einem Nutzer. In Schritt 502 empfängt der Browser 212 von einem Nutzer eine Anforderung zum Öffnen eines Dokuments, das in einem Cloud-Dienst wie etwa in dem Cloud-Computing-Dienst 101 gespeichert ist. Beispiele für angeforderte Dokumente können irgendeines des Dokuments 103 und der Dokumente 406 enthalten. Das angeforderte Dokument kann einer Datei zugeordnet sein, die auf einem Server wie etwa auf dem Server 206 gespeichert ist, wobei Beispiele der zugeordneten Dateien die Cloud-Dateien 218 enthalten können. In einem Beispiel wird die Anforderung durch die wie in Bezug auf 4 beschriebene Nutzerschnittstelle 400 empfangen.
-
Im Entscheidungsblock 504 bestimmt ein Prozessor, der die Browsererweiterung 324 ausführt, wie etwa der Prozessor 328, ob der Sync-Client 320 auf der lokalen Vorrichtung 302 ausgeführt wird. In einigen Beispielen bestimmt der Prozessor 328, ob der Sync-Client auf der lokalen Vorrichtung 302 installiert ist. In einigen Beispielen sieht ein Prozessor in einer Registry, in einer Eigenschaftsliste, in einer Plist, in einer Datenbank, in Präferenzen, in Konfigurationsdateien oder an Dateiorten nach, um zu bestimmen, ob der Sync-Client 320 installiert ist. Falls der Sync-Client 320 nicht installiert ist, geht das Verfahren 500 zu Schritt 506 über, um den Nutzer durch die Installation des Sync-Clients 320 zu führen. Falls der Client 320 andernfalls installiert ist, überspringt das Verfahren 500 den Schritt 506 und geht direkt zu dem Schritt 508 über. In einigen Beispielen führt das Verfahren 500 den Nutzer nicht durch die Installation des Sync-Clients 320 in Schritt 506, sondern endet das Verfahren 500 stattdessen, falls der Sync-Client 320 nicht installiert ist.
-
In Schritt 508 sendet die Browsererweiterung 324 eine Anforderung zum Öffnen des angeforderten Dokuments an den Sync-Client 320. Diese Anforderung kann über einen Proxy-Prozess 322 und/oder über ein WebSocket-Protokoll und/oder über eine Named Pipe und/oder über eine Standardeingabe und/oder über eine Standardausgabe und/oder über einen Standardfehler und/oder über ein Nachrichtenübergabeprotokoll und/oder über eine kryptographische Authentisierung und/oder über andere Mittel zur Kommunikation zwischen Anwendungen an den Sync-Client 320 gesendet werden. Die gesamte Kommunikation zwischen hier beschriebenen Anwendungen wie etwa zwischen irgendeinem des Browsers 312, der Browsererweiterung 324, des Proxy-Prozesses 322, des Sync-Clients 320, der Netzschnittstelle 326, der lokalen Anwendungen 314, der Datenbank 308, anderer Anwendungen auf der lokalen Vorrichtung 202 und ähnlicher Komponenten auf der lokalen Vorrichtung 302 und dem Server 206 können irgendeines der hier beschriebenen Mittel zur Kommunikation zwischen Anwendungen verwenden. Die Anforderung zum Öffnen des angeforderten Dokuments kann eine Kennung des angeforderten Dokuments und eine Kennung des bei dem Cloud-Computing-Dienst 101 angemeldeten Nutzers enthalten.
-
Im Entscheidungsblock 510 authentisieren sich die Browsererweiterung 324 und der Sync-Client 320 miteinander, um zu bestimmen, ob der Nutzer, der über den Browser 312 bei dem Cloud-Computing-Dienst 101 angemeldet ist, derselbe Nutzer ist wie ein Nutzer, der auf die lokalen Dateien 310 über den Sync-Client 320 zuzugreifen berechtigt ist. Diese Bestimmung kann das Bestimmen enthalten, ob der Nutzer, der bei dem Cloud-Computing-Dienst 101 angemeldet ist, und der berechtigte Nutzer des Sync-Clients 320 dasselbe Nutzerkonto repräsentieren. In einigen Beispielen führen der Browser 312 und der Sync-Client 320 eine Authentisierung dadurch aus, dass sie verifizieren, dass die Domain des Nutzerkontos eine erkannte Domain wie etwa google.com ist. In einigen Beispielen findet die Kommunikation zwischen der Browsererweiterung 324 und dem Sync-Client 320 zum Ausführen der Authentisierung über einen Proxy-Prozess 322 statt. In anderen Beispielen ist kein Proxy-Prozess an dieser Kommunikation beteiligt. Diese Authentisierung kann unter Verwendung eines Pre-Shared Keys, einer Kommunikation mit einem Authentisierungsserver oder eines anderen Verfahrens, um zu bestimmen, dass sowohl bei dem Browser 312 als auch bei dem Sync-Client 320 derselbe Nutzer angemeldet ist, ausgeführt werden. Der in 6 dargestellte Authentisierungsprozess kann zum Ausführen der obigen Authentisierung verwendet werden. In einigen Beispielen kann der Schritt 510 nach dem Schritt 514 oder nach dem Schritt 520 stattfinden.
-
Falls der Browser 312 und der Sync-Client 320 nicht dasselbe Nutzerkonto repräsentieren, geht das Verfahren 500 zu Schritt 512 über, um zu enden. In einigen Beispielen kann dem Nutzer über die Nutzerschnittstelle 400 beim Beenden eine Nachricht dargestellt werden. Die Nachricht kann den Grund für die Beendigung enthalten und kann eine oder mehrere Maßnahmen vorschlagen, die der Nutzer ergreifen kann, um sich richtig zu authentisieren. Vorgeschlagene Maßnahmen können das Anmelden bei dem Sync-Client 320 und das Anmelden bei dem Cloud-Computing-Dienst 101 in der Weise, dass dasselbe Nutzerkonto sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 authentisiert ist, enthalten.
-
Im Entscheidungsblock 514 bestimmt der Prozessor 328, der den Sync-Client 320 ausführt, ob auf der lokalen Vorrichtung 302 eine lokale Kopie des angeforderten Dokuments verfügbar ist. Der Prozessor 328 kann diese Bestimmung dadurch vornehmen, dass er bestimmt, dass eine Datei in der Datenbank 308 wie eine der lokalen Dateien 310 dem angeforderten Dokument in dem Cloud-Computing-Dienst 101 zugeordnet ist. Der Prozessor kann die Dokumentkennung, die in der in Schritt 508 durch den Sync-Client 320 empfangenen übermittelten Anforderung enthalten ist, verwenden, um zu bestimmen, ob eine lokale Kopie verfügbar ist. Eine solche verfügbare lokale Kopie kann mit einer der Cloud-Dateien 218 auf dem Server 206 synchronisiert werden. Alternativ kann die verfügbare lokale Kopie unabhängig davon, ob die lokale Vorrichtung 302 online ist, und unabhängig von der Zeitdauer, die verstrichen ist, seit die lokale Kopie mit einer der Cloud-Dateien 218 auf dem Server 206 synchronisiert worden ist, zuvor mit einer der Cloud-Dateien 218 auf dem Server 206 zu einer früheren Zeit synchronisiert worden sein. In einigen Beispielen kann dem Nutzer eine Benachrichtigung dargestellt werden, dass der Nutzer mit einer lokalen Kopie arbeiten wird, die nicht die aktuellste Version des angeforderten Dokuments sein kann, falls die Zeitdauer, die verstrichen ist, seit die lokale Kopie mit dem Server 206 synchronisiert wurde, eine vorgegebene Schwellenzeitdauer übersteigt. Falls die Zeitdauer den vorgegebenen Schwellenwert übersteigt, kann das Verfahren 500 zum Entscheidungsblock 516 und zum Schritt 522 übergehen, um die neueste Kopie von dem Server 206 herunterzuladen zu versuchen. In einigen Beispielen kann das Verfahren 500 selbst dann zu Schritt 520 übergehen, wenn die Zeitdauer den vorgegebenen Schwellenwert überschreitet.
-
Falls der Prozessor 328, der den Sync-Client 320 ausführt, im Entscheidungsblock 514 bestimmt, dass auf der lokalen Vorrichtung 302 keine lokale Kopie des angeforderten Dokuments verfügbar ist, geht das Verfahren 500 zum Entscheidungsblock 516 über, in dem der Prozessor 328 bestimmt, ob die lokale Vorrichtung 302 online ist. Der Prozessor 328 kann diese Bestimmung dadurch vornehmen, dass er einen Server wie etwa den Server 206 anpingt oder auf andere Weise mit einer Vorrichtung an einem fernen Ort kommuniziert. Falls die lokale Vorrichtung 302 nicht online ist und somit von dem Server 206 getrennt ist, geht das Verfahren zu Schritt 518 über, um zu enden. Beim Beenden kann dem Nutzer über die Nutzerschnittstelle 400 eine Nachricht dargestellt werden. Die Nachricht kann eine Benachrichtigung enthalten, dass auf der lokalen Vorrichtung 302 keine lokale Kopie verfügbar ist und dass die lokale Vorrichtung 302 offline ist, was verhindert, dass eine lokale Kopie von dem Server 206 erhalten wird. In einigen Beispielen geht das Verfahren 500 direkt zu einem geänderten Schritt 524 über, in dem der Sync-Client 320 eine leere Liste lokaler Anwendungen an den Browser sendet, falls der Sync-Client 320 im Entscheidungsblock 514 bestimmt, dass auf der lokalen Vorrichtung 302 keine lokale Kopie des angeforderten Dokuments verfügbar ist.
-
Falls der Sync-Client 320 im Entscheidungsblock 516 bestimmt, dass die lokale Vorrichtung 302 online und somit mit dem Server 206 verbunden ist, geht das Verfahren 500 zu Schritt 522 über, in dem der Sync-Client 320 eine lokale Kopie des angeforderten Dokuments von dem Server 206 auf die lokale Vorrichtung 302 herunterlädt. In einem Beispiel kann die lokale Kopie eine der lokalen Dateien 310 in der Datenbank 308 sein. In einem anderen Beispiel kann die lokale Kopie an einem weniger dauerhaften Ort oder in einem flüchtigen Speicher wie etwa in einem Schreib-Lese-Speicher (RAM) gespeichert sein. Bevor das Verfahren zu Schritt 522 übergeht, kann der Nutzer benachrichtigt werden und aufgefordert werden zu ermöglichen, dass das Verfahren 500 fortgesetzt wird. Wegen einer vorher durch den Nutzer getroffenen Auswahl, das angeforderte Dokument nicht mit der lokalen Vorrichtung 302 zu synchronisieren, kann ursprünglich keine lokale Kopie verfügbar gewesen sein. Alternativ kann ursprünglich keine lokale Kopie verfügbar gewesen sein, falls der Sync-Client 320 in Schritt 502 nicht installiert wurde, sondern erst in Schritt 506 des Verfahrens 500 installiert wurde. Nachdem die lokale Kopie des Dokuments in Schritt 522 von dem Server heruntergeladen worden ist, geht das Verfahren 500 zu Schritt 520 über. Andernfalls bestimmt der Sync-Client 320 im Entscheidungsblock 514, dass eine lokale Kopie des angeforderten Dokuments verfügbar ist, und geht das Verfahren 500 zu Schritt 520 über.
-
In Schritt 520 bestimmt der Sync-Client 320, welche der lokalen Anwendungen 314, wenn überhaupt, in der Lage sind, Operationen an der lokalen Kopie auszuführen. Der Sync-Client 320 kann bestimmen, dass keine, eine oder mehrere lokale Anwendungen 314 zum Ausführen von Operationen an der lokalen Kopie konfiguriert sind. Der Sync-Client kann diese Bestimmung dadurch vornehmen, dass er den Dateityp der lokalen Kopie durch Analysieren der Dokumentkennung, des Dateinamens, der Dateierweiterung, des Anfangsblocks oder anderer Mittel zum Bestimmen des Formats bestimmt und daraufhin mit einer Manifestdatei und/oder einer Registry und/oder einer Eigenschaftsliste und/oder einer Plist und/oder Konfigurationsdateien und/oder Präferenzen und/oder einer Datenbank und/oder anderen Mitteln zur Bestimmung lokaler Anwendungen, die dafür konfiguriert sind, an einem bestimmten Dateityp oder Dateiformat Operationen auszuführen, vergleicht. Der Sync-Client 320 kann bestimmen, dass eine der lokalen Anwendungen 314 eine Standardanwendung zum Öffnen der lokalen Kopie ist.
-
In Schritt 524 sendet der Sync-Client 320 an die Browsererweiterung 324, optional über den Proxy-Prozess 322, eine Liste lokaler Anwendungen, die in der Lage sind, an der lokalen Kopie zu arbeiten. Die Liste kann unter Verwendung von Kennungen der Anwendungen auf keine, auf eine oder auf eine Menge der lokalen Anwendungen 314, die dafür konfiguriert sind, an der lokalen Kopie zu arbeiten, Bezug nehmen. Die Liste kann für jede Anwendung, auf die die Liste Bezug nimmt, die Tatsache, ob die Anwendung die Standardanwendung für Dateien des angeforderten Dateityps ist, und ein Symbol für die Anwendung enthalten.
-
In Schritt 526 stellt die Browsererweiterung 324 dem Nutzer über die Nutzerschnittstelle 400 die Liste der lokalen Anwendungen dar. In einigen Beispielen kann die Browsererweiterung 324 ebenfalls bestimmen, dass eine oder mehrere Serveranwendungen das angeforderte Dokument öffnen können. In diesen Beispielen kann die Browsererweiterung 324 dem Nutzer über die Nutzerschnittstelle 400 eine Liste von Serveranwendungen darstellen. Falls die empfangene Liste keine lokalen Anwendungen enthält, können dem Nutzer keine lokalen Anwendungen dargestellt werden und können ihm nur Serveranwendungen dargestellt werden. Falls keine Serveranwendungen dafür konfiguriert sind, Operationen an dem angeforderten Dokument auszuführen, können nur lokale Anwendungen dargestellt werden. Falls keine lokalen Anwendungen und keine Serveranwendungen dafür konfiguriert sind, Operationen an dem angeforderten Dokument oder an der lokalen Kopie auszuführen, können keine Anwendungen dargestellt werden und endet das Verfahren 500. Dem Nutzer kann eine Benachrichtigung dargestellt werden, dass das angeforderte Dokument nicht geöffnet werden kann.
-
In Schritt 528 wählt der Nutzer eine Anwendung aus der Liste aus. Der Nutzer kann die Auswahl über die Nutzerschnittstelle 400 vornehmen, wie sie in Bezug auf 4 erläutert ist. Anstatt zu fordern, dass der Nutzer eine Anwendung aus der Liste auswählt, kann dem Nutzer eine Option zur Verwendung einer Standardanwendung dargestellt werden. Standardanwendungen können insbesondere für Nutzer, die dieselbe Anwendung häufig zum Öffnen von Dateien ähnlicher Typen verwenden, nützlich sein. Die Standardanwendung für eine spezifische Datei oder für einen spezifischen Dateityp kann auf der Grundlage der vorherigen Auswahl von Anwendungen für diese Datei oder diesen Dateityp eines Nutzers aktualisiert werden.
-
Im Entscheidungsblock 530 bestimmt die Browsererweiterung 324, ob die ausgewählte Anwendung eine lokale Anwendung oder eine Serveranwendung ist. Zum Beispiel kann die Browsererweiterung 324 die ausgewählte Anwendung mit der in Schritt 524 gesendeten Liste von Anwendungen vergleichen, um zu bestimmen, ob die ausgewählte Anwendung eine lokale Anwendung oder eine Serveranwendung ist. Falls die ausgewählte Anwendung eine Serveranwendung ist, geht das Verfahren 500 zu Schritt 532 über, um das angeforderte Dokument unter Verwendung der ausgewählten Serveranwendung zu öffnen. In einem Beispiel kann die ausgewählte Serveranwendung das angeforderte Dokument von einem in dem Cloud-Computing-Dienst 101 enthaltenen Server 206 öffnen, anstatt eine lokale Kopie des angeforderten Dokuments zu öffnen. In einem anderen Beispiel kann die ausgewählte Serveranwendung eine lokale Kopie des angeforderten Dokuments von einer der lokalen Dateien 310 öffnen.
-
Falls die Browsererweiterung 324 im Entscheidungsblock 530 andernfalls bestimmt, dass die ausgewählte Anwendung eine lokale Anwendung ist, geht das Verfahren 500 zu Schritt 534 über, in dem die Browsererweiterung 324 an den Sync-Client 320, optional über den Proxy-Prozess 322, eine Kennung sendet, die der ausgewählten Kennung zugeordnet ist. Außerdem kann die Browsererweiterung 324 eine Kennung des Nutzers, der bei dem Cloud-Computing-Dienst 101 angemeldet ist, wie etwa eine E-Mail-Adresse, und eine Kennung für das angeforderte Dokument senden. Eine Manifestdatei kann Zuordnungen zwischen Anwendungen und Kennungen zur Verwendung in Schritt 534 speichern. In einem Beispiel kann anstelle eines lokalen Pfads, einer ausführbaren Datei oder einer anderen Form eines direkten Befehls eine Kennung gesendet werden, die der ausgewählten Anwendung entspricht. In diesem Beispiel ist die Sicherheit der lokalen Vorrichtung 302 erhöht, da ein lokaler Pfad, eine ausführbare Datei oder ein direkter Befehl verwendet werden können, um die lokale Vorrichtung zu böswilligen Zwecken anzugreifen. Wenn eine der ausgewählten Anwendung zugeordnete Kennung verwendet wird, muss der Sync-Client 320 ebenfalls die Zuordnung besitzen und muss die Anwendung dem Sync-Client 320 bekannt sein, damit der Sync-Client 320 auf der Grundlage der Kennung eine Aktion ausführt. Dies stellt eine zusätzliche Sicherheitsschicht für die lokale Vorrichtung 302 bereit. In anderen Beispielen wird keine Kennung der Anwendung verwendet und wird ein direkteres, aber weniger sicheres Verfahren zur Identifizierung wie etwa ein lokaler Pfad, eine ausführbare Datei oder eine andere Form eines direkten Befehls verwendet.
-
In Schritt 536 sendet der Sync-Client 320 an das Betriebssystem der lokalen Vorrichtung einen Befehl, die ausgewählte lokale Anwendung zum Öffnen der lokalen Kopie des angeforderten Dokuments zu verwenden. In Schritt 536 kann das Betriebssystem die ausgewählte lokale Anwendung bei Bedarf öffnen. Die ausgewählte lokale Anwendung kann eine der Anwendungen 314 sein und die lokale Kopie kann eine der lokalen Dateien 310 sein. In einigen Beispielen kann der Sync-Client 320 den Befehl direkt an die ausgewählte lokale Anwendung senden oder kann sich der Proxy-Prozess 322 am Senden des Befehls beteiligen. In einigen Beispielen enthält der Schritt 536 den Schritt, den Nutzer zu bestätigen aufzufordern, dass der Sync-Client 320 die ausgewählte Anwendung öffnen darf. In einigen Beispielen wird dieses Auffordern ausgeführt, wenn der Sync-Client 320 jede lokale Anwendung das erste Mal öffnet, und wird es in nachfolgenden Fällen, in denen der Sync-Client 320 diese Anwendung öffnet, nicht ausgeführt.
-
In Schritt 538 öffnet die ausgewählte lokale Anwendung die lokale Kopie des angeforderten Dokuments. Falls die ausgewählte lokale Anwendung noch nicht ausgeführt wird, startet die ausgewählte lokale Anwendung vor dem Öffnen der ausgewählten lokalen Kopie. Daraufhin kann der Nutzer die lokale Kopie des Dokuments unter Verwendung der ausgewählten lokalen Anwendung betrachten, bearbeiten und sichern. Irgendwelche durch den Nutzer an dem Dokument vorgenommenen Änderungen können durch den Sync-Client 320 an den Server 206 gesendet werden. Dadurch, dass es zwischen dem Browser 312, der Browsererweiterung 324, dem Sync-Client 320 und den lokalen Anwendungen 314 eine Kommunikation ermöglicht, ermöglicht das System 300, dass eine der lokalen Anwendungen 314 auf der Grundlage einer über die Nutzerschnittstelle 400 empfangenen Anforderung eine der lokalen Dateien 310 öffnet.
-
In einigen Beispielen ist das Verfahren 500 vereinfacht. Der Browser 312 kann in Schritt 502 den Dateityp der Datei bestimmen und den Dateityp in die in Schritt 508 gesendete Anforderung aufnehmen. In diesen Beispielen kann der Schritt 520 das Bestimmen, welche lokalen Anwendungen Dateien des angeforderten Dateityps unabhängig davon, ob eine lokale Kopie vorhanden ist, öffnen können, umfassen. In diesen Beispielen kann der Sync-Client 320 das angeforderte Dokument von einem Server herunterladen, um eine lokale Kopie 310a zu erstellen, wenn die Anwendung in Schritt 528 ausgewählt wird.
-
6 ist ein Ablaufplan eines von dem System 200 verwendeten beispielhaften Verfahrens 600, um den Nutzer wie etwa in dem wie in Bezug auf 5 beschriebenen Entscheidungsblock 510 zu authentisieren. Die Browsererweiterung 324 und der Sync-Client 320 können das Verfahren 600 verwenden, um zu bestimmen, dass sie denselben Nutzer repräsentieren, und somit, damit der bei dem Browser angemeldete Nutzer Zugriff auf die lokalen Dateien 310 hat.
-
In Schritt 602 authentisiert sich der Nutzer unter Verwendung des Browsers 312 bei dem Cloud-Computing-Dienst 101. Während der Authentisierung kann der Browser 312 einen Pre-Shared Key von einem dem Cloud-Computing-Dienst 101 zugeordneten Server empfangen und kann er außerdem den Pre-Shared Key mit der Browsererweiterung 324 gemeinsam nutzen.
-
In Schritt 604 authentisiert sich der Nutzer bei dem Sync-Client 320. Die Authentisierung bei dem Sync-Client 320 kann Teil der Installation des Sync-Clients 320 sein oder kann mit der Installation des Sync-Clients 320 nicht zusammenhängen. Zum Beispiel kann die Authentisierung beim Start der lokalen Vorrichtung 302, bei einer Authentisierung in Ansprechen auf die Nutzeranforderung für ein Dokument in Schritt 502 des Verfahrens 500, bei einer Authentisierung, wenn die lokale Vorrichtung von Offline zu Online übergeht, oder bei einer Authentisierung zu einem anderen Zeitpunkt stattfinden.
-
In Schritt 606 sendet die Browsererweiterung 324, optional über den Proxy-Prozess 322, eine Anforderung zur Authentisierung an den Sync-Client 320. Während der Authentisierung wird bestimmt, dass sowohl durch die Browsererweiterung 324 als auch durch den Sync-Client 320 dasselbe Nutzerkonto dargestellt wird. Die Anforderung zur Authentisierung kann über irgendwelche der hier beschriebenen Verfahren oder Protokolle, die sich auf die Kommunikation zwischen Anwendungen beziehen, gesendet werden. In einigen Beispielen enthält die Sendung einer Anforderung zur Authentisierung das Senden eines Einmalschlüssels von der Browsererweiterung 324 an den Sync-Client 320.
-
In Schritt 608 berechnet der Sync-Client 320 den Initiierungs-Hash und sendet er den Initiierungs-Hash an die Browsererweiterung 324. In einem Beispiel umfasst das Berechnen eines Initiierungs-Hashs, dass der Sync-Client 320 einen getrennten Einmalschlüssel festsetzt und einen Hash des Folgenden berechnet: eines Einmalschlüssels, der von der Browsererweiterung 324 empfangen wird (wie etwa des Einmalschlüssels, der in Schritt 606 empfangen werden kann); eines getrennten Einmalschlüssels, der durch den Sync-Client 320 festgesetzt wird (wie etwa des getrennten Einmalschlüssels, der in Schritt 608 festgesetzt werden kann); eines "Festsetzungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto darstellt, das bei dem Sync-Client 320 angemeldet ist; oder irgendeiner geeigneten Kombination davon. In einem Beispiel sendet der Sync-Client 320 den durch den Sync-Client 320 berechneten Initiierungs-Hash und den durch den Sync-Client 320 festgesetzten Einmalschlüssel an die Browsererweiterung 324.
-
Im Entscheidungsblock 610 berechnet die Browsererweiterung 324 unabhängig einen Initiierungs-Hash und bestimmt sie, ob der durch die Browsererweiterung 324 berechnete Initiierungs-Hash zu dem von dem Sync-Client 320 empfangenen Initiierungs-Hash passt. Die unabhängige Berechnung des Initiierungs-Hashs kann enthalten, dass die Browsererweiterung 324 einen Hash des Folgenden berechnet: eines Einmalschlüssels, der durch die Browsererweiterung 324 festgesetzt wird (wie etwa des Einmalschlüssels, der in Schritt 606 festgesetzt werden kann); eines Einmalschlüssels, der von den Sync-Client 320 empfangen wird (wie etwa des Einmalschlüssels, der in Schritt 608 empfangen werden kann); eines "Festsetzungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto repräsentiert, das bei dem Cloud-Computing-Dienst 101 angemeldet ist; oder irgendeiner geeigneten Kombination davon. Nach der unabhängigen Berechnung des Initiierungs-Hashs bestimmt die Browsererweiterung 324, ob der unabhängig berechnete Initiierungs-Hash zu dem von dem Sync-Client 320 empfangenen Initiierungs-Hash passt. Falls der berechnete Initiierungs-Hash nicht zu dem empfangenen Initiierungs-Hash passt, kann dies widerspiegeln, dass nicht sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 dasselbe Nutzerkonto angemeldet ist. Falls die Browsererweiterung 324 im Entscheidungsblock 610 bestimmt, dass diese zwei Initiierungs-Hashs nicht zusammenpassen, geht das Verfahren zu Schritt 612 über, um zu enden. Bei Beendigung des Verfahrens kann dem Nutzer eine Benachrichtigung dargestellt werden, dass die Authentisierung fehlgeschlagen ist, und können ihm eine oder mehrere Maßnahmen vorgeschlagen werden, die zur richtigen Authentisierung zu ergreifen sind.
-
Im Entscheidungsblock 610 bestimmt die Browsererweiterung 324, ob sowohl bei der Browsererweiterung 324 als auch bei dem Sync-Client 320 derselbe Nutzer angemeldet ist. Um die Sicherheit der lokal gespeicherten Dateien 310 zu verbessern, kann der Sync-Client dieselbe Bestimmung unabhängig vornehmen. Falls der empfangene Initiierungs-Hash im Entscheidungsblock 610 zu dem unabhängig berechneten Initiierungs-Hash passt, geht das Verfahren 600 zu Schritt 614 über, in dem die Browsererweiterung 324 einen Bestätigungs-Hash berechnet und den Bestätigungs-Hash an den Sync-Client 320 sendet. Die Berechnung des Bestätigungs-Hashs kann das Berechnen eines Hashs des Folgenden umfassen: eines durch die Browsererweiterung 324 festgesetzten Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 606 gesendet werden kann); eines Einmalschlüssels, der von dem Sync-Client 320 empfangen wird (wie etwa des Einmalschlüssel, der in Schritt 610 empfangen werden kann); eines "Bestätigen"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto repräsentiert, das bei dem Cloud-Computing-Dienst 101 angemeldet ist; oder irgendeiner geeigneten Kombination davon.
-
Im Entscheidungsblock 616 berechnet der Sync-Client 320 unabhängig einen Bestätigungs-Hash und bestimmt er, ob der durch den Sync-Client 320 berechnete Bestätigungs-Hash zu dem von der Browsererweiterung 324 empfangenen Bestätigungs-Hash passt. Die unabhängige Berechnung des Bestätigungs-Hashs durch den Sync-Client 320 kann umfassen, dass der Sync-Client 320 einen Hash des Folgenden berechnet: eines von der Browsererweiterung 324 empfangenen Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 606 empfangen werden kann); eines durch den Sync-Client 320 festgesetzten Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 608 festgesetzt werden kann); eines "Bestätigungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto darstellt, das bei dem Sync-Client 320 angemeldet ist, oder irgendeiner geeigneten Kombination davon. Nach der unabhängigen Berechnung des Bestätigungs-Hashs durch den Sync-Client 320 bestimmt der Sync-Client, ob der durch den Sync-Client 320 berechnete Bestätigungs-Hash zu dem von der Browsererweiterung 324 empfangenen Bestätigungs-Hash passt. Falls der unabhängig berechnete Bestätigungs-Hash nicht zu dem empfangenen Bestätigungs-Hash passt, kann dies eine Angabe sein, dass nicht sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 dasselbe Nutzerkonto angemeldet ist. Wenn das der Fall ist, geht das Verfahren 600 zu Schritt 618 über, um zu enden. Bei Beendigung des Verfahrens kann dem Nutzer eine Benachrichtigung dargestellt werden, dass die Authentisierung fehlgeschlagen ist, und können ihm eine oder mehrere Maßnahmen empfohlen werden, um sich richtig zu authentisieren.
-
Falls der Sync-Client 320 im Entscheidungsblock 616 andernfalls bestimmt, dass der von der Browsererweiterung 324 empfangene Bestätigungs-Hash zu dem durch den Sync-Client 320 unabhängig berechneten Bestätigungs-Hash passt, geht das Verfahren 600 zu Schritt 620 über, um die Authentisierung abzuschließen. Dadurch, dass diese Authentisierung ausgeführt wird, verifizieren der Sync-Client 320 und die Browsererweiterung 324 beide unabhängig, dass sie dasselbe Nutzerkonto repräsentieren, wodurch sichergestellt wird, dass nur berechtigte Nutzer auf lokal gespeicherte Dateien zugreifen können. Um die Detektion, ob die Browsererweiterung 324 oder der Sync-Client 320 gefährdet worden sind, zu verbessern, ist es vorteilhaft, dass sowohl die Browsererweiterung 324 als auch der Sync-Client 320 diese Verifizierung unabhängig ausführen. Allerdings kann eine unabhängige Verifizierung sowohl durch die Browsererweiterung 324 als auch durch den Sync-Client 320 zeitaufwändig und unnötig ineffizient sein. Somit kann nur eine dieser Komponenten die Verifizierung ausführen und an die andere Komponente eine Nachricht senden, die angibt, dass die Authentisierung abgeschlossen ist, was die Notwendigkeit, dass die andere Komponente eine getrennte Verifizierung ausführt, beseitigt.
-
7 ist ein Blockschaltplan einer Computervorrichtung wie etwa irgendeiner der Komponenten des Systems aus 1–3 zum Ausführen irgendeines der hier beschriebenen Prozesse. Jede der Komponenten dieser Systeme kann in einer oder in mehreren Computervorrichtungen 700 implementiert sein. In bestimmten Aspekten können innerhalb einer Computervorrichtung 700 mehrere der Komponenten dieser Systeme enthalten sein. In bestimmten Implementierungen können eine Komponente und eine Datenspeichervorrichtung über mehrere Computervorrichtungen 700 implementiert sein.
-
Die Computervorrichtung 700 enthält wenigstens eine Kommunikationsschnittstelleneinheit, einen Eingabe/Ausgabe-Controller 710, einen Systemspeicher und eine oder mehrere Datenspeichervorrichtungen. Der Systemspeicher enthält wenigstens einen Schreib-Lese-Speicher (RAM 702) und wenigstens einen Nur-Lese-Speicher (ROM 704). Alle diese Elemente stehen in Verbindung mit einer Zentraleinheit (CPU 706), um den Betrieb der Computervorrichtung 700 zu ermöglichen. Die Computervorrichtung 700 kann auf viele verschiedene Arten konfiguriert sein. Zum Beispiel kann die Computervorrichtung 700 ein herkömmlicher Einplatzcomputer sein oder können die Funktionen der Computervorrichtung 700 alternativ über mehrere Computersysteme und Computerarchitekturen verteilt sein. Alternativ kann ein Computersystem virtualisiert sein, um die Funktionen mehrerer Computervorrichtungen 700 bereitzustellen. In 7 ist die Computervorrichtung 700 über ein Netz oder über ein lokales Netz mit anderen Servern oder Systemen verknüpft.
-
Die Computervorrichtung 700 kann in einer verteilten Architektur konfiguriert sein, wobei Datenbanken und Prozessoren in getrennten Einheiten oder an getrennten Orten aufgenommen sind. Einige Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens einen allgemeinen Controller oder einen Prozessor und einen Systemspeicher. In Implementierungen einer verteilten Architektur kann jede dieser Einheiten über die Kommunikationsschnittstelleneinheit 708 an einen Kommunikations-Hub oder Kommunikations-Port (nicht gezeigt) angeschlossen sein, der als eine primäre Kommunikationsverbindung mit anderen Servern, mit anderen Client- oder Nutzercomputern und mit anderen verwandten Vorrichtungen dient. Der Kommunikations-Hub oder Kommunikations-Port kann selbst minimale Verarbeitungsfähigkeit aufweisen, wobei er primär als ein Kommunikationsrouter dient. Eine Vielzahl von Kommunikationsprotokollen, einschließlich, aber nicht beschränkt auf: Ethernet, SAP, SASTM, ATP, BLUETOOTHTM, GSM und TCP/IP, können Teil des Systems sein.
-
Die CPU 706 enthält einen Prozessor wie etwa einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere ergänzende Coprozessoren wie etwa Mathematikcoprozessoren zum Verringern der Arbeitsbelastung der CPU 706. Die CPU 706 steht in Verbindung mit der Kommunikationsschnittstelleneinheit 708 und mit dem Eingabe/Ausgabe-Controller 710, über den die CPU 706 mit anderen Vorrichtungen wie etwa anderen Servern, Nutzerendgeräten oder Vorrichtungen kommuniziert. Die Kommunikationsschnittstelleneinheit 708 und der Eingabe/Ausgabe-Controller 710 können mehrere Kommunikationskanäle für die gleichzeitige Kommunikation z. B. mit anderen Prozessoren, Servern oder Clientendgeräten enthalten.
-
Außerdem steht die CPU 706 in Verbindung mit einer Datenspeichervorrichtung. Die Datenspeichervorrichtung kann eine geeignete Kombination aus magnetischem, optischem oder Halbleiterspeicher enthalten und kann z. B. RAM 702, ROM 704, ein Flash-Laufwerk, eine optische Platte wie etwa eine Compact Disc oder eine Festplatte oder ein Festplattenlaufwerk enthalten. Die CPU 706 und die Datenspeichervorrichtung können sich jeweils z. B. vollständig innerhalb eines einzelnen Computers oder einer anderen Computervorrichtung befinden; oder können durch ein Kommunikationsmedium wie etwa einen USB-Anschluss, ein serielles Anschlusskabel, ein Koaxialkabel, ein Ethernet-Kabel, eine Telephonleitung, einen Funkfrequenztransceiver oder ein anderes ähnliches drahtloses oder verdrahtetes Medium oder eine Kombination des Vorstehenden miteinander verbunden sein. Zum Beispiel kann die CPU 706 über die Kommunikationsschnittstelleneinheit 708 mit der Datenspeichervorrichtung verbunden sein. Die CPU 706 kann zum Ausführen einer oder mehrerer bestimmter Verarbeitungsfunktionen konfiguriert sein.
-
Die Datenspeichervorrichtung kann z. B. (i) ein Betriebssystem 712 für die Computervorrichtung 700; (ii) eine oder mehrere Anwendungen 714 (z. B. Computerprogrammcode oder ein Computerprogrammprodukt), die dafür ausgelegt sind, die CPU 706 in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren und insbesondere in Übereinstimmung mit den hinsichtlich der CPU 706 ausführlich beschriebenen Prozessen anzuweisen; oder (iii) eine oder mehrere Datenbanken 716, die dafür ausgelegt sind, Informationen zu speichern, die zum Speichern von Informationen, die von dem Programm benötigt werden, genutzt werden können, speichern.
-
Das Betriebssystem 712 und die Anwendungen 714 können z. B. in einem komprimierten, in einem nicht kompilierten und in einem verschlüsselten Format gespeichert sein und können Computerprogrammcode enthalten. Die Anweisungen des Programms können von einem anderen computerlesbaren Medium als der Datenspeichervorrichtung wie etwa von dem ROM 704 oder von den RAM 702 in den Hauptspeicher des Prozessors gelesen werden. Obwohl die Ausführung von Folgen von Anweisungen in dem Programm veranlasst, dass die CPU 706 die hier beschriebenen Prozessschritte ausführt, kann anstelle oder zusammen mit Softwareanweisungen eine fest verdrahtete Schaltungsanordnung zur Implementierung der Prozesse der vorliegenden Erfindung verwendet werden. Somit sind die beschriebenen Systeme und Verfahren nicht auf irgendeine spezifische Kombination aus Hardware und Software beschränkt.
-
Es kann geeigneter Computerprogrammcode vorgesehen sein, um eine oder mehrere Funktionen in Bezug auf die Ausführung der wie hier beschriebenen Prozesse auszuführen. Außerdem kann das Programm Programmelemente wie etwa ein Betriebssystem 712, ein Datenbankmanagementsystem und "Vorrichtungstreiber" enthalten, die ermöglichen, dass sich der Prozessor über den Eingabe/Ausgabe-Controller 710 mit Computerperipherievorrichtungen (z. B. einer Videoanzeige, einer Tastatur, einer Computermaus usw.) über eine Schnittstelle verbindet.
-
Der Begriff "computerlesbares Medium", wie er hier verwendet ist, bezieht sich auf irgendein nicht temporäres Medium, das für den Prozessor der Computervorrichtung 700 (oder für irgendeinen anderen Prozessor einer hier beschriebenen Vorrichtung) Anweisungen zur Ausführung bereitstellt oder an deren Bereitstellung beteiligt ist. Ein solches Medium kann irgendwelche Formen einschließlich, aber nicht beschränkt auf, nichtflüchtiger Medien und flüchtiger Medien annehmen. Nichtflüchtige Medien enthalten z. B. optische, magnetische oder magnetooptische Platten oder einen Speicher mit integrierter Schaltung wie etwa einen Flash-Speicher. Flüchtige Medien enthalten einen dynamischen Schreib-Lese-Speicher (DRAM), der üblicherweise den Hauptspeicher bildet. Übliche Formen computerlesbarer Medien enthalten z. B. eine Diskette, eine flexible Platte, eine Festplatte, ein Magnetband, irgendein anderes magnetisches Medium, eine CD-ROM, eine DVD, irgendein anderes optisches Medium, Lochkarten, ein Papierband, irgendein anderes physikalisches Medium mit Lochmustern, einen RAM, einen PROM, einen EPROM oder EEPROM (elektronisch löschbaren programmierbaren Nur-Lese-Speicher), einen FLASH-EEPROM, irgendeinen anderen Speicherchip oder irgendeine andere Speicherkassette oder irgendein anderes nicht temporäres Medium, von dem ein Computer lesen kann.
-
An der Ausführung einer oder mehrerer Folgen einer oder mehrerer Anweisungen zur Ausführung für die CPU 706 (oder für irgendeinen anderen Prozessor einer hier beschriebenen Vorrichtung) können verschiedene Formen computerlesbarer Medien beteiligt sein. Zum Beispiel können die Anweisungen anfangs auf einer Magnetplatte eines fernen Computers (nicht gezeigt) getragen sein. Der ferne Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Ethernet-Verbindung, über eine Kabelleitung oder sogar über eine Telephonleitung unter Verwendung eines Modems senden. Eine gegenüber einer Computervorrichtung 700 lokale Kommunikationsvorrichtung (z. B. ein Server) kann die Daten auf der jeweiligen Kommunikationsleitung empfangen und die Daten auf einem Systembus für den Prozessor anordnen. Der Systembus übermittelt die Daten an den Hauptspeicher, aus dem der Prozessor die Anweisungen ausliest und ausführt. Die durch den Hauptspeicher empfangenen Anweisungen können optional entweder vor oder nach der Ausführung durch den Prozessor im Speicher gespeichert werden. Außerdem können die Anweisungen über einen Kommunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden, die beispielhafte Formen drahtloser Kommunikationen oder Datenströme, die verschiedene Typen von Informationen übermitteln, sind.