-
Gebiet der Erfindung
-
Allgemein betrifft diese Offenbarung die Dateiverwaltung in einer externen Zugriffsumgebung, insbesondere Systeme und Computerprogramprodukte zum Bereitstellen von Zugriff auf eine in einem externen Dateispeichersystem gespeicherte Datei.
-
Hintergrund
-
Ein Benutzer muss gelegentlich auf eine Vielzahl von Dateien zugreifen und bearbeiten. Der Benutzer kann beispielsweise eine Textverarbeitungsdatei, eine Tabellenkalkulationsdatei, eine Datenspeicherdatei, eine Programmtextdatei, Präsentationsfolien, eine E-Mail-Nachrichtendatei, eine Bilddatei, eine Videodatei oder eine andere Art von Datei zu öffnen oder zu bearbeiten haben. Jede dieser Dateien kann eine jeweilige spezielle Softwareanwendung erfordern, um die jeweilige Datei zu öffnen oder zu bearbeiten. Deshalb muss der Benutzer üblicherweise die erforderliche spezielle Software auf einem lokalen Computer installieren, um die verschiedenen Dateitypen zu öffnen. Wenn eine spezifische Software auf dem Gerät des Benutzers nicht verfügbar ist, ist der Benutzer dann nicht in der Lage, auf einen bestimmten Dateityp zuzugreifen und damit zu arbeiten.
-
Wenn der Benutzer versucht, eine auf einem externen Server gespeicherte Datei zu öffnen und zu bearbeiten, ist es häufig durch bestehende Dokumentensysteme erforderlich, dass der Benutzer die Datei von dem externen Server auf den lokalen Computer des Benutzers herunterlädt, so dass der Benutzer die Datei mittels einer spezifischen lokal installierten Softwareanwendung öffnen kann. Das Herunterladen der extern gespeicherten Datei und das Erfordernis, eine Vielfalt von Softwareanwendungen lokal zu installieren, um mit verschiedenen Dateitypen zu arbeiten, kann ressourcenineffizient sein. Darüber hinaus, wenn der Benutzer ein mobiles Gerät wie etwa ein Smartphone betreibt, dem entweder die Kapazität, eine Computeranwendung zu installieren, oder der Speicherplatz, um eine Datei herunterzuladen, fehlt, wird jener Zugriff auf die Datei undurchführbar.
-
Kurzdarstellung
-
Systeme und Computerprogrammprodukte, die hier offenbart sind, stellen einen Mechanismus bereit, um Zugang zu einer in einem externen Datenspeichersystem gespeicherten Datei bereitzustellen. Ein Anwendungsserver, der eine Vielzahl von Anwendungen hostet, wird verwendet, um einem Benutzergerät zu gestatten, eine Datei zu öffnen, die in einem externen Datenspeichersystem gespeichert ist, ohne dass das Benutzergerät eine Kopie der Datei herunterzuladen oder eine diesbezügliche Anwendung lokal zu installieren hat. Das Benutzergerät sendet eine Dateizugriffsanforderung an den Anwendungsserver über eine Benutzerschnittstelle, die durch den externen Speicherserver bereitgestellt ist, um auf eine in dem externen Speicherserver gespeicherte Datei Zugriff zu erhalten. Der Anwendungsserver kann dann gegebenenfalls eine entsprechende Anwendung zum Zugreifen auf die Datei identifizieren und eine Metadaten-und-Inhalts-Anforderung betreffend die Datei an den externen Server senden. Die Metadaten-und-Inhalts-Anforderung beinhaltet Versionsinformationen einer vorher im Cache gespeicherten Version der Datei, die im Cache auf dem Anwendungsserver gespeichert ist. Beim Empfangen der Metadaten-und-Inhalts-Anforderung verifiziert der externe Speicherserver, ob die im Cache gespeicherte Version der Datei die aktuellste Version darstellt aufgrund der von der Metadaten-und-Inhalts-Anforderung empfangenen Versionsinformationen. Wenn die im Cache gespeicherte Version nicht die aktuellste Version ist, empfängt der Anwendungsserver die aktuellste Version der Datei vom externen Speicherserver, welche zum Ersetzen der zuvor im Cache gespeicherten Version verwendet wird. Die aktuellste Version der Datei wird dann über die entsprechende Anwendung auf dem Anwendungsserver dem Benutzergerät zur Verfügung gestellt. Auf diese Weise kann ein Benutzer die aktuellste Version einer in dem externen Speicherserver gespeicherten Datei öffnen, kommentieren oder bearbeiten, ohne die Datei auf das Benutzergerät herunterzuladen oder lokal eine entsprechende Anwendung auf dem Benutzergerät zu installieren.
-
Figurenliste
-
Die vorgenannten und andere Merkmale der vorliegenden Offenbarung einschließlich ihrer Beschaffenheit und verschiedenen Vorteile werden verständlicher, wenn man die folgende ausführliche Beschreibung unter Hinzuziehung der zugehörigen Zeichnungen berücksichtigt, in denen:
- 1 gemäß einer beispielhaften Ausführungsform ein beispielhaftes Datenflussdiagramm bereitstellt, das die Datennachrichtenübertragung zum Bereitstellen von Zugriff auf eine in einem externen Datenspeichersystem gespeicherte Datei zwischen einem Benutzergerät, einem Anwendungsserver und einem externen Speicherserver darstellt;
- 2 gemäß einer beispielhaften Ausführungsform ein beispielhaftes Logikflussdiagramm ist, das Aspekte von Arbeitsabläufen an einem Anwendungsserver zum Bereitstellen von Zugriff auf eine auf einem externen Speicherserver gespeicherte Datei darstellt;
- 3 gemäß einer beispielhaften Ausführungsform ein beispielhaftes Flussdiagramm bereitstellt, das Aspekte des Erstellens einer neuen Datei in dem externen Speicherserver von einem Benutzergerät über eine Anwendungsprogrammschnittstelle (application program interface - API) darstellt;
- 4 gemäß einer beispielhaften Ausführungsform ein beispielhaftes Flussdiagramm bereitstellt, das Aspekte des Öffnens einer Datei in dem externen Speicherserver zum Ansehen, Kommentieren oder Bearbeiten von einem Benutzergerät über die API darstellt; und
- 5 gemäß einer beispielhaften Ausführungsform ein Blockdiagramm eines Computers ist wie etwa jede Komponente des in 1 implementierten Systems zum Bereitstellen jedes hier beschriebenen Prozesses.
-
Ausführliche Beschreibung
-
Um ein allgemeines Verständnis der hier beschriebenen Systeme und Verfahren bereitzustellen, werden nun bestimmte Ausführungsformen beschrieben, einschließlich eines Systems und Verfahrens zum Bereitstellen von Zugriff auf eine in einem externen Datenspeichersystem gespeicherte Datei. Allerdings ist es für Fachleute auf dem Gebiet selbstverständlich, dass die hier beschriebenen Systeme und Verfahren für die jeweiligen Anwendungen entsprechend abgeändert und angepasst werden können, und dass die hier beschriebenen Systeme und Verfahren außerdem in anderen geeigneten Anwendungen eingesetzt werden können, und dass diese Zusätze und Änderungen dabei nicht vom Umfang der Erfindung abweichen. Im Allgemeinen können die hier beschriebenen computerisierten Systeme eine oder mehrere Treiber umfassen, die einen Prozessor oder Rechner, wie einen Computer, einen Mikroprozessor, ein Logikgerät oder ein anderes Gerät oder einen Prozessor umfassen, der mit Hardware, Firmware und Software bestückt ist, um eine oder mehrere der hier beschriebenen computerisierten Methoden durchzuführen.
-
In einer Ausführungsform wird hier ein Mechanismus zum Bereitstellen von Zugriff auf eine in einem externen Datenspeichersystem gespeicherte Datei erörtert. Ein Protokoll wird einem externen Anwendungsserver bereitgestellt, um mit einem externen Speicherserver zu kommunizieren, sodass der externe Anwendungsserver eine Anwendung starten kann, um auf eine ursprünglich in dem externen Speicherserver gespeicherte Datei zuzugreifen und an ihr Vorgänge durchzuführen. Konkret sendet der externe Anwendungsserver eine Anfangsanforderung an den externen Speicherserver über eine Anwendungsprogrammschnittstelle (Application Programming Interface - API) von Metadaten und Inhalt, die mit einer Datei verbunden sind, auf die ein Benutzer zuzugreifen versucht. Der externe Speicherserver kann wiederum verifizieren, ob der externe Anwendungsserver die aktuellste Version der angeforderten Datei aufweist, und sendet die aktuellste Version der angeforderten Datei an den Anwendungsserver, falls der Anwendungsserver nicht die aktuellste Version aufweist. Auf diese Weise kann der externe Anwendungsserver die aktuellste Version einer Datei öffnen, ohne dass der Benutzer entweder die Datei auf ein lokales Gerät herunterladen muss oder eine spezifische Anwendung lokal installieren muss, um auf die Datei zuzugreifen und sie zu bearbeiten.
-
Ein Benutzer kann beispielsweise versuchen, eine auf einem externen Speicherserver gespeicherte Datei über eine externe Speicherbenutzerschnittstelle zu öffnen, z. B. eine browserbasierte Schnittstelle. Eine Zugriffsanforderung wird dann über die browserbasierte Schnittstelle an einen externen Anwendungsserver gesendet, um eine entsprechende Anwendung zu starten, um die angeforderte Datei zu öffnen. Der externe Anwendungsserver sendet eine Anforderung von Metadaten und Inhalt, die mit der Datei verbunden sind, an den externen Speicherserver. Die Metadaten-und-Inhalts-Anforderung kann eine einzige Anforderung sein, die Anforderungen sowohl von aktualisierten Metadaten und aktualisiertem Inhalt einer Datei beinhaltet. Die Metadaten-und-Inhalts-Anforderung beinhaltet mindestens eine Inhaltsversion der Datei, die momentan im Cache auf dem externen Anwendungsserver gespeichert ist. Bei Empfang der Metadaten-und-Inhalts-Anforderung bestimmt der externe Speicherserver, ob die Inhaltsversion die aktuellste Version der Datei ist, und sendet wiederum die aktuellste Version der Datei an den externen Anwendungsserver. Auf diese Weise kann der externe Anwendungsserver die aktuellste Version der angeforderten Datei für den Benutzer öffnen.
-
Gemäß einer beispielhaften Ausführungsform stellt 1 ein beispielhaftes Diagramm 100 bereit, das Datenflüsse zwischen einem Benutzergerät 101a-c (hier gemeinsam als 101 bezeichnet), einem Anwendungsserver 120 und einem externen Speicherserver 110 zum Bereitstellen von Zugriff auf eine in einem externen Datenspeichersystem gespeicherte Datei darstellt. Die eine oder mehreren Einheiten einschließlich, unter anderem, des Benutzergeräts 101, des Anwendungsservers 120, des externen Speicherservers 110 kommunizieren über ein oder mehrere Kommunikationsnetzwerke.
-
Das Benutzergerät 101 beinhaltet verschiedene persönliche Geräte wie etwa, unter anderem, ein Smartphone, einen Laptop-Computer, einen Desktop-Computer, eine Workstation, einen Tablet-Computer, ein Personal Digital Assistant (PDA) oder dergleichen. Ein Benutzer kann das Benutzergerät 101 bedienen, um mit dem externen Speicherserver 110 und/oder dem Anwendungsserver 120 zu kommunizieren.
-
Der externe Speicherserver 110 kann von einem externen Provider gehostet werden, der von dem Anwendungsserver 120 oder dem Benutzergerät 101 unabhängig ist. Der externe Speicherserver 110 kann beispielsweise physisch getrennt, in einer anderen Domain gehostet, Eigentum einer anderen Einheit oder dergleichen von jeglichem des Benutzergeräts 101 oder des Anwendungsservers 120 sein. Oder, alternativ dazu, kann der externe Speicherserver 110 dieselbe öffentliche oder private Cloud mit dem Anwendungsserver 120 teilen. Der externe Speicherserver 110 kann dem Benutzergerät 101 eine Dateispeicherbenutzerschnittstelle 105 bereitstellen, sodass ein Benutzer mit in dem externen Speicherserver 110 gespeicherten Dateien über die Benutzerschnittstelle 105 interagieren kann. Die Benutzerschnittstelle 105 kann eine mobile Anwendung (z. B. auf einem Smartphone oder Tablet-Computer usw.) oder eine browserbasierte Anwendung (z. B. auf einem Computer usw.) oder dergleichen beinhalten. Eine browserbasierte Anwendung wird in diesem gesamten Dokument als ein Beispiel für eine Benutzerschnittstelle 105 verwendet.
-
Innerhalb der Dateispeicherbenutzerschnittstelle 105 kann der Benutzer konfigurieren oder vorab konfigurieren, wie eine Datei zu öffnen ist. Ein Benutzer kann beispielsweise eine oder mehrere Dateien vorab konfigurieren, von Anwendungen aus dem Anwendungsserver 120 öffenbar zu sein, bevor der Benutzer versucht, eine jegliche Datei zu öffnen, oder der Benutzer kann auf ein Datei-Icon rechtsklicken und „Öffnen mit“ wählen, um eine Anwendung aus dem Anwendungsserver 120 als die Anwendung zu konfigurieren, die die Datei öffnet. Wenn der Benutzer eine Datei auswählt, um auf sie über die Dateispeicherbenutzerschnittstelle 105 zuzugreifen, falls der Benutzer eine Anwendung aus dem Anwendungsserver 120 als Standardanwendung vorab konfiguriert hat oder eine Anwendung aus dem Anwendungsserver 120 ausgewählt hat, um die Datei auf die Schnelle zu öffnen, sendet das Benutzergerät 101 eine Dateizugriffsanforderung 108 an den Anwendungsserver 120. Die Dateizugriffsanforderung beinhaltet Informationen wie etwa, unter anderem, einen Dateiidentifikator, einen Speicherserveridentifikator, einen Dateityp, einen Benutzergerätidentifikator und/oder dergleichen. In einigen Umsetzungen können der Dokumentidentifikator, der Speicherserveridentifikator und gegebenenfalls Protokollpuffer kombiniert und in eine Zeichenkette kodiert werden, und die Zeichenkette ist als ein Schlüssel in der Dateizugriffsanforderung zur Übertragung enthalten.
-
In einigen Implementierungen ist der Anwendungsserver 120 ein einzelner Server, der verschiedene Anwendungen hostet. In einigen Implementierungen beinhaltet der Anwendungsserver 120 mehrere Server für verteilte Anwendungen. Beispielsweise hostet jeder Server für verteilte Anwendungen einen Anwendungstyp wie etwa Dokumentenverarbeitungsanwendungen, Softwareentwicklungsanwendungen, Datenbankverwaltungsanwendungen und/oder dergleichen.
-
In einigen Umsetzungen, wie ferner in Verbindung mit 3-4 erörtert, erfolgt die Dateizugriffsanforderung 108 in Form einer Hypertext Transfer Protocol (HTTP) POST-Anforderung, die angenommen werden kann, wenn die Dateizugriffsanforderung 108 aus einer Browserschnittstelle oder einer mobilen Anwendung des Speicherservers generiert wird. Konkret wird die HTTP POST-Anforderung innerhalb eines strukturellen Tags des Hyper Text Markup Language (HTML)-Quelltexts der Browserseite, z. B. dem <iframe>-Tag usw. generiert, wenn der Speicherserver eine browserbasierte Anwendung am Benutzergerät einsetzt. Das strukturelle Tag definiert einen Bereich auf der Browserseite, innerhalb dessen die angeforderte Datei oder das Dokument angezeigt werden kann.
-
Eine Dateianwendungsprogrammschnittstelle (file application programming interface - API) 130 wird implementiert, sodass der Anwendungsserver 120 Metadaten und Inhalt der Datei aus dem externen Speicherserver 110 erhalten kann. Der Anwendungsserver 120 sendet eine Anforderung von Datei-Metadaten und -Inhalt 112 über die API 130 an den externen Speicherserver 110 über die aktuellste Version der Metadaten und die aktuellste Version des Inhalts, die mit der angeforderten Datei verbunden sind. Beispielhafte Metadateneigenschaften, die mit der Datei verbunden sind, beinhalten unter anderem Folgendes: Dateityp, Dateiidentifzierung, Dateiname, Multipurpose Internet Mail Extensions (MIME)-Type, ob die Datei durch das Dateisystem ein Sternchen oder eine Kennzeichnung erhalten hat, übergeordnete Datei oder Ordner, Anwendungseigenschaften, Dateiversion, Erstellungszeit, Änderungszeit, zuletzt geändert von, Benutzeridentifikator (ID) und E-Mail-Adresse des Besitzers, des Anforderers und des Erstellers, vollständige Dateiendung, Dateiprüfsumme (verwendet für Vergleichszwecke, der Speicherserver kann das Kodierungsverfahren (z. B. MD5, SHA1, SHA2 usw.)) wählen, Dateigröße, Zugriffs-/Bearbeitungsprivileg, Status bezüglich dessen, ob die Datei eine Bearbeitungssperre aufweist, oder dergleichen. Die Metadaten-und-Inhalts-Anforderung 112 kann ferner einen Prüfschlüssel beinhalten, welcher ein öffentlicher Schlüssel ist, der vom Anwendungsserver 120 ausgestellt wurde, sodass der externe Speicherserver 110, dem vorher die öffentliche Schlüsselinformationen vom Anwendungsserver 120 bereitgestellt wurden, verifizieren kann, ob die Schlüsselinformationen von der Metadaten-und-Inhalts-Anforderung 112 damit übereinstimmen. Auf diese Weise bestätigt die Schlüssel-Verifizierung, dass die Metadaten-und-Inhalts-Anforderung 112 vom Anwendungsserver 120 gesendet wurde. Der externe Speicherserver 110 sendet dann wiederum die angeforderten Metadaten und den Inhalt an den Anwendungsserver 120. Wenn der Anwendungsserver 120 nicht die aktuellste Version der Datei in seinem lokalen Cache aufweist, sendet der externe Speicherserver 110 die aktuellste Version des Inhalts der Datei 113 an den Anwendungsserver 120, wie ferner in Verbindung mit 207 in 2 erörtert wird.
-
In einigen Anwendungen kann der Benutzer Änderungen an einer Datei über eine Anwendung auf dem Anwendungsserver 120 vornehmen, und diese Änderungen werden über eine API 130 an den externen Speicherserver 110 übertragen, um die auf dem externen Speicherserver 110 gespeicherte Datei zu aktualisieren. Die Komponente der API 130, die auf dem Anwendungsserver 120 instanziiert ist, um mit dem externen Speicherserver 110 eine Schnittstelle zu bilden, kann in JavaScript mittels Post-Nachrichten implementiert werden. Der externe Speicherserver 110 kann beispielsweise eine „titelgeänderte“ Nachricht senden, um den Anwendungsserver 120 zu benachrichtigen, dass der Titel einer Datei geändert wurde (z. B. durch das Benutzergerät) sodass der externe Speicherserver 110 die den Titel der Datei betreffende Information entsprechend aktualisieren kann, z. B. die Titelleiste in der Browserschnittstelle des externen Speicherservers 110 auf dem Benutzergerät angezeigt wird. Als anderes Beispiel wird eine „sharing opened“-Nachricht (gemeinsame Nutzung einer geöffneten Datei) von dem Anwendungsserver 120 gesendet, um den externen Speicherserver 110 zu benachrichtigen, dass der Benutzer auf die „Gemeinsame Nutzung“-Taste geklickt hat, sodass der externe Speicherserver 110 einen Rahmen für die gemeinsame Nutzung öffnen kann, sodass von dem Benutzer und einem oder mehreren anderen Benutzern gemeinsam auf die Datei zugegriffen werden kann. Als weiteres Beispiel kann eine Zugriffssteuerungsnachricht betreffend eine Datei, z. B. eine „Zugriffskontrollliste geöffnet“-Nachricht an den externen Speicherserver 110 gesendet werden, um den externen Speicherserver 110 zu benachrichtigen, dass der Benutzer versucht hat, die Zugriffsrechte für die Datei zu ändern, z. B. ist einem anderen Benutzer, der keinen Zugriff auf die Datei hat, die Berechtigung erteilt worden, auf die Datei zuzugreifen, sodass der externe Speicherserver 110 einen Zugriffssteuerungsrahmen, z. B. den „Zugriffskontrolllisten-Konfigurierungs“-Rahmen, in der Dateispeicherungsbenutzerschnittstelle 105 des Benutzergeräts anzeigen kann.
-
In einigen Umsetzungen kann der Benutzer Änderungen an einer Datei direkt im externen Speicherserver 110 vornehmen. In diesem Fall sendet der externe Speicherserver 110 über die API 130 Nachrichten an den Anwendungsserver 120, um die Änderungen zu synchronisieren. Der externe Speicherserver 110 kann beispielsweise eine „Metadatengeändert“-Nachricht über die API 130 senden, um den Anwendungsserver 120 zu benachrichtigen, dass der Benutzer Metadaten der Datei (z. B. den Status der gemeinsamen Nutzung der Datei usw.) geändert hat, sodass der Anwendungsserver 120 die Metadaten aktualisiert. Als anderes Beispiel wird, wenn ein Benutzer einen Zugriffssteuerungsrahmen in dem externen Speicherserver 110 schließt, eine Zugriffssteuerungsnachricht, z. B. eine „Zugriffssteuerungslistenkonfigurierung-geschlossen“-Nachricht von dem externen Speicherserver 110 gesendet, um den Anwendungsserver 120 zu benachrichtigen, dass der Benutzer die Funktion der Zugriffssteuerung bezüglich der Datei geschlossen hat, z. B. einen „Zugriffssteuerungslisten-Konfigurierungs“-Dialog, und ob der Benutzer sich entschieden hat, mit der Aktion fortzufahren oder nicht.
-
In einigen Umsetzungen konfigurieren jeweils der Anwendungsserver 120 und der externe Speicherserver 110 die API 130 durch gemeinsame Nutzung von Informationen. Der externe Speicherserver 110 beispielsweise stellt dem Anwendungsserver 120 über einen einheitlichen Ressourcenanzeiger (uniform resource locator - URL) Konfigurierungsinformationen bereit, sodass der Anwendungsserver 120 Kenntnis von möglichen Daten- oder Nachrichtentypen hat, die von dem externen Server 110 empfangen werden können (z. B. Metadaten der Datei usw.).
-
2 ist gemäß hier beschriebener Ausführungsformen ein beispielhaftes Logikflussdiagramm, das Aspekte von Arbeitsabläufen an einem Anwendungsserver (z. B. 120 in 1) zum Bereitstellen von Zugriff auf eine auf einem externen Speicherserver (z. B. siehe 110 in 1) gespeicherte Datei darstellt. Bei 201 empfängt der Anwendungsserver (z. B. 120 in 1) eine Dateizugriffsanforderung von einem Benutzergerät (z. B. 101 in 1) zum Zugreifen (z. B. öffnen, kommentieren oder bearbeiten) auf eine auf einem externen Speicherserver (z. B. siehe 110 in 1) gespeicherte Datei. Wie in Verbindung mit 108 in 1 erörtert, beinhaltet die Dateizugriffsanforderung einen Dateiidentifikator, einen Speicherserveridentifikator, einen Dateityp, einen Benutzergerätidentifikator und/oder dergleichen. Die Dateizugriffsanforderung kann in Form einer HTTP POST-Anforderung innerhalb eines strukturellen Tags des HTML-Quelltexts der Browserseite erfolgen. Bei 202 kann der Anwendungsserver gegebenenfalls eine entsprechende Anwendung identifizieren und starten, um die entsprechende Datei zu öffnen, z. B. aufgrund eines in der Dateizugriffsanforderung enthaltenen Dateityps. Wenn die Dateizugriffsanforderung ferner einen Anwendungsidentifikator zum Öffnen der Datei beinhaltet, z. B. wenn der Benutzer auf ein Datei-Icon rechtsgeklickt hat, um eine Anwendung zum Öffnen der Datei auszuwählen, und der Anwendungsidentifikator der ausgewählten Anwendung in der Dateizugriffsanforderung enthalten ist, kann der Anwendungsserver die Anwendung unmittelbar starten. Bei 203 kann der Anwendungsserver in einem Datenspeicher (z. B. Datenbank) nach im Cache gespeicherten Dateien suchen, und abfragen, ob eine im Cache gespeicherte Version der Datei zuvor in der Datenbank gespeichert wurde. Bei 204, falls eine im Cache gespeicherte Version der Datei existiert, ruft der Anwendungsserver einen Versionswert (z. B. eine Zahl) aus den Metadaten der im Cache gespeicherten Version der Datei ab und fügt den Versionswert in eine Anforderung von Metadaten und Inhalt ein, um sie an den externen Speicherserver zu senden. Der Versionswert wird nachstehend näher in Verbindung mit 4 beschrieben. Falls keine im Cache gespeicherte Version existiert, beinhaltet die Metadaten-und-Inhalts-Anforderung einen Indikator, der identifiziert, dass auf dem Anwendungsserver keine im Cache gespeicherte Version existiert. In einer Implementierung kann der Anwendungsserver gegebenenfalls einen Zustellungsparameter in der Metadaten-und-Inhalts-Anforderung beinhalten. Der Zustellungsparameter kann ein Boolescher Wert sein, der als wahr oder falsch konfiguriert ist, der verwendet wird um anzuzeigen, ob der externe Speicherserver dem Anwendungsserver den Inhalt der aktuellsten Version der Datei bereitstellen soll oder nicht, falls die im Cache gespeicherte Version der Datei im Anwendungsserver nicht die aktuellste Version ist. Beispielsweise kann der Anwendungsserver periodisch die Metadaten einer im Cache gespeicherten Version der Datei aktualisieren durch Anfordern der aktuellsten Metadaten der Datei von dem externen Server, muss aber nicht jedes Mal, wenn die Metadaten aktualisiert werden, den aktuellsten Inhalt der Datei anfordern, um übermäßigen Datenverkehr zwischen den Servern zu verhindern. In diesem Fall kann der Anwendungsserver die Zustellparameter in der Metadaten-und-Inhalts-Anforderung einstellen, um anzuzeigen, dass vom externen Speicherserver nicht der aktuellste Inhalt der Datei benötigt wird.
-
Bei 204 ruft der Anwendungsserver zusätzlich zum Erhalten eines Versionswerts der im Cache gespeicherten Version der Datei gegebenenfalls einen Hash in den Metadaten ab, der mit der im Cache gespeicherten Version der Datei verbunden ist, oder generiert einen Hash aufgrund des Inhalts der im Cache gespeicherten Version. Der Hash wird dann gegebenenfalls zusammen mit dem Versionswert der im Cache gespeicherten Version in die an den externen Speicherserver über eine API zu sendende Metadaten-und-Inhalts-Anforderung eingefügt.
-
Bei 205 empfängt der Anwendungsserver eine Nachricht vom Speicherserver, die verifiziert, ob die im Cache gespeicherte Version auf dem Anwendungsserver die aktuellste Version der Datei ist. Der Speicherserver bestimmt, ob der in der Metadaten-und-Inhalts-Anforderung enthaltene Versionswert die aktuellste Version der Datei auf dem Speicherserver widerspiegelt. Der Speicherserver unterhält beispielsweise einen Datenspeicher (z. B. eine Datenbank) von Dateien mit Metadaten, die Versionsinformationen für jede Datei beinhalten, und kann eine Suche der benötigten Datei durchführen aufgrund eines Dateiidentifikators, der in der Metadaten-und-Inhalts-Anforderung enthalten ist, um die Datei zu identifizieren, und wiederum die mit der Datei verbundenen Metadaten abzurufen. Zusätzlich, falls ein Hash der im Cache gespeicherten Version gegebenenfalls in der Metadaten-und-Inhalts-Anforderung (bei 204) aufgenommen wurde, kann der Speicherserver sowohl den Versionswert und den Hash der im Cache gespeicherten Version erhalten und sowohl den empfangenen Versionswert und den empfangenen Hash mit dem Versionswert und dem Hash vergleichen, die mit der aktuellsten Version der Datei im Speicherserver verbunden sind. Wenn der Vergleich zeigt, dass die aktuellste Version der Datei einen anderen Versionswert als die im Cache gespeicherte Version aufweist, aber denselben Hash, muss der Speicherserver keinen Inhalt der Datei an den Anwendungsserver senden, da der Inhalt der Datei sich nicht zu dem der im Cache gespeicherten Version geändert hat.
-
Wenn die im Cache gespeicherte Version die aktuellste Version der Datei ist, kann der Anwendungsserver bei 206 gegebenenfalls eine Bestätigungsnachricht von dem Speicherserver empfangen, dass keine aktualisierte Version benötigt wird. Die Bestätigungsnachricht kann auch Metadaten der Datei beinhalten, sodass der Anwendungsserver die Metadaten aktualisiert halten kann. Bei 210 kann der Anwendungsserver die im Cache gespeicherte Version der Datei dem Benutzergerät über die Benutzerschnittstelle (z. B. Dateispeicher UI 105 in 1) bereitstellen. Anderenfalls, wenn die im Cache gespeicherte Version in der Metadaten-und-Inhalts-Anforderung nicht die aktuellste Version der Datei ist oder überhaupt keine im Cache gespeicherte Version der Datei auf dem Anwendungsserver existiert, empfängt der Anwendungsserver Metadaten und Inhalt einer aktuellsten Version der Datei aus dem Speicherserver bei 207. Konkret, wenn die Metadaten-und-Inhalts-Anforderung einen Hash beinhaltet, der basierend auf Inhalt der im Cache gespeicherten Version generiert wurde, kann der Speicherserver gegebenenfalls verifizieren, ob der empfangene Hash derselbe ist wie ein mit der aktuellsten Version verbundener Hash. Wenn die zwei Hashes passen, dann braucht der Speicherserver keinen Inhalt der aktuellsten Version an den Anwendungsserver zu senden. Der Anwendungsserver empfängt die Metadaten der aktuellsten Version und eine optionale Nachricht, welche die im Cache gespeicherte Version als den aktuellsten Inhalt aufweisend identifiziert. Wenn die zwei Hashes nicht passen, empfängt der Anwendungsserver den aktuellsten Inhalt und Metadaten, z.B wie bei 207, beschrieben. In einer Implementierung liest der Speicherserver die Zustellungsparameter in der Metadaten-und-Inhalts-Anforderung um zu bestimmen, ob der Inhalt der aktuellsten Version der Datei an den Anwendungsserver zu senden ist oder nicht, falls die im Cache gespeicherte Version der Datei auf dem Anwendungsserver nicht die aktuellste Version ist.
-
Bei 207 können die Metadaten und der Inhalt der Datei an den Anwendungsserver in einer einzigen Nachricht oder in einer mehrteiligen Nachricht gesendet werden. Der Inhalt der Datei kann beispielsweise vom Speicherserver als eine Kopie der Datei gesendet werden, und Metadaten der Datei können über eine URL, die in eine Nachricht eingebettet ist, gesendet werden. In einem anderen Beispiel kann der Anwendungsserver eine Nachricht empfangen, die einen vordefinierten Link auf die aktuellste Version der auf dem Speicherserver gespeicherten Datei beinhaltet.
-
Bei 209 überschreibt der Anwendungsserver jegliche zuvor im Cache gespeicherte Version der Datei auf dem Anwendungsserver mit der empfangenen Version. Der Anwendungsserver kann dann die neu im Cache gespeicherte Version an das Benutzergerät über die Benutzerschnittstelle bereitstellen, z. B. in einer ähnlichen Weise wie bei 206 beschrieben.
-
3 stellt gemäß einiger hier beschriebenen Ausführungsformen ein beispielhaftes Flussdiagramm 300 dar, das Aspekte des Erstellens einer neuen Datei in dem externen Speicherserver von einem Benutzergerät über die API (z. B. 130 in 1) darstellt. Der Anwendungsserver 303 (ähnlich 120 in 1) kann HTTP Aktionsanforderungen versenden, wie etwa Öffnen einer bestehenden Datei, Erstellen einer neuen Datei, Speichern von Änderungen in einer Datei oder dergleichen, sodass der externe Speicherserver (ähnlich 110 in 1) die entsprechenden Vorgänge auf einer Datei in der Benutzerschnittstelle auf einem Benutzergerät durchführen kann. Bei 305 kann eine Benutzerschnittstelle, die auf einem Benutzergerät (z. B. 101 in 1) wie etwa ein Browser 301 instanziiert wurde, eine Benutzeranforderung senden, um eine Datei auf einem externen Speicherserver 302 zu erstellen. Die Dateierstellungsanforderung beinhaltet einen Dateityp, einen Dateinamen, einen Anwendungsidentifikator (zum Erstellen der Datei), einen Ordnernamen und Verzeichnis im Speicherserver, der bzw. die anzeigen, wo die erstellte Datei zu speichern ist, oder dergleichen. Die Dateierstellungsanforderung kann eine HTTP POST-Anforderung beinhalten, die eine Form annehmen kann, die der „create (POST files/create)“ ähnlich ist, um eine neue Datei in dem in der Dateierstellungsanforderung angezeigten Ordner zu erstellen.
-
Bei 306 kann der externe Speicherserver 302 gegebenenfalls einen Dateiidentifikator erstellen und potenziell einen Sperrstatus für die Datei bei der Erstellung der neuen Datei einstellen. Der Sperrstatus gibt einer Einheit (z. B. dem Anwendungsserver 303) die ausschließliche Erlaubnis, eine Datei zu erstellen, auf eine Datei zuzugreifen oder Dateiinhalt auf dem Speicherserver 302 für einen Zeitraum von z. B. 5 Minuten, 10 Minuten, 15 Minuten usw. zu speichern. Der Speicherserver 302 blockiert jeden versuchten Vorgang von allen anderen berechtigten Einheiten zum Erstellen, Öffnen oder Speichern von Änderungen an derselben gesperrten Datei. Die anderen berechtigten Einheiten beinhalten unter anderem Folgendes: einen Benutzer, der berechtigt ist, die Datei zu bearbeiten, eine Anwendung, die berechtigt ist, die Datei zu bearbeiten, jede externe Benutzerschnittstelle des Speicherservers, der berechtigt ist, die Datei zu bearbeiten usw.
-
Bei 306 sendet der Speicherserver 302 auch ein Fernzugriffstoken (auch als „Drittparteizugriffstoken“ bezeichnet, third party access token - TPAT) an den Browser 301. Das TPAT wird von dem externen Speicherserver mit einem Ablaufzeitstempel erstellt, der einer Einheit (z. B. einem Benutzer usw.) Zugriff auf eine bestimmte Datei gewährt, z. B. auf die vor dem Ablaufzeitstempel zu erstellende Datei. Das TPAT kann dem Benutzer ebenfalls Zugriff auf eine spezifische Datei und auf Ordnermetadaten gewähren.
-
Bei 307 wird eine Dateierstellungsanforderung in Form einer HTTP POST-Anforderung an den Anwendungsserver 303 gesendet. Die Dateierstellungsanforderung wird innerhalb eines strukturellen Tags des HTML-Quelltexts (z. B. dem <iframe>-Tag) einer Anzeigeseite des Browsers 302 generiert und beinhaltet das TPAT, das der Browser 301 bei 306 empfängt. Wenn der Browser 301 vorherige Anforderungen von dem Anwendungsserver 303 empfängt, die ein Token beinhalten, um dem Browser 301 Zugriff auf eine bestimmte Anwendung zu gestatten, die zum Erstellen der Datei zu verwenden ist, kann der Browser 301 gegebenenfalls das Token gegen das TPAT austauschen.
-
In einigen Umsetzungen kann ein Benutzer sich mit Benutzeranmeldeinformationen in den Anwendungsserver 303 einloggen, und der Browser 301 kann diese Benutzeranmeldeinformationen in die HTTP POST-Anforderung bei 307 an den Anwendungsserver 303 zum Authentifizieren des Benutzers einfügen. Der Benutzer kann sich auch über den Browser 301 in den Speicherserver 302 einloggen, sodass der Speicherserver 302 bestimmen kann, ob der Benutzer berechtigt ist, eine Datei zu erstellen oder eine Datei auf dem Speicherserver 302 zu öffnen.
-
Bei 308 sendet der Anwendungsserver 303 eine Metadaten-und-Inhalts-Anforderung in Form einer HTTP GET-Anfrage „get (GET files/filesId)“ an den externen Speicherserver 302, um die Metadaten und den Inhalt für die Datei oder den Ordner zu erhalten. Bei 309 kann die Metadaten-und-Inhalts-Anforderung einen Dateiidentifikator, einen Dateinamen, einen Identifikator, dass auf dem Anwendungsserver noch kein Inhalt oder keine Version für die Datei existiert (da die Datei neu erstellt wurde) usw. beinhalten. Der externe Speicherserver 302 kann wiederum bei 310 in Reaktion auf die GET-Anfrage Metadaten für die neu erstellte Datei in einer Nachricht ohne Inhalt zurücksenden.
-
Bei 311 erstellt der Anwendungsserver 303 eine neue Datei, z. B. ein Dokument. Das neu erstellte Dokument kann im Dateispeicher UI angezeigt werden. Das erstellte Dokument kann innerhalb eines Abschnitts angezeigt werden, der durch den strukturellen Tag (z. B. dem <iframe> tag) definiert wird, der durch die Dateizugriffsanforderung bei 307 spezifiziert wurde. Das neu erstellte Dokument kann bearbeitet werden. Bei 312 kann der Anwendungsserver 303 periodisch den aktuellsten Versionswert einer im Cache gespeicherten Version auf den externen Speicherserver 302 hochladen, z. B. alle zwei Minuten usw. Eine HTTP POST-Nachricht, die eine Form ähnlich zu „upload (POST files/filelD/blob)“ annehmen kann, kann verwendet werden, um eine Kopie der Datei hochzuladen, wobei der „blob“-Parameter die Web-API ist, die der Anwendungsserver 303 annimmt, um mit dem Speicherserver 302 zu kommunizieren. Wenn ein neuer Dateiidentifikator erstellt wird (z. B. bei 306), wird die POST-Nachricht „uploadCopy (POST files/fileld/copy)“ bei 312 verwendet, um eine Kopie einer Datei auf den Speicherserver hochzuladen. Die Kopie kann gegebenenfalls mit einem Wert von Benutzern und/oder Einheiten geteilt werden, die Zugriff auf diese Datei haben, wie durch das TPAT spezifiziert. Eine Reaktion vom Speicherserver auf die POST-Anfrage enthält einen einheitlichen Ressourcenanzeiger (uniform resource locator - URL) zum Öffnen der neuen Datei, wie bei 313 weiter erörtert.
-
Bei 313 kann der externe Speicherserver 302 gegebenenfalls eine Version des aktuellsten Uploads an den Anwendungsserver 303 zurücksenden. Es wird von dem externen Speicherserver 302 eine Antwortnachricht in Reaktion auf das Hochladen bei 312 an den Anwendungsserver 303 gesendet. Die Antwortnachricht enthält einen Versionswert und eine Prüfsumme der neu erstellten Datei.
-
Der Anwendungsserver 303 ist konfiguriert, um periodisch, zeitweise oder konstant die Dateiinformationen auf dem Speicherserver 302 zu aktualisieren, sodass der Anwendungsserver 303 die aktuellsten Metadaten und Inhalt der Datei pflegt. Bei 314 kann der Anwendungsserver 303 periodisch eine HTTP GET-Anforderung verwenden, um Metadaten der Datei von dem externen Speicherserver 302 zu erhalten, z. B. alle fünf Minuten usw. Die HTTP GET-Anforderung kann eine ähnliche Form wie „get (GET files/fileld)“ annehmen, die konfiguriert ist, die Metadaten oder den Inhalt der Datei zu erhalten. Der externe Speicherserver 302 kann gegebenenfalls Metadaten bei 315 zurücksenden, z. B. über eine HTTP PUT-Nachricht „updateMetadata (PUT files/fileld)“. Bei 316, wenn die Datei auf dem Anwendungsserver 303 geschlossen wird, kann der Anwendungsserver den externen Speicherserver 302 durch Senden einer HTTP PUT-Nachricht „(PUT files/fileld/close)“ benachrichtigen, dass der Speicherserver die Sperre der Datei bei 317 aufheben kann, falls die Datei potenziell gesperrt war, als der Dateiidentifikator bei 306 erstellt wurde.
-
4 stellt gemäß einiger hier beschriebener Ausführungsformen ein beispielhaftes Flussdiagramm 400 dar, das Aspekte des Öffnens einer Datei, die von einem externen Speicherserver gespeichert ist, zum Ansehen, Kommentieren oder Bearbeiten von einem Benutzergerät über eine API (z. B. 130 in 1) darstellt. Bei 401 sendet eine auf einem Benutzergerät (z. B. 101 in 1) instanziierte Benutzerschnittstelle, wie etwa ein Browser 301, eine Dateizugriffsanforderung zum Öffnen einer Datei auf einem externen Speicherserver 302. Die Benutzeranfrage kann einen Dateiidentifikator, einen Speicherserveridentifikator, einen Dateityp, einen Benutzeridentifikator, einen Benutzergerätidentifikator und/oder dergleichen beinhalten. Bei 402 kann der externe Speicherserver 302 die Zugriffsberechtigung aufgrund eines Benutzeridentifikators prüfen, z. B. durch Verifizieren, ob der Benutzeridentifikator auf der Zugriffssteuerungsliste ist, die mit der Datei verbunden ist, für welche der Benutzer die Berechtigung hat, auf die entsprechende Datei zuzugreifen.
-
Bei 402 prüft der Speicherserver 302 dann die Metadaten der Datei, um zu verifizieren, ob eine andere Einheit die Datei gesperrt hat. Beispielsweise wird der SperrStatus in den Datei-Metadaten in einem „locked_for_edit“-Feld angegeben. Wenn die Datei nicht bereits von einer anderen Einheit gesperrt ist, sperrt der Speicherserver die Datei für den Anwendungsserver 303. Während die Datei von einer anderen Einheit gesperrt ist, kann die Datei immer noch zum Betrachten geöffnet werden (entweder im Browser 301 oder für eine Vorschau oder zum Herunterladen). Wenn der Anwendungsserver 303 keine Sperre für die Datei aufweist, zeigt der Anwendungsserver dem Benutzer eine Nur-Lese-Ansicht mit einer Erläuterung, dass die Datei von einer anderen Einheit bearbeitet wird (z. B. einem anderen Benutzer oder einer anderen Anwendung). Jegliche Anforderungen der Datei, die vom Anwendungsserver 303 an den Speicherserver 302 gesendet werden, können die Sperre für einen Zeitraum (z. B. 5 Minuten, 15 Minuten usw.) zurücksetzen. Der Anwendungsserver 303 kann den Speicherserver 302 periodisch kontaktieren, z. B. alle 5 Minuten usw., um aktualisierte Metadaten zu bekommen und die Sperre aufrecht zu erhalten. In einer Ausführungsform kann der Anwendungsserver 303 dem Benutzer über den Browser 301 eine Fehlermeldung zeigen, wenn die Anforderung (z. B. die Metadaten-und-Inhalts-Anforderung, die bei 404 erörtert wird) von aktualisierten Metadaten nach drei Versuchen scheitert. Falls der Anwendungsserver 303 es nicht schafft, eine Metadaten- oder Inhaltsanforderung an den Speicherserver 302 innerhalb eines Zeitraums (z. B. 15 Minuten usw.) zu stellen, könnte die Sperre verloren gehen. Wenn die Sperre der Datei verloren gegangen ist, aber anschließend eine Dateizugriffsanforderung für dieselbe Datei empfangen wird, kann der Speicherserver 302 versuchen, dem Anwendungsserver 303 die Sperre neu aufzuerlegen. Wenn die Neuauferlegung der Sperre nicht möglich ist, weil eine andere Einheit die Sperre auf derselben Datei beibehalten hat, schaltet der Anwendungsserver 303 die Datei in einen Nur-Lese-Modus.
-
Bei 402 sendet der Speicherserver 302 auch das TPAT an den Browser 301 zurück, auf ähnliche Weise wie bei 306 in 3 beschrieben.
-
Bei 403 wird eine Dateizugriffsanforderung generiert. Die Dateizugriffsanzeige kann eine HTTP POST-Anforderung sein, die innerhalb eines strukturellen Tags des HTML-Quelltexts einer Anzeigeseite des Browsers 302 generiert wurde, und die HTTP POST-Anforderung beinhaltet das TPAT für die vom Speicherserver bei 402 empfangene Datei. Die Dateizugriffsanforderung kann einen Dateiidentifikator, einen Speicherserveridentifikator, einen Dateityp, einen Benutzeridentifikator, einen Benutzergerätidentifikator, ein token (TPAT) und/oder dergleichen beinhalten, wie bei 201 in 2 erörtert.
-
Bei 404 kann der Anwendungsserver 303 eine Metadaten-und-Inhalts-Anforderung an den externen Speicherserver 302 senden, um die Metadaten und den Inhalt für die Datei oder den Ordner zu erhalten. Die Metadaten-und-Inhalts-Anforderung kann eine HTTP GET-Anforderung sein. Die GET-Anforderung beinhaltet Versionsinformationen der Datei (z. B. einen Versionswert), die im Cache auf dem Anwendungsserver 303 gespeichert sind. In einer Umsetzung pflegt der Anwendungsserver 303 eine Datentabelle, die einen internen Versionswert, der ein mit dem Anwendungsserver 303 kompatibles Format aufweist, das von demselben verwendet wird, einem externen Versionswert zuordnet, der mit dem externen Speicherserver 302 oder anderen Einheiten kompatibel ist und von denselben verwendet wird. Der Anwendungsserver 303 kann den internen Versionswert von den gespeicherten Metadaten identifizieren und abrufen, die mit einer im Cache gespeicherten Version der Datei verbunden sind, und kann dann den internen Versionswert in den entsprechenden externen Versionswert konvertieren. Die GET-Anfrage kann den externen Versionswert der Datei als einen Parameter der aktuellen Version beinhalten, sodass der externe Speicherserver 302 den Parameter der aktuellen Version lesen kann und den Versionswert, der mit der im Cache gespeicherten Version der im Anwendungsserver 303 im Cache gespeicherten Datei verbunden ist, erhalten kann. Die GET-Anfrage kann ferner gegebenenfalls einen Hash beinhalten, der aus dem Inhalt der im Cache gespeicherten Version generiert wurde, wie in Verbindung mit 204 in 2 erörtert wurde. In einer Umsetzung, falls keine Datei im Cache gespeichert ist, wird ein Indikator, dass keine im Cache gespeicherte Version existiert, in die Metadaten-und-Inhalts-Anforderung mit aufgenommen, z. B. ähnlich zu 309 in 3. In einer Umsetzung beinhaltet die Metadaten-und-Inhalts-Anforderung gegebenenfalls einen Zustellungsparameter, der angibt, ob der Speicherserver 302 den Inhalt der aktuellsten Version der Datei dem Anwendungsserver bereitstellen soll, falls die im Cache gespeicherte Version der Datei auf dem Anwendungsserver nicht die aktuellste Version ist. In einer Umsetzung kann der Anwendungsserver gegebenenfalls eine spezifische Version der Datei in der Metadaten-und-Inhalts-Anforderung anfordern, die nicht die aktuellste Version sein kann, und den Versionswert der angeforderten spezifischen Version in die Metadaten-und-Inhalts-Anforderung aufnehmen. Beispielsweise kann die Metadaten-und-Inhalts-Anforderung gegebenenfalls einen „angeforderte Version“-Parameter beinhalten, der mit einem Versionswert konfiguriert werden kann, um eine bestimmte Version der Datei anzufordern. Wenn die Metadaten-und-Inhalts-Anforderung keinen solchen angeforderte-Version-Parameter beinhaltet, wird für den Anwendungsserver standardmäßig die aktuellste Version der in dem externen Speicherserver 302 gespeicherten Datei als die angeforderte Datei eingerichtet.
-
Bei 405 prüft der externe Speicherserver 302, ob der Anwendungsserver 303 die aktuellste Version der Datei aufweist, z. B. wie bei 205 in 2 erörtert. In einer Umsetzung, wie obenstehend erörtert, kann der Anwendungsserver 303 den Inhalt der aktuellsten Version nicht anfordern und kann eine bestimmte Version einer Datei durch Konfigurieren eines „angeforderte-Version“-Parameters in der Metadaten-und-Inhalts-Anforderung anfordern. Bei 405 prüft der externe Speicherserver 302 in einer Umsetzung ebenfalls, ob ein „angeforderte-Version“-Parameter in der Metadaten-und-Inhalts-Anforderung vorliegt, der anzeigt, dass es sich bei der Anforderung um eine spezifische Version handelt, und verifiziert dann, ob der Versionswert der im Cache des Anwendungsservers 303 gespeicherten Version gleichwertig ist mit dem angeforderten Wert der spezifischen Version in dem „angeforderte-Version“-Parameter. Bei 406 sendet der externe Speicherserver 302 Metadaten der Datei an den Anwendungsserver 303 zurück. Wenn der Anwendungsserver keine aktuellste Version des Inhalts der Datei aufweist, prüft der externe Speicherserver 302 auch einen Zustellparameter in der Metadaten-und-Inhalts-Anfrage, um zu bestimmen, ob die aktuellste Version an den Anwendungsserver 303 zu senden ist oder nicht. Wenn der Zustellparameter des externen Speicherservers 302 eingestellt ist, die aktuellste Version bereitzustellen, sendet der externe Speicherserver 302 den Inhalt der aktuellsten Version der Datei an den Anwendungsserver 303. In einer Umsetzung sendet, falls die Anforderung für eine spezifische Version ist, der externe Speicherserver 302 den Inhalt der bestimmten Version der Datei an den Anwendungsserver 303. Der externe Speicherserver 302 kann bei 406 eine HTTP PUT-Nachricht an den Anwendungsserver 303 senden. Wie bei 207 erörtert, kann der Inhalt der Datei beispielsweise vom Speicherserver als eine Kopie der Datei gesendet werden, und Metadaten der Datei können über eine in eine Nachricht eingebettete URL gesendet werden. In einem anderen Beispiel kann der Anwendungsserver eine Nachricht empfangen, die einen vordefinierten Link auf die aktuellste Version der auf dem Speicherserver gespeicherten Datei beinhaltet.
-
Bei 408 wird die Datei (z. B. ein Dokument) angezeigt, beispielsweise zum Bearbeiten. Das Dokument kann innerhalb eines durch einen strukturellen Tag definierten Abschnitts angezeigt werden.
-
409-414 sind ähnlich 312-317 in 3. Die Datei kann beispielsweise bereits bei 402 von einer anderen Einheit gesperrt sein (z. B. einem anderen Benutzer oder einer anderen Anwendung), und der Anwendungsserver kann nur eine „Nur-Lese“-Version der Datei am Benutzergerät öffnen. In diesem Fall kann die andere Einheit (z. B. der andere Benutzer oder die andere Anwendung) an der Datei Änderungen vornehmen. In einem anderen Beispiel, sogar wenn die Datei für eine Anwendung durch den Speicherserver bei 402 gesperrt ist, kann ein berechtigter Benutzer an der Datei Änderungen unmittelbar über den Speicherserver vornehmen. In diesem Fall ist der Anwendungsserver 303 konfiguriert, um periodisch, zeitweise oder konstant die Dateiinformationen wie etwa die Metadaten und/oder im Speicherserver 302 zu aktualisieren, sodass der Anwendungsserver 303 die aktuellsten Metadaten und Inhalt der Datei pflegt. Bei 409 kann der Anwendungsserver 303 periodisch die aktuellste Version der Datei auf den externen Speicherserver 302 hochladen, z. B. alle zwei Minuten usw. Bei 410 kann der externe Speicherserver 302 gegebenenfalls eine Version des aktuellsten Uploads an den Anwendungsserver 303 zurücksenden. Bei 411 verwendet der Anwendungsserver 303 periodisch eine HTTP GET-Anfrage, um Metadaten der Datei von dem externen Speicherserver 302 zu erhalten, z. B. alle fünf Minuten usw. Bei 412 sendet der externe Speicherserver 302 gegebenenfalls Metadaten zurück. Bei 413, wenn die Datei auf dem Anwendungsserver 303 geschlossen wird, kann der Anwendungsserver den externen Speicherserver durch Senden einer HTTP PUT-Nachricht („PUT files/fileld/close)“ benachrichtigen, dass er die Sperre bei 414 aufheben kann.
-
Die HTTP-Aktionen, die von der API vorgenommen werden können (z. B. 130 in 1) zum Erstellen oder Öffnen einer Datei, wie in Verbindung mit 3-4 erörtert, können ebenso auf Ordner anwendbar sein, z. B. kann die POST-Nachricht zum Erstellen eines neuen Ordners als Ableger eines gegebenen Ordners eine Form annehmen, die der „create (POST folders/folderld/create)“ ähnlich ist, und eine GET-Nachricht „getMetadata (GET folders/folderId)“ kann aufgerufen werden, um die Metadaten des Ordners oder dergleichen zu erhalten. Wenn der Anwendungsserver (120 in 1 oder 303 in 3-4) an einem Ordner im Speicherserver (110 in 1 oder 302 in 3-4) arbeitet, können bestimmte mit dem Ordner verbundene Eigenschaften der Metadaten wie etwa Typ (immer Ordner), Ordner ID, Ordnername, ob der Ordner mit Sternchen versehen ist, und übergeordneter Ordner, gesperrt werden, um nicht geändert zu werden.
-
Zusätzlich zu den obenstehend beschriebenen HTTP-Nachrichten zum Erstellen oder Öffnen einer Datei, zum Aktualisieren von Metadaten der Datei usw. kann die API (z. B. 130 in 1) eine GET-Liste aufrufen, die von der API als eine Erweiterung (add-on) aufgenommen wurde, um nach den Dateien oder Ordnern auf dem Speicherserver zu suchen. Beispielparameter für eine über die API generierte Suchanfrage können Corpus (standardmäßiger „Benutzer“), bestellt von (standardmäßiger „Name“), Seitengröße, Seiten-Token oder dergleichen beinhalten. In Reaktion auf die GET-Liste empfängt der Anwendungsserver an Stelle des Erhaltens des gesamten Inhalts oder Metadaten in einer HTTP-Nachricht Eigenschaften von dem Speicherserver wie etwa eine Liste von Dateiidentifikatoren, Blätter von Dateien, ein Token für die nächste Seite der Datei, Elemente (z. B. eine Datei oder Ordner mit einem Typ, ID, Name usw.) usw.
-
5 ist gemäß einer beispielhaften Ausführungsform ein Blockdiagramm eines Computers wie etwa jede Komponente des in 1 implementierten Systems zum Ausführen sämtlicher hier beschriebener Prozesse. Jede der Komponenten dieser Systeme kann auf einem oder mehreren Computern 500 implementiert werden. In bestimmten Fällen können mehrere Komponenten dieser Systeme in einem Computer 500 enthalten sein. Bei bestimmten Umsetzungen können eine Komponente und ein Speichergerät in mehreren Computern 500 implementiert werden.
-
Der Computer 500 umfasst mindestens eine Kommunikationsschnittstelle, ein Eingangs-/Ausgangssteuergerät 510, Systemspeicher und ein oder mehrere Datenspeichergeräte. Der Systemspeicher beinhaltet mindestens einen Direktzugriffsspeicher (RAM 502) und mindestens einen Nur-Lese-Speicher (ROM 504). All diese Elemente kommunizieren mit einer zentralen Verarbeitungseinheit (CPU 506), um den Betrieb des Computers 500 zu vereinfachen. Der Computer 500 kann auf diverse Weisen konfiguriert werden. Der Computer 500 kann beispielsweise ein konventioneller Standalone-Computer sein, oder als Alternative dazu können die Funktionen des Computers 500 über mehrere Computersysteme und Architekturen verteilt werden. Alternativ dazu kann ein Computersystem virtualisiert sein, um die Funktionen mehrerer Computer 500 bereitzustellen. In 5 ist der Computer 500 über ein Netzwerk oder ein lokales Netzwerk mit anderen Servern oder Systemen verbunden.
-
Der Computer 500 kann in einer verteilten Architektur konfiguriert sein, wo Datenbanken und Rechner in separaten Einheiten oder Stellen angeordnet sind. Manche Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens ein allgemeines Steuergerät oder einen Prozessor und einen Systemspeicher. Bei verteilten Architekturumsetzungen können alle Einheiten über die Kommunikationsschnittstelle 508 an einen Kommunikationsknotenpunkt oder -port (ohne Abbildung) angeschlossen sein, der als eine primäre Kommunikationsverknüpfung mit anderen Servern, Client- oder Benutzercomputern und anderen zugehörigen Geräten dient. Der Kommunikationsknotenpunkt oder -port kann selbst über eine minimale Verarbeitungskapazität verfügen und dient primär als Kommunikationsrouter. Verschiedene Kommunikationsprotokolle können einen Teil des Systems bilden.
-
Der CPU 506 umfasst einen Prozessor, wie etwa einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere zusätzliche Co-Prozessoren, wie Mathematik-Co-Prozessoren zum Erleichtern des Arbeitsanfalls für den CPU 506. Der CPU 506 kommuniziert mit der Kommunikationsschnittstelle 508 und dem Eingangs-/Ausgangssteuergerät 510, über das der CPU 506 mit anderen Geräten, wie etwa anderen Servern, Benutzerstationen und Geräten kommunizieren kann. Die Kommunikationsschnittstelle 508 und das Eingangs-/Ausgangssteuergerät 510 können mehrere Kommunikationskanäle für simultane Kommunikation mit beispielsweise anderen Prozessoren, Servern oder Client-Endgeräten beinhalten.
-
Der CPU 506 kommuniziert ebenfalls mit dem Datenspeichergerät. Das Datenspeichergerät kann eine geeignete Kombination aus magnetischem, optischem oder Halbleiterspeicher umfassen und kann z. B. RAM 502, ROM 504, einen Flashdrive oder ein optisches Laufwerk, wie ein CD-Laufwerk oder eine Festplatte bzw. Festplattenlaufwerk enthalten. Der CPU 506 und das Datenspeichergerät können sich beispielsweise jeweils ausschließlich in einem einzigen Computer oder einem anderen Rechner befinden; oder sie können über ein Kommunikationsmedium wie etwa einen USB-Port, ein serielles Anschlusskabel, ein Koaxialkabel, ein Ethernetkabel, eine Telefonleitung, einen Funkfrequenzempfänger oder über ein ähnliches drahtloses oder verdrahtetes Medium oder eine Kombination dieser genannten miteinander verbunden sein. So kann der CPU 506 z. B. über die Kommunikationsschnittstelle 508 mit dem Datenspeichergerät verbunden sein. Der CPU 506 kann zur Durchführung einer oder mehrerer bestimmter Verarbeitungsfunktionen konfiguriert werden.
-
Auf dem Datenspeichergerät können beispielsweise (i) ein Betriebssystem 512 für den Computer 500; (ii) eine oder mehrere Anwendungen 514 (z. B. Computerprogrammtext oder ein Computerprogrammprodukt) gespeichert werden, im Einklang mit den hier beschriebenen Systemen und Methoden direkt an den CPU 506 angepasst werden, und insbesondere im Einklang mit den hier im Einzelnen beschriebenen Verfahren bezüglich des CPU 506; oder (iii) Datenbank(en) 516, dazu angepasst, Informationen zu speichern, die verwendet werden können, um vom Programm benötigte Informationen zu speichern.
-
Das Betriebssystem 512 und die Anwendungen 514 können beispielsweise komprimiert, uncompiliert und verschlüsselt gespeichert werden und können einen Computerprogrammtext enthalten. Die Anweisungen des Programms können von einem computerlesbaren Medium, außer dem Datenspeichergerät, in den Hauptspeicher des Prozessors geschrieben werden, wie etwa vom ROM 504 oder vom RAM 502. Während die Durchführung von Sequenzen von Anweisungen im Programm dazu führt, dass der CPU 506 die hier beschriebenen Prozessschritte durchführt, können auch fest verdrahtete Kreise anstatt oder in Kombination mit Softwareanweisungen für die Umsetzung des Prozesses der vorliegenden Erfindung verwendet werden. Daher sind die hier beschriebenen Systeme und Methoden nicht auf eine spezifische Kombination aus Hardware und Software beschränkt.
-
Geeigneter Computerprogrammtext kann zum Durchführen einer oder mehrerer Funktionen bezüglich des Durchführens der hier beschriebenen Prozesse bereitgestellt werden. Das Programm kann auch Programmelemente, wie etwa ein Betriebssystem 512, ein Datenbank-Verwaltungssystem und „Gerätetreiber“ enthalten, über die der Prozessor eine Schnittstelle mit Computer-Peripheriegeräten (z. B. eine Videoanzeige, ein Tastenfeld, eine Computermaus usw.)) über das Eingangs-/Ausgangssteuergerät 510 aufbauen kann.
-
Der Begriff „computerlesbares Medium“, wie er hier verwendet wird, bezieht sich auf ein nicht übertragbares Medium, das Ausführungsanweisungen an den Prozessor des Computers 500 sendet, bzw. an der Übermittlung teilnimmt (oder an irgend einen anderen Prozessor eines hier beschriebenen Geräts). Dieses Medium kann viele Formen annehmen, einschließlich unter anderem flüchtige und nicht flüchtige Medien. Zu den nichtflüchtigen Medien gehören beispielsweise optische magnetische oder optomagnetische Disks oder integrierte Speicherschaltung wie etwa Flash-Speicher. Zu den flüchtigen Medien gehören dynamisches RAM (DRAM), welches gewöhnlich als Hauptspeicher dient. Allgemeine Formen der computerlesbaren Medien beinhalten beispielsweise Disketten, Floppy Disks, Festplatten, Magnetbänder, jegliche anderen magnetischen Datenträger, CD-ROMs, DVDs, jegliche andere optische Medien, Lochkarten, Lochstreifen, alle anderen physischen Medien mit Lochmustern, RAM-, PROM-, EPROM-Speicher, Flash-EPROM, jegliche anderen Speicherchips oder -kassetten oder jedes andere nichtflüchtige Medium, von dem ein Computer lesen kann.
-
Diverse Formen von computerlesbaren Medien können daran beteiligt sein, eine oder mehrere Sequenzen einer oder mehrerer Anweisungen an den CPU 506 (oder jeden anderen hier beschriebenen Prozessor oder Gerät) zur Ausführung zu transportieren. So können die Anweisungen zunächst auf einer magnetischen Disk eines externen Computers transportiert werden (ohne Abbildung). Der externe Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen anschließend über eine Ethernet-Verbindung, ein Kabel oder sogar über eine Telefonleitung mit Modem senden. Ein an einen Computer angeschlossenes Kommunikationsgerät 500 (z. B. ein Server) kann die Daten über die entsprechende Kommunikationsleitung empfangen und die Daten für den Prozessor auf einem Systembus bereitstellen. Der Systembus transportiert die Daten an den Hauptspeicher, von dem der Prozessor die Anweisungen anschließend abruft und ausführt. Die vom Hauptspeicher empfangenen Anweisungen können gegebenenfalls entweder vor oder nach der Ausführung durch den Prozessor gespeichert werden. Darüber hinaus können Anweisungen über einen Kommunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden, die beispielhafte Formen für drahtlose Kommunikation oder Datenstreams sind, die diverse unterschiedliche Arten von Informationen übertragen.
-
Es wird offensichtlich, dass die hier beschriebenen Systeme und Verfahren in vielen verschiedenen Formen von Software, Firmware und Hardware in den abgebildeten Figuren implementiert werden können. Der tatsächliche Softwaretext oder spezialisierte Steuerungshardware, die zur Implementierung von Aspekten, die mit den Prinzipien der hier beschriebenen Systeme und Verfahren konsistent sind, ist nicht beschränkend. Somit wurden der Betrieb und das Verhalten der Aspekte der Systeme und Verfahren beschrieben ohne Bezugnahme auf den spezifischen Softwaretext - es versteht sich, dass ein Durchschnittsfachmann in der Lage ist, Software und Steuerungshardware zu konzipieren, um die Aspekte aufgrund der vorliegenden Beschreibung zu implementieren.
-
Verschiedene Aspekte des in dieser Spezifikation beschriebenen Gegenstandes können in einem Computersystem implementiert werden, das eine Backend-Komponente, z. B. einen Datenserver, oder eine Middleware-Komponente, z. B. einen Anwendungsserver, oder eine Frontend-Komponente, z. B. einen Client-Computer mit einer grafischen Benutzeroberfläche oder einen Webbrowser, durch den ein Benutzer mit einer in dieser Spezifikation beschriebenen Implementierung des Gegenstandes interagieren kann, oder eine beliebige Kombination einer oder mehrerer der besagten Backend-, Middleware- oder Frontend-Komponenten beinhalten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation, wie z. B. ein Kommunikationsnetzwerk, miteinander verbunden sein. Das Kommunikationsnetzwerk kann beispielsweise eines oder mehrere aus einem persönlichen Netzwerk (PAN), einem lokalen Netzwerk (LAN), einem Campusnetzwerk (CAN), einem Stadtnetzwerk (Metropolitan Area Network - MAN), einem Weitverkehrsnetzwerk (Wide Area Network - WAN), einem Breitbandnetzwerk (Broadband Network - BBN), dem Internet und dergleichen beinhalten. Des Weiteren kann das Kommunikationsnetzwerk zum Beispiel einschließlich, unter anderem eine oder mehrere der folgenden Netzwerk-Topologien beinhalten: ein Bus-Netzwerk, ein Stern-Netzwerk, ein Ring-Netzwerk, ein Mesh-Netzwerk, ein Stern-Bus-Netzwerk, ein Baum- oder hierarchisches Netzwerk und dergleichen. Die Kommunikationsmodule können beispielsweise Modems oder Ethernet-Karten sein.
-
Wie obenstehend erörtert, kann ein Computersystem 500 Clienten und Server beinhalten. Ein Client und ein Server befinden sich im Allgemeinen entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern ausgeführt werden und eine Client-Server-Beziehung zueinander aufweisen. Das Computersystem 500 kann beispielsweise und ohne Beschränkung ein Unternehmensserver oder eine Gruppe von Servern, ein oder mehrere Desktop-Computer, ein oder mehrere Laptop-Computer usw. sein. Das Computersystem 500 kann auch in ein anderes Gerät eingebettet sein, beispielsweise und ohne Beschränkung ein Mobiltelefon, ein Personal Digital Assistant (PDA), ein mobiler Audio-Player, ein GPS-Empfänger, eine Videospielkonsole und/oder eine Fernseher-Set-Top-Box.
-
Während diese Spezifikation viele Spezifika enthält, sollen diese nicht als Beschränkung des Umfangs der Patentansprüche verstanden werden, sondern vielmehr als Beschreibungen von bestimmten Umsetzungen des Gegenstands. Bestimmte Merkmale, die in dieser Spezifikation im Zusammenhang mit separaten Implementierungen beschrieben werden, können darüber hinaus in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Implementierung beschrieben sind, auch in mehreren Implementierungen getrennt oder in einer geeigneten Teilkombination implementiert werden. Außerdem können, auch wenn die Funktionen vorstehend ggf. als in bestimmten Kombinationen wirkend beschrieben und zunächst auch als solche beansprucht werden, in einigen Fällen ein oder mehrere Funktionen einer beanspruchten Kombination aus der Kombination herausgenommen und die beanspruchte Kombination auf eine Teilkombination oder eine Variante einer Teilkombination gerichtet werden.
-
Ebenso werden Vorgänge in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, dies sollte jedoch nicht als Anforderung verstanden werden, dass die besagten Vorgänge in der bestimmten dargestellten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen, oder dass alle dargestellten Vorgänge ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung von Vorteil sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den zuvor beschriebenen Aspekten nicht in allen Aspekten als eine solche Trennung erfordernd aufgefasst werden, zudem versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder in mehrere Softwareprodukte zusammengefasst werden können.