CN108427703A - 提供对存储在数据存储系统的数据文件访问的系统和方法 - Google Patents
提供对存储在数据存储系统的数据文件访问的系统和方法 Download PDFInfo
- Publication number
- CN108427703A CN108427703A CN201711237577.4A CN201711237577A CN108427703A CN 108427703 A CN108427703 A CN 108427703A CN 201711237577 A CN201711237577 A CN 201711237577A CN 108427703 A CN108427703 A CN 108427703A
- Authority
- CN
- China
- Prior art keywords
- data file
- version
- server
- file
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及提供对存储在数据存储系统的数据文件的访问的系统和方法。本文中公开的系统和方法提供了对存储在远程数据存储系统的数据文件的访问。用户设备能够经由通过远程存储服务器提供的用户界面向应用服务器发送文件访问请求,以访问存储在远程存储服务器处的数据文件。应用服务器然后能够可选地识别用于访问数据文件的相关应用,并向远程服务器发送与数据文件有关的元数据和内容请求。元数据和内容请求包括在应用服务器处缓存的数据文件的先前缓存版本的版本信息。当缓存版本不是最新版本时,应用服务器从远程存储服务器接收数据文件的最新版本。数据文件的最新版本然后经由应用服务器上的相关应用呈现给用户设备。
Description
技术领域
总的来说,本公开涉及远程访问环境中的数据文件管理,具体涉及用于提供对存储在远程数据存储系统处的数据文件的访问的系统和方法。
背景技术
用户有时需要访问和编辑各种数据文件。例如,用户可能需要打开或编辑文字处理文件、电子表格文件、数据库文件、编程源代码文件、演示幻灯片、电子邮件消息文件、图像文件、视频文件或其他类型的文件。这些数据文件中的每一个都可能需要相应的专用软件应用来打开或编辑相应的数据文件。因此,用户通常需要在本地计算机上安装所需的专用软件以打开各种类型的数据文件。当用户的设备上没有特定的软件时,用户就不能访问和操作某种类型的数据文件。
当用户试图打开和编辑存储在远程服务器上的数据文件时,现有的文档系统通常要求用户将数据文件从远程服务器下载到用户的本地计算机,使得用户能够经由特定的本地安装的软件应用来打开数据文件。远程存储的数据文件的下载以及本地安装各种软件应用以便对不同类型的数据文件进行操作的需求可能是资源效率低下的。况且,当用户正在操作缺少安装计算机应用的容量或下载数据文件的存储空间的移动设备例如智能电话时,对数据文件的这种访问变得不可行。
发明内容
本文中公开的系统和方法提供了用于提供对存储在远程数据存储系统处的数据文件的访问的机制。托管各种应用的应用服务器用于允许用户设备打开存储在远程数据存储系统处的数据文件,而用户设备不必下载数据文件的副本或本地安装相关应用。用户设备经由通过远程存储服务器提供的用户界面向应用服务器发送文件访问请求,以访问存储在远程存储服务器处的数据文件。应用服务器然后能够可选地识别用于访问数据文件的相关应用,并向远程服务器发送与数据文件有关的元数据和内容请求。元数据和内容请求包括在应用服务器处缓存的数据文件的先前缓存版本的版本信息。在接收到元数据和内容请求时,远程存储服务器基于从元数据和内容请求接收的版本信息来验证数据文件的缓存版本是否是最新版本。当缓存版本不是最新版本时,应用服务器从远程存储服务器接收数据文件的最新版本,用于替换先前缓存的版本。数据文件的最新版本然后经由应用服务器上的相关应用呈现给用户设备。以这种方式,用户能够打开、注释或编辑存储在远程存储服务器处的数据文件的最新版本,而无需将数据文件下载到用户设备,或者在用户设备上本地安装相关应用。
附图说明
结合附图考虑下文的详细描述时,本公开的以上和其他特征、包括它的性质和它的各种优点将变得更加显而易见,在附图中:
图1提供了根据说明性实施例的示例数据流程图,其示出了用于在用户设备、应用服务器和远程存储服务器之间提供对存储在远程数据存储系统处的数据文件的访问的数据消息传递;
图2是根据说明性实施例的示例逻辑流程图,其示出了在用于提供对存储在远程存储服务器处的数据文件的访问的应用服务器处的工作流程的方面;
图3根据说明性实施例提供了示例流程图,其示出了从用户设备经由应用编程接口(API)在远程存储服务器中创建新数据文件的方面;
图4根据说明性实施例提供了示例流程图,其示出了在远程存储服务器中打开数据文件以从用户设备经由API查看、注释或编辑的方面;和
图5是根据说明性实施例,用于执行本文中描述的任何处理的计算设备、例如图1中实现的系统的任何组件的框图。
具体实施方式
为了提供本文中描述的系统和方法的全面了解,现在将描述某些实施例,包括用于提供对存储在远程数据存储系统处的数据文件的访问的系统和方法。然而,本领域的普通技术人员将会理解,本文中描述的系统和方法可以按照适合于待处理的应用进行调适和修改,并且本文中描述的系统和方法可以被用于其他合适的应用,并且这样的其他添加和修改不会偏离其范围。通常,本文中描述的计算机化系统可以包含一个或多个引擎,所述引擎包括一个或多个处理设备,例如计算机、微处理器、逻辑设备或者配置有硬件、固件或软件的其他设备或处理器以执行一种或更多种本文中描述的计算机化的方法。
在一个实施例中,本文中论述了提供对存储在远程数据存储系统处的数据文件的访问的机制。对远程应用服务器与远程存储服务器通信提供协议,使得远程应用服务器能够启动应用来访问原始存储在远程存储服务器上的数据文件并对其执行操作。具体而言,远程应用服务器经由应用编程接口(API)向远程存储服务器发送对于与用户尝试访问的数据文件相关联的元数据和内容的初始请求。远程存储服务器能够继而验证远程应用服务器是否具有所请求的数据文件的最新版本,并且如果应用服务器不具有最新版本,则将所请求的数据文件的最新版本发送给应用服务器。以这种方式,远程应用服务器能够打开数据文件的最新版本,而无需用户必需将数据文件下载到本地设备、或在本地安装特定应用以便访问和编辑数据文件。
例如,用户可以尝试经由远程存储用户界面,例如基于浏览器的界面,来打开存储在远程存储服务器处的数据文件。然后经由基于浏览器的界面将访问请求发送到远程应用服务器来启动相关应用以便打开所请求的数据文件。远程应用服务器向远程存储服务器发送对与数据文件相关联的元数据和内容的请求。元数据和内容请求能够是包括对数据文件的更新元数据和更新内容二者的请求的单个请求。元数据和内容请求至少包括当前存储在远程应用服务器上的缓存中的数据文件的内容版本。当接收到元数据和内容请求后,远程存储服务器判断内容版本是否为数据文件的最新版本,并继而将数据文件的最新版本发送给远程应用服务器。以这种方式,远程应用服务器能够为用户打开所请求的数据文件的最新版本。
图1根据说明性实施例提供了示例图100,其示出了在用户设备101a-c(本文中统称为101)、应用服务器120和远程存储服务器110之间用于提供对存储在远程数据存储系统处的数据文件的访问的数据流。包括但不限于用户设备101、应用服务器120、远程存储服务器110的一个或更多个实体经由一个或更多个通信网络进行通信。
用户设备101包括各种个人设备,例如但不限于智能手机、膝上型计算机、台式计算机、工作站、平板电脑、个人数字助理(PDA)等。用户能够操作用户设备101来与远程存储服务器110和/或应用服务器120进行通信。
远程存储服务器110能够由独立于应用服务器120或用户设备101的远程提供者托管。例如,远程存储服务器110能够与任何用户设备101或应用服务器120物理上分离、托管在不同域处、被不同实体拥有等。或者,可供选择地,远程存储服务器110能够与应用服务器120共享相同的公共或私有云。远程存储服务器110能够向用户设备101提供文件存储用户界面105,使得用户能够经由用户界面105与存储在远程存储服务器110处的数据文件进行交互。用户界面105能够包括移动应用(例如,在智能手机或平板电脑处等)或基于浏览器的应用(例如在计算机处等),等等。基于浏览器的应用在整个此文档中作为用户界面105的一个示例使用。
在文件存储用户界面105内,用户能够配置或预先配置如何打开数据文件。例如,在用户尝试打开任何数据文件之前,用户能够预先配置要被来自应用服务器120的应用打开的一个或更多个数据文件,或者用户右键点击数据文件图标并选择“打开方式”以将来自应用服务器120的应用配置为打开文件的应用。当用户经由文件存储用户界面105选择要访问的数据文件时,如果用户已经从应用服务器120预先配置了作为默认应用的应用,或者已经从应用服务器120选择了动态地打开文件的应用,用户设备101向应用服务器120发送文件访问请求108。文件访问请求包括例如但不限于数据文件标识符、存储服务器标识符、数据文件类型、用户设备标识符等的信息。在一些实现中,文档标识符、存储服务器标识符和可选的协议缓冲能够组合并编码成字符串,并且字符串作为密钥包括在用于传输的文件访问请求中。
在一些实现中,应用服务器120是托管各种应用的单个服务器。在一些实现中,应用服务器120包括多个分布式应用服务器。例如,每一个分布式应用服务器托管一种类型的应用,例如文档处理应用、软件开发应用、数据库管理应用等。
在一些实现中,如结合图3-4进一步论述的,文件访问请求108采取超文本传输协议(HTTP)POST请求的形式,当从存储服务器的移动应用或浏览器界面生成文件访问请求108时能够采用这种请求。具体而言,当存储服务器在用户设备处使用基于浏览器的应用时,在浏览器页面的超文本标记语言(HTML)源代码的结构标签、例如<iframe>标签等内生成HTTP POST请求。结构标签在浏览器页面上限定了一个区域,在该区域内能够显示所请求的数据文件或文档。
实现文件应用编程接口(API)130来允许应用服务器120从远程存储服务器110获取数据文件的元数据和内容。应用服务器120经由API 130向远程存储服务器110发送对于与所请求的数据文件相关联的元数据的最新版本和内容的最新版本的文件元数据和内容请求112。与数据文件相关联的示例元数据属性包括但不限于:文件类型,文件标识,文件名,多用途互联网邮件扩展(MIME)类型,文件是由文件系统、父文件还是文件夹加星标或标记,应用属性,文件版本,创建时间,修改时间,所有者、请求者和创建者最后修改的用户名、用户标识符(ID)和电子邮件地址,完整文件扩展名,文件校验和(用于比较,存储服务器能够选择编码方法(例如,MD5、SHA1、SHA2等)),文件大小,访问/编辑特权,关于文件是否具有编辑锁定的状态,等等。元数据和内容请求112还能够包括证明密钥,其是由应用服务器120发布的公共密钥,以使得先前已由应用服务器120提供了公共密钥信息的远程存储服务器110,能够验证来自元数据和内容请求112的密钥信息是一致的。以这种方式,密钥验证确认元数据和内容请求112是从应用服务器120发送的。然后远程存储服务器110又将所请求的元数据和内容发送到应用服务器120。当应用服务器120在其本地缓存中不具有数据文件的最新版本时,远程存储服务器110将数据文件113的内容的最新版本发送到应用服务器120,如结合图2中的207进一步论述的。
在一些实现中,用户能够经由应用服务器120中的应用对数据文件进行更改,并且这样的更改经由API 130传输到远程存储服务器110以更新存储在远程存储服务器110处的数据文件。在应用服务器120上实例化以对接远程存储服务器110的API 130的组件能够利用Post消息以JavaScript实现。例如,远程存储服务器110能够发送“标题更改”消息以通知远程存储服务器120数据文件的标题已经被更改(例如,由用户设备),使得远程存储服务器110能够相应地更新与数据文件的标题有关的信息,例如在用户设备处显示的远程存储服务器110的浏览器界面中的标题栏。又例如,从应用服务器120发送“共享打开”消息以通知远程存储服务器110用户已经点击了“共享”按钮,使得远程存储服务器110能够打开共享帧以允许数据文件由用户与一个或更多个其他用户共享。又例如,与数据文件有关的访问控制消息,例如,“访问控制列表打开”消息,能够被发送到远程存储服务器110,以通知远程存储服务器110用户已经尝试修改数据文件的访问权,例如,另一个不能访问数据文件的用户被授予访问数据文件的授权,因此远程存储服务器110能够显示访问控制帧,例如在用户设备的文件存储用户界面105中显示“访问控制列表配置”帧。
在一些实现中,用户能够直接对远程存储服务器110中的数据文件进行更改。在这种情况下,远程存储服务器110经由API 130向应用服务器120发送消息以同步更改。例如,远程存储服务器110能够经由API 130发送“元数据更改”消息以通知应用服务器120用户已经更改了文件元数据(例如,数据文件的共享状态等),因此应用服务器120应该刷新元数据。又例如,当用户关闭远程存储服务器110中的访问控制帧时,从远程存储服务器110发送访问控制消息,例如“访问控制列表配置关闭”消息,以通知应用服务器120用户已经关闭了与数据文件有关的访问控制的功能,例如“访问控制列表配置”对话框,以及用户是否已经决定继续该动作。
在一些实现中,应用服务器120和远程存储服务器110各自通过共享信息来配置API 130。例如,远程存储服务器110经由统一资源定位符(URL)向应用服务器120提供配置信息,使得应用服务器120知道可以从远程服务器110接收的可能的数据或消息类型(例如,数据文件的元数据等)。
图2是示例逻辑流程图,其根据本文中描述的实施例示出了在提供对存储在远程存储服务器(例如,参见图1中的110)处的数据文件的访问的应用服务器(例如,图1中的120)处的工作流程的方面;在201,应用服务器(例如,图1中的120)从用户设备(例如,图1中的101)接收文件访问请求以访问(例如打开、注释或编辑)存储在远程存储服务器(例如,参见图1中的110)处的数据文件。如结合图1中的108所论述的,文件访问请求包括数据文件标识符、存储服务器标识符、数据文件类型、用户设备标识符等。文件访问请求能够采取在浏览器页面的HTML源代码的结构标签内的HTTP POST请求的形式。在202,应用服务器能够可选地识别和启动相关应用来打开相应的数据文件,例如,基于包括在文件访问请求中的数据文件的文件类型。当文件访问请求还包括打开数据文件的应用标识符,例如用户已经右键点击数据文件图标来选择打开该文件的应用,并且所选择的应用的应用标识符包含在文件访问请求中时,应用服务器能够直接启动该应用。在203,应用服务器能够在数据存储(例如,数据库)中识别出缓存的数据文件,并且询问数据文件的缓存版本是否先前已经被保存在数据库中。在204,如果存在数据文件的缓存版本,则应用服务器从数据文件的缓存版本的元数据中检索版本值(例如,数字),并且将版本值包括到对元数据和内容的请求中以发送到远程存储服务器。版本值在下面结合图4更详细地描述。如果不存在缓存版本,则元数据和内容请求包括识别应用服务器上不存在缓存版本的指示符。在一种实现中,应用服务器能够在元数据和内容请求中可选地包括传递参数。传递参数能够是被配置为真或假的布尔值(Boolean value),其用于指示如果在应用服务器处的数据文件的缓存版本不是最新版本,则远程存储服务器是否应该向应用服务器提供数据文件的最新版本的内容。例如,应用可以通过从远程服务器请求数据文件的最新元数据来周期性地刷新数据文件的缓存版本的元数据,但是可以不需要在每次刷新元数据时都请求数据文件的最新内容,以免服务器之间的数据流量过大。在这种情况下,应用服务器可以在元数据和内容请求中设置传递参数,以指示不需要来自远程存储服务器的数据文件的最新内容。
在204,除了获得数据文件的缓存版本的版本值之外,应用服务器可选地在与数据文件的缓存版本相关联的元数据中检索散列,或者基于缓存版本的内容生成散列。散列然后可选地与缓存版本的版本值一起包括在元数据和内容请求中,以经由API发送到远程存储服务器。
在205,应用服务器从存储服务器接收消息,验证应用服务器上的缓存版本是否是数据文件的最新版本。存储服务器确定元数据和内容请求中包括的版本值是否反映了在存储服务器处的数据文件的最新版本。例如,存储服务器用包括各数据文件的版本信息的元数据来维护数据文件的数据存储(例如,数据库),并且能够基于元数据和内容请求中包括的数据文件标识符来形成对所需数据文件的搜索以识别数据文件,并继而检索与数据文件相关联的元数据。另外,如果缓存版本的散列已经被可选地包括在元数据和内容请求中(在204),则存储服务器能够既获得版本值又获得缓存版本的散列,并将接收到的版本值和接收到的散列这两者与存储服务器中数据文件的最新版本相关联的版本值和散列进行比较。当比较显示数据文件的最新版本具有不同的版本值,但与缓存版本具有相同的散列时,存储服务器可以不需要将数据文件的内容发送到应用服务器,因为数据文件的内容没有从缓存版本更改。
当缓存版本是数据文件的最新版本时,在206,应用服务器能够可选地从存储服务器接收不需要更新版本的确认消息。确认消息也可以包括数据文件的元数据,使得应用服务器能够保持元数据更新。在210,应用服务器能够经由用户界面(例如,图1中的文件存储UI 105)向用户设备提供数据文件的缓存版本。否则,如果元数据和内容请求中的缓存版本不是数据文件的最新版本,或者应用服务器上根本不存在数据文件的缓存版本,则应用服务器在207从存储服务器接收数据文件的最新版本的元数据和内容。具体而言,当元数据和内容请求包括基于缓存版本的内容生成的散列时,存储服务器能够可选地验证接收到的散列是否和与最新版本相关联的散列相同。如果两个散列匹配,则存储服务器不需要将最新版本的内容发送给应用服务器。应用服务器接收最新版本的元数据以及将缓存版本识别为具有最新内容的可选消息。如果两个散列不匹配,则应用服务器接收最新的内容和元数据,例如如在207处描述的。在一种实现中,存储服务器读取元数据和内容请求中的传递参数,以确定如果在应用服务器处数据文件的缓存版本不是最新版本,则是否将数据文件的最新版本的内容发送给应用服务器。
在207,数据文件的元数据和内容能够在单个消息或多部分消息中发送到应用服务器。例如,数据文件的内容能够作为数据文件的副本从存储服务器发送,并且文件的元数据能够经由嵌入在消息中的URL发送。在另一个示例中,应用能够接收包括对于在存储服务器中存储的数据文件的最新版本的预定义链接的消息。
在209,应用服务器在209用所接收的版本覆盖应用服务器上数据文件的任何先前缓存的版本。然后,应用服务器能够以例如在206所描述的类似的方式,经由用户界面向用户设备提供新缓存的版本。
图3根据本文中描述的一些实施例提供了示例流程图300,其示出了经由API(例如,图1中的130)从用户设备在远程存储服务器中创建新的数据文件的方面。应用服务器303(与图1中的120类似)能够对远程存储服务器(类似于图中的110)发送HTTP动作请求例如打开现有文件、创建新文件、保存文件更改等,以调取(invoke)要对用户设备处用户界面中的文件执行的相关操作。在305,在用户设备(例如,图1中的101)处实例化的用户界面,例如浏览器301,能够发送用户请求以在远程存储服务器302处创建文件。创建文件请求包括文件类型、文件名称、应用标识符(用于创建文件)、在存储服务器中指示所创建的文件将被存储在何处的文件夹名称和目录等。创建文件请求能够包含HTTP POST请求,其能够采用类似于“create(POSTfiles/create)”的形式在创建文件请求所指示的文件夹中创建新文件。
在306,远程存储服务器302能够可选地创建文件标识符,并且潜在地在创建新文件时对文件设置锁定状态。锁定状态给予实体(例如,应用服务器303)独占许可,在例如5分钟、10分钟、15分钟等的一段时间内创建文件、访问文件或将文件内容保存到存储服务器302。存储服务器302阻止来自任何其他授权实体对相同的锁定文件创建、打开或保存更改的任何试图操作。其他授权实体包括但不限于,被授权编辑数据文件的用户、被授权编辑数据文件的应用、被授权编辑数据文件的存储服务器的任何远程用户界面,等等。
在306,存储服务器302也向浏览器301发送远程访问令牌(也被称为“第三方访问令牌”(TPAT))。TPAT由远程存储服务器生成,具有到期时间戳,其使得实体(例如,用户等)在到期时间戳之前访问特定文件,例如要创建的文件。TPAT也能够授权用户对特定文件和文件夹元数据的访问。
在307,以HTTP POST请求的形式的文件创建请求被发送到应用服务器303。文件创建请求在浏览器302的显示页面的HTML源代码的结构标签(例如,<iframe>标签)内生成,并且包括浏览器301在306接收的TPAT。如果浏览器301从应用服务器303接收到包括令牌的预先请求,授权浏览器301访问将被用于创建文件的特定应用,则浏览器301能够可选地交换TPAT的令牌。
在一些实现中,用户能够以用户凭证登录到应用服务器303,并且浏览器301能够在307将这样的用户凭证包括到HTTP POST请求中,以供应用服务器303鉴权用户。用户也能够经由浏览器301登录到存储服务器302中,使得存储服务器302能够确定用户是否被授权在存储服务器302处创建数据文件或打开数据文件。
在308,应用服务器303以HTTP GET调用“get(GET files/filesId)”的形式向远程存储服务器302发送元数据和内容请求,以获取文件或文件夹的元数据和内容。在309,元数据和内容请求能够包括文件标识符、文件名称、文件的内容或版本在应用服务器上尚不存在(如新创建的文件)的指示符等等。响应于在310没有内容的GET调用,远程存储服务器302能够继而在消息中返回新创建的文件的元数据。
在311,应用服务器303创建新的数据文件,例如文档。新创建的文档能够显示在文件存储UI中。所创建的文档能够显示在由307中的文件访问请求所指定的结构标签(例如,<iframe>标签)所限定的区域内。新创建的文档能够被编辑。在312,应用服务器303能够将缓存版本的最新版本值周期性地上传到远程存储服务器302,例如每两分钟等。能够采取类似于“upload(POST files/fileId/blob)”的形式的HTTPPOST消息来上传文件的副本,其中“blob”参数是应用服务器303采用的与存储服务器302进行通信的web API。当创建新文件标识符(例如,在306)时,在312使用POST消息“uploadCopy(POST files/fileId/copy))”将文件的副本上传到存储服务器。副本能够可选地与通过TPAT指定的能访问该文件的用户和/或实体的值共享。存储服务器对POST调用的响应含有用于打开新文件的统一资源定位符(URL),如在313进一步论述的。
在313,远程存储服务器302能够可选地将最新上传的版本返回给应用服务器303。响应于312的上传的响应消息从远程存储服务器302发送到应用服务器303。响应消息含有新创建的文件的版本值和校验和。
应用服务器303被配置为周期性地、间歇地或者不断地用存储服务器302更新文件信息,以便应用服务器303维护数据文件的最新元数据和内容。在314,应用服务器303能够周期性地使用HTTP GET调用以从远程存储服务器302例如每五分钟等获取文件的元数据。HTTP GET调用能够采用类似于“get(GET files/fileId)”的形式,其被配置为获取文件元数据或内容。远程存储服务器302能够可选地在315返回元数据,例如,经由HTTP PUT消息“updateMetadata(PUT files/fileId)”。在316,当数据文件在应用服务器303处关闭时,如果在306创建文件标识符时数据文件潜在地被锁定,则应用服务器能够通过发送HTTP PUT消息“(PUT files/fileId/close)”来通知远程存储服务器302,存储服务器能够在317解除数据文件的锁定。
图4根据本文中所描述的一些实施例提供了示例流程图400,示出了打开由远程存储服务器存储的数据文件以供用户设备经由API(例如,图1中的130)观看、注释或编辑的方面。在401,在用户设备(例如,图1中的101)处实例化的用户界面,例如浏览器301,发送文件访问请求以在远程存储服务器302处打开文件。用户请求能够包括数据文件标识符、存储服务器标识符、数据文件的类型、用户标识符、用户设备标识符等。在402,远程存储服务器302能够基于用户标识符来检查访问鉴权,例如通过验证用户标识符是否在用户有权访问相应数据文件的与数据文件相关联的访问控制列表上。
在402,存储服务器302然后检查数据文件的元数据以验证另一个实体是否具有对数据文件的锁定。例如,锁定状态是在“locked_for_edit”字段的文件元数据中指定的。如果文件尚未被另一个实体锁定,则存储服务器对应用服务器303锁定文件。当文件被另一个实体锁定时,文件仍然可以打开以供查看(在浏览器301中或者用于预览或下载)。如果应用服务器303不具有对文件的锁定,则应用服务器将向用户显示只读视图,并解释该文件正被另一个实体(例如,另一个用户或另一个应用)编辑。对从应用服务器303发送到存储服务器302的文件的任何请求都能够将锁定重置一段时间(例如,5分钟、15分钟等)。应用服务器303能够周期性地调用存储服务器302,例如每5分钟等,以获取更新的元数据并保持锁定。在一个实施例中,如果请求(例如,将在404论述的元数据和内容请求)更新元数据在三次尝试之后失败,则应用服务器303能够经由浏览器301向用户显示错误消息。如果应用服务器303在一段时间(例如,15分钟等)内未能向存储服务器302作出任何元数据或内容请求,则锁定可能丢失。如果对文件的锁定丢失,但是随后接收到对同一文件的文件访问请求,则存储服务器302能够尝试向应用服务器303重新发出锁定。如果因为另一个实体已经持有对同一的文件的锁定而不能再次发出锁定,则应用服务器303切换到文件的只读模式。
在402,存储服务器302也以与图3中的306所描述的类似的方式,将TPAT发送回浏览器301。
在403,生成文件访问请求。文件访问请求能够是在浏览器302的显示页面的HTML源代码的结构标签内生成的HTTP POST请求,并且HTTP POST请求包括在402从存储服务器接收的用于文件的TPAT。文件访问请求能够包括数据文件标识符、存储服务器标识符、数据文件的类型、用户标识符、用户设备标识符、令牌(TPAT)等,如在图2中的201所论述的。
在404,应用服务器303能够将元数据和内容请求发送到远程存储服务器302以获取文件或文件夹的元数据和内容。元数据和内容请求能够是HTTP GET调用。GET调用包括在应用服务器303处存储在缓存中的数据文件的版本信息(例如,版本值)。在一种实现中,应用服务器303维护数据表,数据表将具有与应用服务器303兼容的格式并被应用服务器303使用的内部版本值映射到与远程存储服务器302或其他实体兼容并被其使用的外部版本值。应用服务器303能够从与数据文件的缓存版本相关联存储的元数据中识别或检索内部版本值,然后能够将内部版本值转换为对应的外部版本值。GET调用能够将数据文件的外部版本值作为当前版本参数包括在内,使得远程存储服务器302能够读取当前版本参数并获得与在应用服务器303处缓存的数据文件缓存版本相关联的版本值。GET调用还能够可选地包括从缓存版本的内容生成的散列,如结合图2中的204所论述的。在一种实现中,如果没有存储在缓存中的数据文件,则不存在缓存版本的指示符被包括在元数据和内容请求中,例如类似于图3中的309。在一种实现中,元数据和内容请求可选地包括传递参数,如果应用服务器处数据文件的缓存版本不是最新版本,传递参数指定存储服务器302是否应该向应用服务器提供数据文件的最新版本的内容。在一种实现中,应用服务器能够可选地在元数据和内容请求中请求数据文件的特定版本,该版本可以不是最新版本,并且能够在元数据和内容请求中包括所请求的特定版本的版本值。例如,元数据和内容请求能够可选地包括“请求版本”参数,其能够用版本值配置以请求数据文件的特定版本。当元数据和内容请求不包括这样的请求版本参数时,默认情况下,存储在远程存储服务器302上的数据文件的最新版本被设置为应用服务器的请求版本。
在405,远程存储服务器302检查应用服务器303是否具有数据文件的最新版本,例如,如图2中在205所论述的。在一种实现中,如上所讨论的,应用服务器303可以不请求最新版本的内容,并且可以通过在元数据和内容请求中配置“请求版本”参数来请求数据文件的特定版本。在405,在一种实现中,远程存储服务器302还检查在元数据和内容请求中是否存在指示该请求是针对特定版本的“请求版本”参数,然后验证存储在应用服务器303处的缓存版本的版本值是否等同于“请求版本”参数中所请求的特定版本值。在406,远程存储服务器302将文件的元数据返回给应用服务器303。如果应用服务器不具有数据文件的内容的最新版本,则远程存储服务器302还检查元数据和内容请求中的传递参数,以确定是否将最新版本发送到应用服务器303。如果设置了让远程存储服务器302提供最新版本的传递参数,则远程存储服务器302将数据文件的最新版本的内容发送给应用服务器303。在一种实现中,如果请求是针对特定版本的,则远程存储服务器302将数据文件的特定版本的内容发送给应用服务器303。远程存储服务器302能够在406向应用服务器303发送HTTP PUT消息。例如,如在207所讨论的,数据文件的内容能够作为数据文件的副本从存储服务器发送,并且文件的元数据能够经由嵌入在消息中的URL发送。在另一个示例中,应用能够接收包括对于在存储服务器中存储的数据文件的最新版本的预定义链接的消息。
在408,例如,显示数据文件(例如,文档)以供编辑。文档能够显示在由结构标签限定的区域中。
409-414类似于图3中的312-317。例如,在402,数据文件可能已经被另一个实体(例如,另一个用户或另一个应用)锁定,并且应用服务器只能向用户设备打开数据文件的“只读”版本。在这种情况下,另一个实体(例如,另一个用户或另一个应用)能够对数据文件进行更改。在另一个示例中,即使数据文件在402被存储服务器针对某个应用锁定,授权用户也能够经由存储服务器直接对数据文件进行更改。在这种情况下,应用服务器303被配置为周期性地、间歇地或者不断地更新文件信息例如元数据和/或用存储服务器302更新,以便应用服务器303维护数据文件的最新元数据和内容。在409,应用服务器303能够将文件的最新版本周期性地上传到远程存储服务器302,例如每两分钟等。在410,远程存储服务器302能够可选地将最新上传的版本返回给应用服务器303。在411处,应用服务器303周期性地使用HTTP GET调用以从远程存储服务器302例如每五分钟等获取文件的元数据。在412,远程存储服务器302可选地返回元数据。在413,当数据文件在应用服务器303处关闭时,应用服务器能够通过发送HTTPPUT消息“(PUT files/fileId/close)”来通知远程存储服务器,其能够在414解除数据文件的锁定。
如接合图3-4所论述的,API(例如,图1中的130)能够采取的创建或打开文件的HTTP动作也能够应用于文件夹,例如创建新文件夹作为给定文件夹的子文件夹的POST消息能够采取类似于“create(POST folders/folderId/create)”的形式,并且能够调取GET消息“getMetadata(GET folders/folderId)”来获得文件夹元数据,等等。当应用服务器(图1中的120或图3-4中的303)对存储服务器(图1中的110或图3-4中的302)中的文件夹操作时,与文件夹相关联的某些元数据属性,例如类型(总是文件夹)、文件夹ID、文件夹名称,文件夹是否加星标、和父文件夹,能够被锁定以免被更改。
除了上述用于创建或打开文件、更新文件的元数据等的HTTP消息,API(例如,图1中的130)还能够调取由API所采用的GET列表作为附件(add-on),来搜索存储服务器上的文件或文件夹。经由API生成的用于搜索查询的示例参数能够包括语料库(默认“用户”)、排序(默认“名称”)、页面大小、页面令牌等。响应于GET列表,应用服务器不是接收HTTP消息中的完整内容或元数据,而是从存储服务器接收属性,例如文件标识符列表、文件表、用于文件下一页的令牌、项目(例如文件或文件夹的种类、ID、名称等),等等。
图5是根据说明性实施例,用于执行本文中描述的任何处理的计算设备、例如图1中实现的系统的任何组件的框图。这些系统的每一个组件可以在一个或更多个计算设备500上实现。在某些方面中,这些系统的多个组件可以被包括在一个计算设备500内。在某些实现中,组件和存储设备可以在数个计算设备500中实现。
计算设备500包括至少一个通信接口单元、输入/输出控制器510、系统存储器以及一个或更多个数据存储设备。系统存储器包括至少一个随机存取存储器(RAM 502)和至少一个只读存储器(ROM 504)。所有这些元件都与中央处理单元(CPU 506)通信以促进计算设备500的操作。计算设备500可以用许多不同的方式来配置。例如,计算设备500可以是传统的独立计算机,或者,可供选择地,计算设备500的功能可以分布在多个计算机系统和架构中。可供选择地,计算机系统可以被虚拟化以提供多个计算设备500的功能。在图5中,计算设备500经由网络或本地网络链接到其他服务器或系统。
计算设备500可以被配置成分布式架构,其中数据库和处理器被容纳在分离的单元或位置中。一些单元执行主处理功能,并且在最低限度包含通用控制器或处理器以及系统存储器。在分布式架构实现中,这些单元中的每一个可以经由通信接口单元508与通信集线器或端口(未显示)相连,通信集线器或端口用作与其他服务器、客户端或用户计算机和其他相关设备的主通信链路。通信集线器或端口本身可以具有极少的处理能力,主要用作通信路由器。各种通信协议可以是系统的一部分。
CPU 506包括处理器,例如一个或更多个常规微处理器以及一个或多个辅助协处理器例如用于从CPU 506卸载工作负载的数学协处理器。CPU 506与通信接口单元508和输入/输出控制器510通信,CPU 506通过它们与其他设备例如其他服务器、用户终端、或设备通信。通信接口单元508和输入/输出控制器510可以包括用于与例如其他处理器、服务器或客户终端同时通信的多个通信信道。
CPU 506也与数据存储设备通信。数据存储设备可以包括磁性、光学或半导体存储器的适当组合,并且可以包括,例如,RAM 502、ROM 504、闪存驱动器、光盘例如压缩光盘或硬盘或驱动器。CPU 506和数据存储设备每个可以,例如,全部位于单个计算机或其他计算设备内;或通过通信介质相互连接,通信介质例如USB端口、串行端口电缆、同轴电缆、以太网电缆、电话线、射频收发器或其他类似的无线或有线介质或前述各项的组合。例如,CPU506可以经由通信接口单元508与数据存储设备连接。CPU 506可以被配置为执行一个或更多个特定的处理功能。
数据存储设备可以存储,例如:(i)计算设备500的操作系统512;(ii)一个或更多个应用514(例如,计算机程序代码或计算机程序产品),其适于根据在此描述的系统和方法、特别是根据关于CPU 506详细描述的过程来引导CPU 506;或(iii)数据库516,其适于存储可用来存储程序所需要的信息的信息。
操作系统512和应用514可以例如以压缩的、未编译的和加密的格式被存储,并且可以包括计算机程序代码。程序的指令可以从除数据存储设备以外的计算机可读介质、例如从ROM 504或从RAM 502读取到处理器的主存储器中。虽然程序中的指令序列的执行引起CPU 506执行在本文中描述的过程步骤,但是可以使用硬连线电路来代替用于实现本发明的过程的软件指令或与软件指令结合。因此,所描述的系统和方法不限于硬件和软件的任何特定组合。
可以提供合适的计算机程序代码来执行与执行如本文中的过程相关的一个或更多个功能。程序也可以包括程序元件例如操作系统512、数据库管理系统和允许处理器与计算机外围设备(例如,视频显示器、键盘、计算机鼠标等)经由输入/输出控制器510连接的“设备驱动器”。
在本文中使用的术语“计算机可读介质”是指向计算设备500的处理器(或者本文中描述的设备的任何其他处理器)提供或参与提供指令以供执行的任何非暂态介质。这样的介质可以采取许多形式,包括但不限于,非易失性媒介和易失性媒介。非易失性媒介包括,例如,光盘、磁盘或光磁盘,或集成电路存储器,例如闪速存储器。易失性媒介包括通常构成主存储器的动态随机存取存储器(DRAM)。计算机可读介质的常见形式包括,例如,软盘、软磁盘、硬盘、磁带、任何其他磁性介质、CD-ROM、DVD、任何其他光学介质、穿孔卡、纸质磁带、任何具有孔图案的其他物理介质、RAM、PROM、EPROM或EEPROM(电子可擦除可编程只读存储器)、FLASH-EEPROM、任何其他存储器芯片或存储器盒、或计算机能够读取的任何其他非暂态介质。
各种形式的计算机可读介质可涉及将一个或更多个指令的一个或更多个序列传送到CPU 506(或本文中描述的设备的任何其他处理器)以供执行。例如,指令最初可以被承载在远程计算机(未显示)的磁盘上。远程计算机能够将指令加载到它的动态存储器中,并使用调制解调器通过以太网连接、电缆线或甚至电话线发送指令。计算设备500(例如服务器)本地的通信设备能够在相应的通信线路上接收数据,并将数据放置在处理器的系统总线上。系统总线将数据传送到主存储器,处理器从主存储器检索并执行指令。由主存储器接收到的指令可以可选地在被处理器执行之前或之后存储在存储器中。另外,指令可以作为电、电磁或光信号经由通信端口接收,这些信号是携带各种类型信息的无线通信或数据流的示例性形式。
在附图所示的实现中,本文中所描述的系统和方法的方面可以用许多不同形式的软件、固件和硬件来实现,这将是显而易见的。用于实现与本文中所描述的系统和方法的原理相符的方面的实际软件代码或专用控制硬件不是限制性的。因此,系统和方法的各个方面的操作和行为在没有参考特定软件代码的情况下描述-应当理解的是,本领域普通技术人员基于本文中的描述将能够设计软件和控制硬件来实现方面。
本说明书中描述的主题的各个方面能够在计算系统中实现,计算系统包括后端组件,例如作为数据服务器,或包括中间件组件,例如应用服务器,或包括前端组件,例如具有图形用户界面或网页浏览器的客户端计算机,通过此用户能够与实现本说明书中描述的主题交互,或一个或更多个这样的后端组件、中间件组件或前端组件的任何组合。系统的组件能够通过任何形式或介质的数字数据通信、例如通信网络互连。通信网络能够包括,例如,个人区域网(PAN)、局域网(LAN)、校园网(CAN)、城域网(MAN)、广域网(WAN)、宽带网络(BBN)、因特网等。此外,通信网络能够包括但不限于,例如以下网络拓扑中的任何一个或更多个,包括总线网络、星形网络、环形网络、网状网络、星形总线网络、树形或分层网络等。通信模块可以是,例如,调制解调器或以太网卡。
如上,计算系统500能够包括客户端和服务器。客户端和服务器通常彼此远离,并通常通过通信网络进行交互。客户端和服务器的关系依靠在各自的电脑上运行并且彼此具有客户端-服务器关系的计算机程序而产生。计算机系统500能够是,例如但不限于,企业服务器或服务器组、一个或更多个台式计算机、一个或更多个膝上型计算机等。计算机系统500也能够嵌入另一个设备中,例如但不限于移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器、视频游戏控制台、和/或电视机顶盒。
尽管本说明书包含许多具体细节,但是这些不应该被解释为对可以要求保护的范围的限制,而是作为主题的特定实现的描述。在本说明书中在分开实现的上下文中描述的某些特征也能够在单个实现中组合实现。相反,在单个实现的上下文中描述的各种特征也能够在多个实现中分开地或以任何合适的子组合来实现。此外,虽然特征可以在上面描述为以某些组合起作用并且甚至最初是按照这样要求保护的,但是来自所要求保护的组合的一个或更多个特征在一些情况下能够从该组合中摘除,并且所要求保护的组合可以涉及子组合或子组合的变体。
虽然在附图中以特定的顺序描述了操作,但是这不应该被理解为要求以所显示的特定顺序或依次顺序执行这样的操作,或者要执行所有示出的操作来达到期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述方面中的各种系统组件的分离不应当被理解为在所有方面中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常能够在单个服务提供中整合在一起或者分包成多个服务提供。
Claims (20)
1.一种用于提供对存储在远程存储服务器处的数据文件的访问的方法,所述方法包含:
在托管多个应用的应用服务器处接收来自用户设备的用于访问存储在远程存储服务器处的数据文件的文件访问请求;
向所述远程存储服务器发送与所述数据文件相关的元数据和内容请求,所述元数据和内容请求包括在所述应用服务器处缓存的所述数据文件的先前缓存版本的版本信息;以及
当所述数据文件的所述先前缓存版本不是所述数据文件的请求版本时:
从所述远程存储服务器接收所述数据文件的所述请求版本的内容,
在所述应用服务器处存储所述请求版本以替换所述先前缓存版本,以及
经由所述应用服务器上的相关应用向所述用户设备呈现所述数据文件的所述请求版本。
2.权利要求1所述的方法,其中所述文件访问请求包括应用标识符以从所述多个应用中启动应用来打开所述数据文件,或者所述应用服务器基于所述文件访问请求中包括的文件类型从所述多个应用中识别特定应用来打开所述数据文件。
3.权利要求1所述的方法,其中所述远程存储服务器独立于所述应用服务器或所述用户设备。
4.权利要求1所述的方法,其中所述元数据和内容请求包括由所述应用服务器发布的证明密钥,并且所述证明密钥的副本先前已经被提供并存储在所述远程存储服务器处,以供所述远程存储服务器通过将来自所述元数据和内容请求的证明密钥与所述证明密钥的先前存储的副本进行比较来验证所述元数据和内容请求发自所述应用服务器。
5.权利要求1所述的方法,其中所述文件访问请求包括由所述远程存储服务器向所述用户设备发布的远程访问令牌,并且所述远程访问令牌授权所述用户设备访问所述数据文件。
6.权利要求1所述的方法,其中所述元数据和内容请求经由根据超文本传输协议(HTTP)操作的应用编程接口(API)从所述应用服务器发送到所述远程存储服务器。
7.权利要求1所述的方法,还包含:
将所述应用服务器处的所述数据文件的先前缓存的版本周期性地上传到所述远程存储服务器;以及
响应于所述周期性上传,当存储服务器确定存在所述数据文件的更新版本时,从所述远程存储服务器周期性地接收所述数据文件的更新版本的内容。
8.权利要求1所述的方法,还包含:
经由HTTP消息向所述远程存储服务器周期性地发送元数据请求;以及
响应于周期性的元数据请求,从所述远程存储服务器周期性地接收与所述数据文件相关联的更新的元数据。
9.权利要求1所述的方法,其中所述用户设备向所述远程存储服务器发送请求以访问所述数据文件,以及
响应于由所述用户设备发送的所述文件访问请求,所述远程存储服务器更改与所述数据文件相关联的元数据参数以指示所述数据文件被锁定。
10.权利要求1所述的方法,其中所述文件访问请求包括在结构标签内生成的HTTPPOST消息,所述结构标签限定在基于浏览器的应用内的显示区域,以及在所述显示区域内呈现所述数据文件的所述请求版本的内容。
11.权利要求1所述的方法,其中所述数据文件的所述请求版本经由基于浏览器的应用或移动应用被作为所述应用服务器上的所述相关应用呈现给所述用户设备。
12.权利要求1所述的方法,其中所述数据文件的所述请求版本的内容经由基于浏览器的应用或移动应用向所述用户设备显示,其中所述最新版本的内容被存储在所述应用服务器处并且无需所述数据文件的所述请求版本下载到所述用户设备。
13.权利要求1所述的方法,还包含:
经由统一资源定位符(URL)从所述远程存储服务器获得API配置信息;以及
基于所述API配置信息配置API以从所述远程存储服务器并经由配置的API接收数据消息。
14.权利要求1所述的方法,还包含:
响应于所述元数据和内容请求,从所述远程存储服务器接收具有嵌入的URL的消息,所述URL提供所述数据文件的元数据。
15.权利要求1所述的方法,还包含:
响应于所述元数据和内容请求,从所述远程存储服务器接收所述数据文件的所述请求版本的副本、或者指向存储在存储服务器中的所述数据文件的最新版本的预定义链接。
16.权利要求1所述的方法,其中所述元数据和内容请求包括当所述数据文件的所述先前缓存版本不是所述请求版本时指示所述远程存储服务器是否要提供所述数据文件的最新版本的内容的参数。
17.权利要求1所述的方法,其中所述元数据和内容请求包括:用所述先前缓存版本的第一版本值配置的第一参数;和用指定所述请求版本的第二版本值配置的第二参数。
18.权利要求1所述的方法,其中所述请求版本在默认情况下是最新版本。
19.一种用于提供对存储在远程存储服务器处的数据文件的访问的系统,所述系统包含:
设置在应用服务器处的存储器,所述存储器存储多个应用和数据文件的先前缓存版本;和
与所述存储器通信耦合的处理器,所述处理器被配置为:
从用户设备接收用于访问存储在所述远程存储服务器处的数据文件的文件访问请求,
向所述远程存储服务器发送与所述数据文件相关的元数据和内容请求,所述元数据和内容请求包括所述数据文件的所述先前缓存版本的版本信息;并且
当所述数据文件的所述先前缓存版本不是所述数据文件的请求版本时:
从所述远程存储服务器接收所述数据文件的所述请求版本的内容,
在所述应用服务器处存储所述请求版本以替换所述先前缓存版本,以及
经由所述应用服务器上的相关应用将所述数据文件的所述请求版本呈现给所述用户设备。
20.一种存储指令的非暂态计算机可读存储介质,所述指令用于提供对存储在远程存储服务器处的数据文件的访问,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括:
在托管多个应用的应用服务器处接收来自用户设备的用于访问存储在所述远程存储服务器处的数据文件的文件访问请求;
向所述远程存储服务器发送与所述数据文件相关的元数据和内容请求,所述元数据和内容请求包括在所述应用服务器处缓存的所述数据文件的所述先前缓存版本的版本信息;以及
当所述数据文件的所述先前缓存版本不是所述数据文件的请求版本时:
从所述远程存储服务器接收所述数据文件的所述请求版本的内容,
在所述应用服务器处存储所述请求版本以替换所述先前缓存版本,以及
经由所述应用服务器上的相关应用向所述用户设备呈现所述数据文件的所述请求版本。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/433,815 | 2017-02-15 | ||
US15/433,815 US10387383B2 (en) | 2017-02-15 | 2017-02-15 | Systems and methods for providing access to a data file stored at a data storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108427703A true CN108427703A (zh) | 2018-08-21 |
Family
ID=60580099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711237577.4A Pending CN108427703A (zh) | 2017-02-15 | 2017-11-30 | 提供对存储在数据存储系统的数据文件访问的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10387383B2 (zh) |
CN (1) | CN108427703A (zh) |
DE (2) | DE102017125428A1 (zh) |
GB (2) | GB2596422B (zh) |
WO (1) | WO2018151771A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240997A (zh) * | 2018-08-24 | 2019-01-18 | 华强方特(深圳)电影有限公司 | 一种文件的上传保存方法、系统和客户端 |
CN110515895A (zh) * | 2019-08-30 | 2019-11-29 | 弭迺彬 | 大数据存储系统中对数据文件进行关联存储的方法及系统 |
CN111241455A (zh) * | 2020-01-22 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 数据处理装置、计算机设备及存储介质 |
CN112948860A (zh) * | 2021-03-05 | 2021-06-11 | 华控清交信息科技(北京)有限公司 | 数据处理方法、相关节点及介质 |
CN113424255A (zh) * | 2019-02-12 | 2021-09-21 | 谷歌有限责任公司 | 引导车辆客户端设备使用设备上的功能 |
CN112948860B (zh) * | 2021-03-05 | 2024-05-31 | 华控清交信息科技(北京)有限公司 | 数据处理方法、相关节点及介质 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10671570B2 (en) | 2017-02-01 | 2020-06-02 | Open Text Sa Ulc | Web application open platform interface (WOPI) server architecture and applications for distributed network computing environments |
US11023553B2 (en) | 2017-04-04 | 2021-06-01 | Microsoft Technology Licensing, Llc | Identifying and managing trusted sources in online and networked content for professional knowledge exchange |
US11829583B2 (en) * | 2017-07-07 | 2023-11-28 | Open Text Sa Ulc | Systems and methods for content sharing through external systems |
US10652308B2 (en) * | 2017-11-08 | 2020-05-12 | International Business Machines Corporation | Cognitive storage management for a mobile computing device |
US10664332B2 (en) * | 2018-05-25 | 2020-05-26 | Microsoft Technology Licensing, Llc | Application programming interfaces for identifying, using, and managing trusted sources in online and networked content |
US11240127B1 (en) * | 2019-03-01 | 2022-02-01 | Pivotal Software, Inc. | Indicator tools |
EP4064109B1 (en) * | 2019-05-06 | 2023-11-29 | Google LLC | Secure communication in mobile digital pages |
US11532013B2 (en) * | 2019-06-17 | 2022-12-20 | Optimizely, Inc. | Optimized simultaneous use of content experimentation and content caching |
US11875376B2 (en) | 2019-06-17 | 2024-01-16 | Optimizely North America Inc. | Minimizing impact of experimental content delivery on computing devices |
US11216511B1 (en) | 2019-07-16 | 2022-01-04 | Splunk Inc. | Executing a child query based on results of a parent query |
US11386158B1 (en) | 2019-07-16 | 2022-07-12 | Splunk Inc. | Recommending query parameters based on tenant information |
US11269871B1 (en) * | 2019-07-16 | 2022-03-08 | Splunk Inc. | Displaying multiple editable queries in a graphical user interface |
US11113294B1 (en) | 2019-07-16 | 2021-09-07 | Splunk Inc. | Recommending query templates during query formation |
US11636128B1 (en) | 2019-07-16 | 2023-04-25 | Splunk Inc. | Displaying query results from a previous query when accessing a panel |
US11263268B1 (en) | 2019-07-16 | 2022-03-01 | Splunk Inc. | Recommending query parameters based on the results of automatically generated queries |
US11604799B1 (en) | 2019-07-16 | 2023-03-14 | Splunk Inc. | Performing panel-related actions based on user interaction with a graphical user interface |
US11644955B1 (en) | 2019-07-16 | 2023-05-09 | Splunk Inc. | Assigning a global parameter to queries in a graphical user interface |
US11108920B2 (en) | 2019-10-03 | 2021-08-31 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10924615B1 (en) | 2019-10-03 | 2021-02-16 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10951779B1 (en) | 2019-10-03 | 2021-03-16 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10708358B1 (en) | 2019-10-03 | 2020-07-07 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10827082B1 (en) | 2019-10-03 | 2020-11-03 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10848628B1 (en) * | 2019-10-03 | 2020-11-24 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US10812667B1 (en) | 2019-10-03 | 2020-10-20 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US11128765B2 (en) | 2019-10-03 | 2021-09-21 | Starfish Technologies LLC | Cloud-based scanning systems and remote image processing methods |
US20210157954A1 (en) * | 2019-11-27 | 2021-05-27 | Green Data Technology Inc. | Authenticating data for storage using a data storage system and distributed electronic ledger system |
CN111814196B (zh) * | 2020-09-04 | 2021-01-05 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置及设备 |
CN111932426B (zh) * | 2020-09-15 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 一种基于可信硬件的身份管理方法、装置及设备 |
US11449420B2 (en) | 2020-10-20 | 2022-09-20 | Citrix Systems, Inc. | Content caching |
US11537786B2 (en) * | 2020-11-16 | 2022-12-27 | Dropbox, Inc. | Generating fillable documents and fillable templates in a collaborative environment |
CN112350873B (zh) * | 2020-11-25 | 2022-10-25 | 中国工商银行股份有限公司 | 应用服务信息处理方法、应用服务调用方法、装置及系统 |
US11856110B2 (en) * | 2021-01-21 | 2023-12-26 | GM Global Technology Operations LLC | Method for delegated key sharing for digital car key system |
US11604789B1 (en) | 2021-04-30 | 2023-03-14 | Splunk Inc. | Bi-directional query updates in a user interface |
CN115378930A (zh) * | 2021-05-17 | 2022-11-22 | 成都鼎桥通信技术有限公司 | 文件分发方法及装置 |
US11934545B2 (en) | 2021-06-22 | 2024-03-19 | Fortra, Llc | Secure way to authenticate from file protocol while handling third party cookies and browser inconsistencies |
US11947993B2 (en) * | 2021-06-22 | 2024-04-02 | International Business Machines Corporation | Cooperative input/output of address modes for interoperating programs |
US11899670B1 (en) | 2022-01-06 | 2024-02-13 | Splunk Inc. | Generation of queries for execution at a separate system |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001033381A1 (en) * | 1999-11-04 | 2001-05-10 | Xdrive, Inc | Shared internet storage resource, user interface system, and method |
CN1754155A (zh) * | 2003-01-17 | 2006-03-29 | 泰斯特网络公司 | 使用分布式文件系统进行存储式高速缓存的方法和系统 |
CN102436441A (zh) * | 2010-10-26 | 2012-05-02 | 微软公司 | 同步在线文档编辑 |
US20140081933A1 (en) * | 2008-09-30 | 2014-03-20 | Google Inc. | Preserving File Metadata During Atomic Save Operations |
CN103931156A (zh) * | 2011-05-14 | 2014-07-16 | 比特卡萨公司 | 具有用户不可知加密文件的服务器侧去重的云文件系统 |
CN104239509A (zh) * | 2014-09-15 | 2014-12-24 | 国家电网公司 | 多版本gis切片服务系统 |
CN104506647A (zh) * | 2014-12-31 | 2015-04-08 | 北京奇艺世纪科技有限公司 | 一种数据存储系统及存储和访问方法 |
CN106021381A (zh) * | 2016-05-11 | 2016-10-12 | 北京搜狐新媒体信息技术有限公司 | 一种云存储服务系统的数据访问/存储方法及装置 |
CN106293701A (zh) * | 2016-07-26 | 2017-01-04 | 浪潮软件股份有限公司 | 基于云端服务器的多租户版本管理的应用引擎设计方法 |
CN106341371A (zh) * | 2015-07-08 | 2017-01-18 | 杭州奕锐电子有限公司 | 云存储数据的加密方法及其系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100185614A1 (en) | 1999-11-04 | 2010-07-22 | O'brien Brett | Shared Internet storage resource, user interface system, and method |
WO2001067304A1 (en) | 2000-03-07 | 2001-09-13 | Hotlens.Com Inc. | Server-side web browsing and multiple lens system, method and apparatus |
US7765196B2 (en) * | 2003-06-23 | 2010-07-27 | Dell Products L.P. | Method and apparatus for web cache using database triggers |
US8010670B2 (en) | 2003-12-23 | 2011-08-30 | Slipstream Data Inc. | Meta-data based method for local cache utilization |
US20060156353A1 (en) * | 2004-12-28 | 2006-07-13 | Elmar Dorner | Remotely-accessible wireless LAN server |
US20070027929A1 (en) * | 2005-08-01 | 2007-02-01 | Whelan Gary J | System, method, and/or computer program product for a file system interface |
TWI476610B (zh) * | 2008-04-29 | 2015-03-11 | Maxiscale Inc | 同級間冗餘檔案伺服器系統及方法 |
US20110029896A1 (en) | 2009-07-31 | 2011-02-03 | Action Star Enterprise Co., Ltd. | System and method for controlling multiple computers |
US20130024910A1 (en) * | 2011-07-22 | 2013-01-24 | Salesforce.Com, Inc. | Computer implemented methods and apparatus for integrating a social network information feed with a network communications application |
US20130080603A1 (en) | 2011-09-27 | 2013-03-28 | Microsoft Corporation | Fault Tolerant External Application Server |
US20130238552A1 (en) * | 2012-03-12 | 2013-09-12 | Joseph Saib | Systems and methods for synchronizing files in a networked communication system |
US20140007189A1 (en) * | 2012-06-28 | 2014-01-02 | International Business Machines Corporation | Secure access to shared storage resources |
US9106721B2 (en) * | 2012-10-02 | 2015-08-11 | Nextbit Systems | Application state synchronization across multiple devices |
WO2014102526A1 (en) * | 2012-12-31 | 2014-07-03 | British Telecommunications Public Limited Company | Processing device and method of operation thereof |
US9549036B2 (en) * | 2013-11-20 | 2017-01-17 | Empire Technology Development Llc | Network injected storage redirection for embedded applications |
US20160085765A1 (en) * | 2014-09-22 | 2016-03-24 | Amazon Technologies, Inc. | Computing environment selection techniques |
-
2017
- 2017-02-15 US US15/433,815 patent/US10387383B2/en active Active
- 2017-10-27 WO PCT/US2017/058889 patent/WO2018151771A1/en active Application Filing
- 2017-10-30 DE DE102017125428.5A patent/DE102017125428A1/de active Pending
- 2017-10-30 DE DE202017106594.4U patent/DE202017106594U1/de active Active
- 2017-10-31 GB GB2109387.7A patent/GB2596422B/en active Active
- 2017-10-31 GB GB1717949.0A patent/GB2559835B/en active Active
- 2017-11-30 CN CN201711237577.4A patent/CN108427703A/zh active Pending
-
2019
- 2019-08-19 US US16/544,817 patent/US11232080B2/en active Active
-
2022
- 2022-01-24 US US17/582,467 patent/US20220147494A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001033381A1 (en) * | 1999-11-04 | 2001-05-10 | Xdrive, Inc | Shared internet storage resource, user interface system, and method |
CN1754155A (zh) * | 2003-01-17 | 2006-03-29 | 泰斯特网络公司 | 使用分布式文件系统进行存储式高速缓存的方法和系统 |
US20140081933A1 (en) * | 2008-09-30 | 2014-03-20 | Google Inc. | Preserving File Metadata During Atomic Save Operations |
CN102436441A (zh) * | 2010-10-26 | 2012-05-02 | 微软公司 | 同步在线文档编辑 |
CN103931156A (zh) * | 2011-05-14 | 2014-07-16 | 比特卡萨公司 | 具有用户不可知加密文件的服务器侧去重的云文件系统 |
CN104239509A (zh) * | 2014-09-15 | 2014-12-24 | 国家电网公司 | 多版本gis切片服务系统 |
CN104506647A (zh) * | 2014-12-31 | 2015-04-08 | 北京奇艺世纪科技有限公司 | 一种数据存储系统及存储和访问方法 |
CN106341371A (zh) * | 2015-07-08 | 2017-01-18 | 杭州奕锐电子有限公司 | 云存储数据的加密方法及其系统 |
CN106021381A (zh) * | 2016-05-11 | 2016-10-12 | 北京搜狐新媒体信息技术有限公司 | 一种云存储服务系统的数据访问/存储方法及装置 |
CN106293701A (zh) * | 2016-07-26 | 2017-01-04 | 浪潮软件股份有限公司 | 基于云端服务器的多租户版本管理的应用引擎设计方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240997A (zh) * | 2018-08-24 | 2019-01-18 | 华强方特(深圳)电影有限公司 | 一种文件的上传保存方法、系统和客户端 |
CN113424255A (zh) * | 2019-02-12 | 2021-09-21 | 谷歌有限责任公司 | 引导车辆客户端设备使用设备上的功能 |
CN110515895A (zh) * | 2019-08-30 | 2019-11-29 | 弭迺彬 | 大数据存储系统中对数据文件进行关联存储的方法及系统 |
CN110515895B (zh) * | 2019-08-30 | 2023-06-23 | 北京燕山电子设备厂 | 大数据存储系统中对数据文件进行关联存储的方法及系统 |
CN111241455A (zh) * | 2020-01-22 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 数据处理装置、计算机设备及存储介质 |
CN111241455B (zh) * | 2020-01-22 | 2023-08-25 | 抖音视界有限公司 | 数据处理装置、计算机设备及存储介质 |
CN112948860A (zh) * | 2021-03-05 | 2021-06-11 | 华控清交信息科技(北京)有限公司 | 数据处理方法、相关节点及介质 |
CN112948860B (zh) * | 2021-03-05 | 2024-05-31 | 华控清交信息科技(北京)有限公司 | 数据处理方法、相关节点及介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102017125428A1 (de) | 2018-08-16 |
US10387383B2 (en) | 2019-08-20 |
US11232080B2 (en) | 2022-01-25 |
GB201717949D0 (en) | 2017-12-13 |
DE202017106594U1 (de) | 2018-05-18 |
US20180232394A1 (en) | 2018-08-16 |
GB202109387D0 (en) | 2021-08-11 |
WO2018151771A1 (en) | 2018-08-23 |
GB2596422B (en) | 2022-04-13 |
US20220147494A1 (en) | 2022-05-12 |
GB2559835B (en) | 2021-12-15 |
US20190370228A1 (en) | 2019-12-05 |
GB2559835A (en) | 2018-08-22 |
GB2596422A (en) | 2021-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427703A (zh) | 提供对存储在数据存储系统的数据文件访问的系统和方法 | |
US9298747B2 (en) | Deployable, consistent, and extensible computing environment platform | |
US8965958B2 (en) | File fetch from a remote client device | |
KR101031929B1 (ko) | 비통합 툴에 대한 통합 아키텍처 | |
US7624143B2 (en) | Methods, apparatus, and program products for utilizing contextual property metadata in networked computing environments | |
CN101203832B (zh) | 提供内容聚合平台的系统和方法 | |
TWI376611B (en) | Network and method for storing metadata in a network data repository, network data repository for storing metadata, and network device for handling metadata | |
US20090248695A1 (en) | Online and offline applications | |
US20090248737A1 (en) | Computing environment representation | |
CN101802808B (zh) | 从脚本和其他编程环境访问设备主存的服务 | |
KR20080028869A (ko) | 콘텐트 신디케이션 플랫폼 | |
JP2019532408A (ja) | メッセージングサービス向けのコンテンツ管理機能 | |
KR20110008334A (ko) | 네트워크 기반 컨버지드 주소록을 위한 시스템 및 방법 | |
CN101681320A (zh) | 内容目录服务和控制点之间的内容同步 | |
US20130054525A1 (en) | Using amqp for replication | |
US6810363B2 (en) | Methods, apparatus, and program products for analyzing context in a networked computing environment | |
KR20180088583A (ko) | 정보 처리 시스템, 정보 처리 시스템의 제어방법 및 프로그램 | |
US20050289642A1 (en) | Using web services for online permissions | |
US9241024B2 (en) | File system interface to web and network services | |
US20060129522A1 (en) | Subscription service for access to distributed cell-oriented data systems | |
Saint-Andre et al. | User Avatar | |
CN116886726A (zh) | 一种基于区块链系统的服务访问方法和区块链节点 | |
Yuan | Cloud Services Provider | |
Chanbin et al. | Web services integration method | |
WSDL | UDDI and beyond |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |