从浏览器打开本地应用的制作方法

文档序号:11450504阅读:758来源:国知局
从浏览器打开本地应用的制造方法与工艺

相关申请的交叉引用

本申请要求2014年11月5日提交的美国临时专利申请序列号no.62/075,825以及2014年11月18日提交的美国专利申请序列号no.14/547,086的优先权,将其全部内容通过引用合并入本文。

大体上,本公开涉及使用浏览器来通过本地应用打开本地文件。



背景技术:

基于云的文档存储系统向用户提供很多优点,包括从多个设备访问文件、多个用户间的协作、以及在本地设备与服务器之间的文件的自动同步。通常,使用两个方法中的一个来访问云中的文件。在一个方法中,将文件存储在本地设备的文件系统上并且与服务器同步。在这种情况下,使用本地设备的操作系统和本地安装的应用在本地访问文件。但是,唯一的访问限制是与操作系统相关联的访问限制。此外,只能使用本地设备访问文件。

在另一个方法中,将浏览器用于访问云中的文件。有利地是,基于浏览器的方法是灵活的,因为能够从具有浏览器能力的任何设备访问文件。但是,与本地安装的应用相比,基于浏览器的编辑应用缺少某些功能。此外,基于浏览器的应用依赖于网络连接性和高带宽来有效地工作。在示例中,通过浏览器访问文件并手动下载到本地设备。然后,用户必须在本地设备的文件系统中手动浏览,以使用本地安装的应用来打开文件。该过程不仅对用户而言很繁杂,而且甚至不会导致所编辑的文件与服务器同步。



技术实现要素:

因此,本文描述了用于促进在浏览器、同步客户端、以及本地应用之间通信的系统和方法。在某些方面中,本文所述系统和方法涉及使用浏览器来利用本地应用打开本地文件。从本地设备上的第一应用接收打开文档的请求,所述文档具有文档标识符并且与服务器上存储的第一文件相关联。该请求可以包括文档标识符和用户标识符。可以确定在本地设备上所存储的第二文件与文档标识符相关联,以及可以确定与用户标识符相关联的用户被授权访问第二文件。可以基于该确定将列表传送至第一应用,该列表包括在本地设备上并且能够打开第二文件的一个或多个应用。可以从该第一应用接收选自该列表的第二应用的指示。可以传送利用第二应用打开第二文件的消息。

同步客户端可以执行上述的接收、确定、以及传送步骤中的一个或多个。同步客户端可以与中介代理通信,该中介代理将请求传送至该同步客户端、从该同步客户端接收列表、以及将指示传送至同步客户端。中介代理可以基于对于同步客户端以及对于第一应用的格式化要求,来修改请求、列表、以及指示中的至少一个。

内容文件可以存储本地应用标识符的列表,该本地应用标识符对应于在本地设备上安装并且向同步客户端注册的多个本地应用。打开第二文件的消息可以包括与第二应用相关联的应用标识符。可以确定该应用标识符是否被包括在该内容文件中。

确定该用户是否被授权访问所述第二文件可以包括以下步骤中的一个或多个。可以接收基于至少一个预先共享密钥所计算的第一散列。可以由第一应用基于该至少一个预先共享密钥来计算第二散列。可以将第一散列与第二散列进行比较。如果该第一散列与该第二散列匹配,则该用户可以被授权访问该第二文件。

该第一散列和该第二散列均可以至少部分地基于至少一个随机数(nonce)来被计算。该请求、列表、以及指示中的至少一个可以包括与第一应用相关联的标准输入或输出数据流。可以根据第一文件的副本来创建第二文件。第一应用可以是浏览器或者与该浏览器相关联的浏览器扩展。用户可以经由该浏览器来提供一个或多个请求。仅当第二文件与第一文件同步时,可以将列表传送至第一应用。

可以在本地设备处从用户接收打开文档的请求,所述文档具有文档标识符并且与服务器上存储的第一文件相关联。该请求可以包括该文档标识符以及与用户相关联的用户标识符。可以将所请求的文档标识符和用户标识符传送至本地设备上的第一应用。可以从第一应用接收包括处于本地设备上的一个或多个应用的列表。可以从用户接收从列表中选择的第二应用的指示。可以向第一应用传送包括文件标识符以及与第二应用相关联的标识符的消息。

第三应用可以执行上文所述的接收和传输中的一个或多个。该第三应用可以是浏览器或者与所述浏览器相关联的浏览器扩展。第三应用可以与中介代理通信,中介代理将该请求传送至第三应用、从第三应用接收该列表、以及将指示传送至第三应用。中介代理可以基于对于第三应用以及对于第一应用的格式化要求来修改请求、列表、以及指示中的至少一个。

附图说明

图1是根据说明性实施方式的云计算服务的框图;

图2是根据说明性实施方式的、经由网络来与服务器通信的本地设备的框图;

图3是根据说明性实施方式的、与网络通信的本地设备的框图;

图4描绘了根据说明性实施方式的云计算设备的用户界面;

图5是根据说明性实施方式的、由浏览器执行的与本地应用通信以打开本地文件的方法的流程图;

图6是根据说明性实施方式的、由浏览器和同步客户端执行的、确定它们二者都表示相同的用户账户的方法的流程图;以及

图7是根据说明性实施例的、用于执行本文所述的过程中的任何一个的计算设备的框图。

具体实施方式

为了提供对本公开的全面理解,下面描述某些说明性示例,包括用于从浏览器打开本地应用的系统和方法。但是本领域普通技术人员应当理解,本文所述系统和方法可以被调整和修改为适合于正在设法解决的应用,并且本文所述系统和方法可以在其他合适的应用中采用,并且这样的其他添加和修改将不会脱离其范围。一般而言,本文所述计算机化系统可包括一个或多个组件,所述组件包括一个或多个处理设备,诸如计算机、微处理器、逻辑设备、或者配置有硬件、固件、和软件以执行本文所述的计算机化方法中的一个或多个的其他设备或处理器。

从浏览器打开本地应用是有用的,因为与从服务器分发的基于浏览器的应用,本地应用可以提供更多的或不同的文件编辑能力。通过从浏览器打开本地应用,可以实现使用本地应用的益处,同时还实现将文档存储在云服务中的益处。

图1示出包括云计算服务101和多个客户端设备102a-102d(统称客户端设备102)的客户端-服务器系统100。云计算服务101为一组客户端设备102提供云计算服务。具体而言,云计算服务101可包括存储客户端设备102a-102d可访问的多个文件的一个或多个服务器,诸如示例性协作电子表格103。客户端设备102处的用户可以创建、编辑、复制、共享、以及删除存储在云计算服务101上的文件。例如,客户端设备102均可以使用web浏览器来同时访问云计算服务101上的电子表格103。云计算服务101向每个客户端设备102提供电子表格103的本地副本,然后客户端设备102上的用户可以查看和编辑。云计算服务101可将电子表格103的本地副本与相互同步以及与存储在云计算服务101中的服务器上的电子表格103的副本同步。在一个示例中,由客户端设备102a作出编辑——本文中可称为变动(mutation)可以被自动发送给云计算服务101,并传送到其他客户端设备102b、102c、和102d。通过这种方式,由一个协作者作出的变动可以立即被其他协作者看到。如本文使用的,文件包括在存储介质上存储的一组数字编码的位。云文件包括在服务器上存储并且可经由网络访问的文件。本地文件包括在用户的本地设备上存储的文件。客户端设备包括以客户端-服务器关系与服务器通信的本地设备。如本文所使用的,文档是云计算服务的一部分,并且可以与多个文件相关联。例如,云文件可以是在服务器上存储的文档的副本,并且本地文件可以是在本地设备上存储的相同文档的副本。通常,相同文档的多个副本可以是完全相同的,但是如果由由一个协作者做出的变动尚未被传送到其他协作者,它们可以不同。这种情境可能发生在网络连接缓慢或时断时续时。如果副本存储在完全不同类型的设备——诸如具有不同操作系统的设备上,则相同文档的多个副本也可能略有不同。在这种情况下,不同的副本可以具有稍微不同的元数据,或者可以以不同方式编码。例如,一个副本可以以big-endian格式编码,并且另一个副本可以以little-endian格式编码。这些格式差异能够存在于作为相同文档的副本的多个文件上,只要向用户显示的信息的实质是跨副本而相同的。

客户端设备102可以包括台式计算机、膝上型计算机、平板计算机、智能电话、移动电子设备、或者可以通过网络连接到云计算服务101的任何其他设备的任何组合。在系统100中仅示出四个客户端设备102,但是应当理解,可将任何类型的任何数目的客户端设备102配置为与云计算服务101通信。系统100的云计算服务101和客户端设备102可以通过远程网络——诸如互联网连接。可以通过局域网、广域网、以太网、光纤网络、无线网络、蜂窝网络、交互式电视网络、电话网络、无线数据传输系统、双向电缆系统、定制的专用或公用计算机网络、交互式信息亭网络、直接链路、卫星网络、和/或任何其它有线或无线连接来促进网络连接。

图2图示了经由网络204与服务器206通信的本地设备202的示例性系统200。系统200可以被用于在浏览器上利用本地应用来打开基于云的文件。为了图示的清楚起见,在图2中仅示出一个本地设备202和一个服务器206。但是一般而言,任何数目的本地设备202可以通过网络204与任何数目的服务器206通信。本地设备202可以等同于关于图1所示和所述的客户端设备102中的一个,并且服务器206可被包括在云计算服务中——诸如图1所示的云计算服务101。如图2所示,服务器206包括存储云文件218a、218b、...、218m(统称云文件218)的数据库216。每个云文件218可以与云计算服务101上的不同文档相关联。例如,云文件218a和218b均可以与不同的文字处理文档相关联,而云文件218m可以与电子表格文档相关联,诸如在云计算服务101上存储的电子表格文档103。

本地设备202包括数据库208、浏览器212、以及一组本地应用214a、214b、...、214k(统称本地应用214)。数据库208存储本地文件210a、210b、...、210n(统称本地文件210)。本地文件210可以与云计算服务101上的文档相关联,或者也可以不与其相关联。当本地文件210与云计算服务101上存储的文档相关联时,本地文件与云计算服务101的关联可以包括本地文件与服务器上所存储的文件——诸如云文件218中的一个的同步。

本地应用214可以是对文件执行一个或多个操作的软件应用。可以通过本地应用214中的任何一个执行的操作的示例包括打开、显示、编辑、接收编辑、以及保存。浏览器212可以被配置为通过可以包括或可以包括本地应用214的一个或多个软件应用或中介组件与服务器206通信。具体的,浏览器212可以显示用户界面,使得用户可以与云计算服务101上的文档交互。在示例中,浏览器212接收用户输入,以请求云计算服务101上存储的文档,并且对该文档执行操作。云计算服务102上存储的被请求文档可以与本地设备202上存储的本地文件210中的一个同步。响应于接收用户输入,浏览器212与本地应用214中的一个执行通信,以请求本地应用214对相应的本地文件210执行操作。以这种方式,通过在本地设备202与远程服务器206之间提供文件同步,系统200允许用户通过浏览器212请求利用本地应用214对本地文件210执行操作。

图3描绘了包括与网络304通信的本地设备302的示例性系统300。本地设备302可以类似于关于图2所示和所述的本地设备202,而图3示出了本地设备302内的组件的更详细视图。具体而言,本地设备302包括具有本地文件310的本地数据库308、浏览器312、本地应用314、同步客户端320、代理进程322、浏览器扩展324、网络接口326、以及处理器328。处理器328在本地设备302上运行应用、功能、方法、以及进程,诸如应用314、同步客户端320、代理进程322、浏览器扩展324、以及浏览器312。网络304、数据库308、本地文件310、浏览器312、以及应用314分别可以执行与网络204、数据库208、本地文件210、浏览器212、以及应用214类似的功能。网络接口326充当本地设备302与可经由网络304访问的远程资源之间的通信的中介。具体的,本地设备302上的本地应用314和/或本地文件310经由网络304与服务器(诸如服务器206)通信。

如图3所示,浏览器312通过浏览器扩展324、代理进程322、以及同步客户端320与本地应用314通信。如图3所示,本地设备302仅包括一个浏览器扩展324、一个代理进程322、以及一个同步客户端320,但是一般而言,在本地设备302中可包括任何数目的这些组件,并且这些组件可以进行本文所述的功能中的任何一个。在示例中,浏览器扩展324响应于由浏览器312接收的用户请求而执行动作。这样的用户请求可包括对云服务——诸如云计算服务101上的文档执行操作的请求。浏览器扩展324可包括javascript代码或类似语言的代码,其可以调用对象、函数、方法、子例程、进程、或操作系统命令。浏览器扩展324可以在同步客户端320被安装在本地设备302上时被自动安装,或者在安装了浏览器扩展324时安装。如本文所使用的,“浏览器”指代能够检索和显示信息的软件应用、浏览器扩展、或者它们的任何合适的组合。虽然在图3中将浏览器312和浏览器扩展324示为两个分离的元件,但是应当理解,浏览器312可包括浏览器扩展324,使得本文描述为浏览器扩展324执行的功能中的任何一个都可以替选地或另外地由浏览器312执行。类似地,本文描述为由浏览器312执行的功能中的任何一个都可由浏览器扩展324替代执行。

在一些示例中,浏览器312、浏览器扩展324、同步客户端320、以及本地应用314中的任何一个之间的通信包括进程间通信(ipc)。在这种情况下,代理进程322通过将从浏览器扩展324与同步客户端320中的一个(诸如浏览器扩展324或同步客户端320)接收的通信转发到其中另一个(诸如同步客户端320或同步客户端320)来促进浏览器扩展324与同步客户端320之间的通信。代理进程322是单独的可执行文件,并且代理进程322的多个实例可以在任何给定时间打开或运行。在一些示例中,当浏览器扩展324中的javascript响应于接收利用本地应用来打开文档的用户请求而调用启动功能时,开始代理进程322的新实例。在一些示例中,代理进程322的实例可通过浏览器312、浏览器扩展324、浏览器扩展324中的javascript、或通过垃圾收集来破坏或终止。本文中,垃圾收集指代由操作系统、程序、进程、以及应用执行的常规存储器维护。有时候,代理进程322可以在转发已修改的通信之前修改通信。在示例中,代理进程322通过执行以下中的任何一个或多个来修改通信:改变通信的格式、向通信添加数据或元素、或从通信中去除数据或元素。与代理进程322的通信可包括标准输入流(stdin)、标准输出流(stdout)、以及标准错误流(stderr)中的一个或多个。stdin、stdout、以及stderr流是应用与其环境之间数据的字节流。虽然默认情况下,stdin流携载键盘数据,并且stdout流在监视器上显示,但是三个流中的任何一个都能够被重定向。在示例中,可以将浏览器扩展324的stdin流指引到代理进程322,使得浏览器扩展324接收来自代理进程322的输入。可以将浏览器扩展324的stdout和stderr流指引到代理进程322,使得浏览器扩展324直接输出到代理进程322。同样,可将同步客户端320的stdin、stdout、以及stderr流中的任何一个指引到代理进程322。在一些示例中,stdin、stdout、以及stderr通信处于前面带有长度字节或字的javascriptobjectnotation(json)字符串的格式。在这些示例中,浏览器扩展现在可将可序列化的javascript对象传递给代理进程322,并且可以接收回处于类似格式的对象。在另一个示例中,与代理进程322的通信可包括对一个或多个命名管道的使用。在另一个示例中,与代理进程322的通信可包括消息传递。在示例中,在浏览器312、浏览器扩展324、以及同步客户端320之间的通信之前可能要求密码认证。在另一个示例中,浏览器312、浏览器扩展324、同步客户端320、以及本地应用314之间的通信可包括应用之间的其他形式的通信。为了实现这种通信,可以在用户登录到同步客户端320或者以其他方式利用同步客户端320认证时安装浏览器扩展324。通过使用代理进程322在浏览器扩展324与同步客户端320之间传递消息,浏览器312可以与本地应用314通信,以对本地文件310进行操作。

在一些示例中,将网络304上的虚拟域(dummydomain)用于浏览器312、浏览器扩展324、以及同步客户端320之间的通信。在示例中,可以将虚拟域注册到域名系统,该虚拟域指代通常与本地设备302——诸如本地主机(127.0.0.1)相关联的域。在这种情况下,本地设备302可以包括核实安全超文本传输协议(https)请求的证书。在这种情况下,可以不使用代理进程322。

在一些示例中,将诸如websocket协议的全双工通信协议用于浏览器312与同步客户端320之间的通信。在一些示例中,可以不使用浏览器扩展324。代理进程322可以充当浏览器312与同步客户端320之间的中介代理。浏览器扩展324可以经由消息传递应用编程接口(api)展现json协议端点。在这种情况下,在浏览器312上显示的网页可以向代理进程322传送消息以及从代理进程322接收消息,代理进程322对来自和去往同步客户端320的消息进行中继。浏览器312可以连接到代理进程322、建立端口对象、以及向代理进程322发送通知。浏览器312可以创建websocket连接,并且将该websocket连接与端口对象相关联。按照这种方式,通过websocket连接来处理浏览器312与本地主机(本地设备302的回环(loopback)网络接口)之间的通信。在这种情况下,可以将向端口的传入消息序列化并转发给websocket。可将向websocket的传入消息转换为json字符串并且回发(post-back)至网页。通过使用代理进程322在浏览器312上显示的网页与不安全的本地主机websocket连接之间传输内容,避免了如果安全网页(诸如ssl签名页面)与非安全网络地址(诸如localhost)通信则可能发生的混合内容警告。这样的混合内容警告会禁止浏览器312和本地主机websocket连接之间的通信。

在一些示例中,同步客户端320与本地应用314以及数据库308通信。具体的,同步客户端320可以与数据库308中的本地文件310相关联。此关联可以产生自同步客户端320执行数据库308中的本地文件310与云计算服务101上的文档的同步。在示例中,本地文件310a的同步可以涉及传送和接收对本地文件310a的改变,使得本地文件310a是服务器206上存储的云文件218a的副本,或者使得云文件218a是本地文件310a的副本。如图3所示,同步客户端320通过传送打开、显示、编辑、或显示文件的请求,向本地应用314传送启动的指令。

在一些示例中,使用清单文件来向同步客户端320注册应用314,当同步客户端320和/或浏览器312被初始化时,清单文件可以动态生成并被放置在用户简档中。在示例中,同步客户端320只可以与使用清单文件来向该同步客户端320注册的本地应用314通信。通过经由清单文件注册本地应用,同步客户端320可以减少由对可能有害的应用的执行所致的安全漏洞的可能性。

图4描绘了被用于管理和访问云计算服务101中存储的文档的示例性用户界面400。可以在本地设备202上的浏览器212中向用户提供用户界面400。如图4所示,用户界面400显示了包括从服务器递送的内容的网页。为了查看用户界面400,用户可能被要求登录或者通过认证服务器进行认证。通过要求认证,用户界面400可以显示对登录用户定制的内容,诸如在云服务(诸如云计算服务101)上存储并与用户相关联的一组文档406。在图4所示的示例中,文档406a和406b是文字处理文档,文档406c是绘图文档,文档406d是表单(form)文档,文档406e是演示文档,并且文档406f是电子表格文档。文档的这种布置并非限制性的,并且在不脱离本公开范围的情况下,可以在用户界面400中显示除了图4所描绘的那些文档之外的文档的布置或类型。可以将云计算服务101上存储的文档布置或包含在文件夹——诸如文件夹408中。当用户选择创建(create)按钮410时,可以创建新文档。如图4所示,用户界面400包括云服务上的、与用户相关联的文件夹的显示以及文件夹的内容的显示。

有时候,本地设备202在线并连接到服务器206。在这种情况下,服务器206可以将所显示的文档406的副本存储在数据库216中。一组所显示的文档406可以对应于与用户相关联并且服务器206在数据库216中具有其副本的一组文档。同步客户端320可以在本地设备202在线时更新数据库208,使得将云计算服务101上文档的本地副本保持在本地设备202上,使得即使在本地设备202离线时该文档仍然是可访问的。诸如在本地设备202从网络204断开连接时,本地设备202可以变为离线并从服务器206断开连接。当本地设备202处于时断时续的无线网络覆盖的区域中或者从有线网络连接拔出时,会出现这种情况。此外,当本地设备202连接到网络204但是本地设备202和/或本地设备202上的一个或多个应用没有被认证时,也可以出现离线状态,使得服务器206阻止本地设备202访问服务器206。当本地设备202离线时,用户界面400可以仍然能够显示文档406。文档406可以对应于在数据库208中存储并且与登录用户相关联的本地文件210。

用户可以使用用户界面400来选择利用本地应用214中的一个来打开文档406。具体的,用户可以选择文档406中中的一个,并且然后选择利用其来打开所选择的文档406的应用214。在图4所描绘的示例中,用户通过选择邻近复选框来选择演示文档406e。一般而言,可以使用选择文档的其他方法,诸如通过一次或多次点击所需文档的名称,或者将所需文档拖放到指定位置。如图4所示,然后,用户通过选择菜单402并选择“openwith(利用…打开)”选项418来选择应用。

当用户选择了选项418时,然后向用户呈现候选应用420a和420b的列表(统称候选应用420)。可以将候选应用420的列表限制为仅包括被配置为对与所选择的文件406e文件具有相同文件类型的文档执行操作的应用。图4所示的候选应用420仅包括一个本地应用420a和一个服务器应用420b,但是一般而言,可以示出任何数目的本地应用和/或服务器应用。有时候,没有本地应用(或服务器应用)可以被配置来对所选择的文件进行操作,使得列表中没有包括本地应用(或服务器应用)。用户可以选择所列出的应用420中中的一个来对所选择的文档406e进行操作。

如关于图4所描述的,用户首先选择文件406,并且然后选择应用406以用来打开所选择的文件。在另一个示例中,用户可以首先从应用列表中选择应用,并且然后选择所选择的应用被配置来对其操作的文档。在另一个示例中,用户可以不提供对应用的选择,并且可以使用默认应用来打开所选择的文件。当本地设备202在线时,可以从服务器数据库216上的云文件218中的一个提供所选择的文档的副本。替选地,可以从本地数据库208上的文件214中的一个提供所选择的文档的副本。当本地设备202离线时,可以从本地数据库208上的本地文件210中的一个提供所选择的文档的副本。因此,利用基于浏览器的用户界面400,用户可以使用本地应用来访问和编辑基于云的文档。与基于云的应用相比,利用本地应用访问和编辑基于云的文档允许用户利用本地应用的增加的功能。此外,使用本地应用可以提供改善的编辑体验,因为如果网络连接缓慢或时断时续,则使用基于云的应用可能导致明显的时延。

图5是基于来自用户的请求来使用本地应用打开文档的示例性方法500的流程图。在步骤502处,浏览器212从用户接收打开云服务——诸如云计算服务101上存储的文档的请求。所请求的文档的示例可以包括文档103和文档406中的任何一个。所请求的文档可以与服务器——诸如服务器206上存储的文件相关联,并且关联的文件的示例可以包括云文件218。在示例中,如关于图4所述,通过用户界面400接收请求。

在决策框504处,运行浏览器扩展324的处理器——诸如处理器328确定同步客户端320是否正在本地设备302上运行。在一些示例中,处理器328确定在本地设备302上是否安装了同步客户端。在一些示例中,处理器查询注册表、属性列表、plist、数据库、偏好、配置文件、或文件位置,以确定是否安装了同步客户端320。如果未安装同步客户端320,则方法500进行到步骤506,以引导用户进行同步客户端320的安装。否则,如果安装了同步客户端320,则方法500跳过步骤506并且直接进行到步骤508。在一些示例中,如果未安装同步客户端320,则方法500不在步骤506处引导用户进行同步客户端320的安装,而作为替代方法500终止。

在步骤508处,浏览器扩展324向同步客户端320发送打开所请求的文档的请求。该请求可以经由以下中的一个或多个传输给同步客户端320:代理进程322、websocket协议、命名管道、标准输入、标准输出、标准错误、消息传递协议、密码认证、以及应用之间的其他通信方式。在本文所述的应用之间的所有通信可以使用本文所述的应用之间的通信方式中的任何一个,所述通信诸如浏览器312、浏览器扩展324、代理进程322、同步客户端320、网络接口326、本地应用314、数据库308、本地设备302上的其他应用、以及本地设备202和服务器206上的类似组件之间的通信。打开所请求的文档的请求可以包括所请求的文档的标识符以及登录到云计算服务101的用户的标识符。

在决策框510处,浏览器扩展324和同步客户端320相互认证,以确定经由浏览器312登录到云计算服务101的用户是否与被授权经由同步客户端320访问本地文件310的用户相同。该确定可以包括:确定登录到云计算服务101的用户与同步客户端320的授权用户是否表示相同的用户账户。在一些示例中,浏览器312和同步客户端320通过验证用户账户的域是所识别的域——诸如google.com来执行认证。在一些示例中,用以执行认证的在浏览器扩展324与同步客户端320之间的通信是经由代理进程322执行的。在其他示例中,代理进程不涉及该通信。可以使用预先共享密钥、与认证服务器的通信、或其他方法来执行该认证,以确定相同用户登录到浏览器312和同步客户端320两者。可以使用图6所图示的认证过程来执行以上认证。在一些示例中,步骤510可以在步骤514或步骤520之后发生。

如果浏览器312和同步客户端320不表示相同的用户账户,则方法500进行到步骤512终止。在一些示例中,在终止时可以经由用户界面400向用户呈现消息。该消息可以包括终止的原因,并且可以建议用户可以采取以恰当认证的一个或多个动作。建议的动作可以包括登录到同步客户端320并登录到云计算服务101,使得相同的用户账户利用同步客户端320和云计算服务101两者认证。

在决策框514处,运行同步客户端320的处理器328确定所请求的文档的本地副本是否在本地设备302上可用。处理器328可通过确定数据库308中的文件——诸如本地文件310中的一个与云计算服务101上所请求的文档相关联来进行该确定。在步骤508处,处理器可以使用在同步客户端320所接收的已传输请求中所包括的文档标识符,来确定本地副本是否可用。这样的可用本地副本可以与服务器206上的云文件218中的一个同步。替选地,本地副本在先前时间可能已经与服务器206上的云文件218中的一个先前同步过,无论本地设备302是否在线,并且无论自从本地副本与服务器206上的云文件218中的一个同步起已过去的时间的长度。在一些示例中,如果自从本地副本与服务器206同步起已过去的时间长度超过预定的阈值时间,则可以向用户呈现通知——用户将利用可能不是所请求的文档的最当前版本的本地副本来工作。如果时间长度超过预定阈值,则方法500可以进行到决策框516和步骤522,来尝试从服务器206下载最新副本。在一些示例中,方法500可以进行到步骤520,即使时间长度超过预定阈值。

在决策框514处,如果运行同步客户端320的处理器328确定所请求的文档的本地副本在本地设备302上不可用,则方法500进行到决策框516,在该决策框516处理器328确定本地设备302是否在线。处理器328可以通过ping服务器——诸如服务器206或以其它方式与处于远程位置处的设备进行通信来做出该确定。如果本地设备302不在线并且因此从服务器206断开连接,则该方法前进到步骤518终止。在终止时,可以经由用户界面400向用户呈现消息。该消息可以包括本地副本在本地设备302上不可用并且本地设备302离线的通知,从而阻止从服务器206获得本地副本。在一些示例中,如果同步客户端320在决策框514处确定所请求的文档的本地副本在本地设备302上不可用,则方法500直接进行到经修改的步骤524,其中同步客户端320向浏览器发送本地应用的空列表。

在决策框516处,如果同步客户端320确定本地设备302在线并且因此连接到服务器206,则方法500进行到步骤522,在所述步骤522处,同步客户端320将所请求的文档的本地副本从服务器206下载到本地设备302。在示例中,本地副本可以是数据库308中的本地文件310中的一个。在另一个示例中,本地副本可以被存储在较不持久的位置或者存储在易失性存储器——诸如随机存取存储器(ram)中。在方法进行到步骤522之前,可以通知和提示用户允许方法500继续。由于用户作出的、不将所请求的文档与本地设备302同步的先前选择,本地副本最初可能是不可用的。替选地,如果在方法500的步骤502处没有安装同步客户端320而仅在步骤506处安装,则本地副本可能最初不可用。在步骤522处从服务器下载文档的本地副本之后,方法500进行到步骤520。否则,在决策框514处,同步客户端320确定所请求的文档的本地副本可用,方法500进行到步骤520。

在步骤520处,同步客户端320确定本地应用314中的哪一个——如果有的话——能够对本地副本执行操作。同步客户端320可以确定没有本地应用314、一个本地应用314、或多个本地应用314被配置来对本地副本执行操作。同步客户端可以通过以下操作来作出此确定:通过分析文档标识符、文件名、文件扩展、报头、或确定格式的其它方式来确定本地副本的文件类型,并且然后与以下中的一个或多个进行比较——清单文件、注册表、属性列表、plist、配置文件、偏好、数据库、或确定被配置来对特定文件类型或格式执行操作的本地应用的其他方式。同步客户端320可以确定:本地应用314中的一个是用于打开本地副本的默认应用。

在步骤524处,同步客户端320可选地地经由代理进程322来向浏览器扩展324发送能够对本地副本执行操作的本地应用的列表。该列表可以为通过使用应用的标识符来引用零个、一个、或一组被配置对本地副本执行操作的本地应用314。对于列表引用的每个应用,列表可以包括应用是否是用于所请求的文件类型的文件的默认应用以及该应用的图标。

在步骤526处,浏览器扩展324经由用户界面400来向用户呈现本地应用的列表。在一些示例中,浏览器扩展324还可以确定:一个或多个服务器应用能够打开所请求的文档。在这些示例中,浏览器扩展324能够经由用户界面400向用户呈现服务器应用的列表。如果所接收的列表不包含本地应用,则可以不向用户呈现本地应用,并且可以只呈现服务器应用。如果没有服务器应用被配置为对所请求的文档执行操作,则可以只呈现本地应用。如果没有本地应用并且没有服务器应用被配置为对所请求的文档或本地副本执行操作,则可以不呈现应用,并且方法500终止。可以向用户呈现无法打开所请求的文档的通知。

在步骤528处,用户从列表中选择应用。该用户可以经由用户界面400进行选择,如关于图2所解释的。可以向用户呈现使用默认应用的选项,来替代要求用户从列表中选择应用。默认应用可能是有益的,特别是对于经常使用相同应用打开相似类型的文件的用户。可以基于用户对于该文件或文件类型的应用的先前选择来更新用于特定文件或文件类型的默认应用。

在决策框530处,浏览器扩展324确定所选择的应用是本地应用还是服务器应用。例如,浏览器扩展324可以将所选择的应用与在步骤524处发送的应用的列表进行比较,以确定所选择的应用是本地应用还是服务器应用。如果所选择的应用是服务器应用,则方法500进行到步骤532以使用所选择的服务器应用来打开所请求的文档。在示例中,所选择的服务器应用可以从云计算服务101中包括的服务器206打开所请求的文档,而不是打开所请求的文档的本地副本。在另一个示例中,所选择的服务器应用可以从本地文件310中的一个打开所请求的文档的本地副本。

否则,如果浏览器扩展324在决策框530处确定所选择的应用是本地应用,则方法500进行到步骤534,在所述步骤534处,浏览器扩展324可选地经由代理进程322将与所选择的应用相关联的标识符发送给同步客户端320。浏览器扩展324还可以发送登录到云计算服务101的用户的诸如电子邮件地址的标识符以及所请求文档的标识符。清单文件可以存储应用与在步骤534中使用的标识符之间的关联。在示例中,可以发送与所选择的应用相对应的标识符,而不是本地路径、可执行文件、或其他形式的直接命令。在该示例中,本地设备302的安全性被强化,因为本地路径、可执行文件、或直接命令可以被用于出于恶意目的来攻击本地设备。在使用与所选择的应用相关联的标识符时,同步客户端320也必须具有该关联,并且同步客户端320必须知道该应用以用于使同步客户端320基于该标识符来执行动作。这向本地设备302提供了添加的一层安全性。在其他示例中,不使用应用的标识符,并且使用更直接但不太安全的识别方法,诸如本地路径、可执行文件、或另一形式的直接命令。

在步骤536处,同步客户端320向本地设备的操作系统发送命令,以使用所选择的本地应用来打开所请求的文档的本地副本。在步骤536处,必要时操作系统可以打开所选择的本地应用。所选择的本地应用可以是应用314中的一个,并且本地副本可以是本地文件310中的一个。在一些示例中,同步客户端320可以直接向所选择的本地应用发送命令,或者代理进程322可以参与命令的发送。在一些示例中,步骤536包括提示用户确认同步客户端320被允许打开所选择的应用的步骤。在一些示例中,在同步客户端320首次打开每个本地应用时执行该提示,并且在同步客户端320后来打开该应用的时候不执行该提示。

在步骤538处,所选择的本地应用打开所请求的文档的本地副本。如果所选择的本地应用尚未运行,则所选择的本地应用将在打开所选择的本地副本之前启动。然后,用户可以使用所选择的本地应用来查看、编辑、以及保存文档的本地副本。用户对文档作出的任何改变都可以通过同步客户端320传送至服务器206。通过支持浏览器312、浏览器扩展324、同步客户端320、以及本地应用314之间的通信,系统300使得本地应用314中的一个能够基于经由用户界面400接收的请求来打开本地文件310中的一个。

在一些示例中,方法500被简化。浏览器312可以在步骤502处确定文件的文件类型,并且将文件类型包括在步骤508处发送的请求中。在这些示例中,步骤520可以包括:无论是否存在本地副本都确定哪些本地应用能够打开所请求的文件类型的文件。在这些示例中,一旦在步骤528中选择了应用,同步客户端320就可以从服务器下载所请求的文档,以创建本地副本310a。

图6是诸如在关于图5所述的决策框510处的、系统200用来认证用户的示例性方法600的流程图。浏览器扩展324和同步客户端320可以使用方法600来确定它们表示相同的用户,并且因此确定登录到浏览器的用户能够访问本地文件310。

在步骤602处,用户使用浏览器312来利用云计算服务101认证。在认证期间,浏览器312可以从与云计算服务101相关联的服务器接收预先共享密钥,并且还可以与浏览器扩展324共享该预先共享密钥。

在步骤604处,用户利用同步客户端320进行认证。利用同步客户端320的认证可以是同步客户端320安装的一部分,或者也可以与同步客户端320的安装无关。例如,认证可以在本地设备302开机时发生,响应于方法500的步骤502中对于文档的用户请求的认证,当本地设备从离线转变为在线时的认证,或者在另一个时间的认证。

在步骤606处,浏览器扩展324可选地经由代理进程322向同步客户端320发送对于认证的请求。在认证期间,确定浏览器扩展324和同步客户端320二者表示相同的用户账户。,可以经由本文关于应用之间的通信所述的方法或协议中的任何一个来传送对于认证的请求。在一些示例中,对于认证的请求的传输包括:将随机数从浏览器扩展324发送给同步客户端320。

在步骤608处,同步客户端320计算初始散列并将该初始散列发送给浏览器扩展324。在示例中,计算初始散列涉及同步客户端320建立单独的随机数并计算以下的散列:从浏览器扩展324接收的随机数(诸如可以在步骤606处接收的随机数);同步客户端320建立的单独的随机数(诸如可以在步骤608处建立的单独的随机数);“establish(建立)”关键字;表示登录到同步客户端320的用户账户的预先共享密钥;或其任何合适的组合。在示例中,同步客户端320将由同步客户端320计算的初始散列以及由同步客户端320建立的随机数发送给浏览器扩展324。

在决策框610处,浏览器扩展324独立计算初始散列,并确定浏览器扩展324所计算的初始散列与从同步客户端320接收的初始散列是否匹配。初始散列的独立计算可以包括浏览器扩展324计算以下的散列:浏览器扩展324建立的随机数(诸如可以在步骤606建立的随机数)的散列;从同步客户端320接收的随机数(诸如可以在步骤608接收的随机数);“establish”关键字;表示登录到云计算服务101的用户账户的预先共享密钥;或其任何合适的组合。在独立计算初始散列之后,浏览器扩展324确定独立计算的初始散列与从同步客户端320接收的初始散列是否匹配。如果计算的初始散列与所接收的初始散列不匹配,则这可以反映相同的用户账户未登录到同步客户端320和云计算服务101两者。如果在决策框610处浏览器扩展324确定这两个初始散列不匹配,则方法进行到步骤612终止。在方法终止时,可以向用户呈现认证已失败的通知,并且可以向其建议进行恰当认证要采取的一个或多个动作。

在决策框610处,浏览器扩展324确定相同的用户是否登录到浏览器扩展324和同步客户端320两者。为了提高本地存储的文件310的安全性,同步客户端可以独立地作出相同的确定。如果在决策框610处所接收的初始散列与独立计算的初始散列匹配,则方法600进行到步骤614,在所述步骤614处浏览器扩展324计算确认散列并将该确认散列发送给同步客户端320。对确认散列的计算可以涉及计算以下的散列:浏览器扩展324所建立的随机数(诸如可以在步骤606发送的随机数);从同步客户端320接收的随机数(诸如可以在步骤610接收的随机数);“confirm”关键字;表示登录到云计算服务101的用户账户的预先共享密钥;或其任何合适的组合。

在决策框616处,同步客户端320独立地计算确认散列,并且确定同步客户端320所计算的确认散列与从浏览器扩展324接收的确认散列是否匹配。同步客户端对确认散列的独立计算320可以涉及同步客户端320计算以下的散列:从浏览器扩展324接收的随机数(诸如可以在步骤606接收的随机数);同步客户端320建立的随机数(诸如可以在步骤608建立的随机数);“confirm”关键字;表示登录到同步客户端320的用户账户的预先共享密钥;或其任何合适的组合。在由同步客户端320独立计算确认散列之后,同步客户端确定由同步客户端320计算的确认散列与从浏览器扩展324接收的确认散列是否匹配。如果独立计算的确认散列与所接收的确认散列不匹配,这可以是对以下的指示:相同的用户账户没有登录到同步客户端320和云计算服务101两者。如果情况是这样,则方法600进行到步骤618终止。在方法终止时,可以向用户呈现认证已失败的通知,并且可以向其建议进行恰当认证要采取的一个或多个动作。

否则,如果同步客户端320确定从浏览器扩展部分324接收的确认散列确实与在决策框616处同步客户端320独立计算的确认散列匹配,则方法600进行到步骤620以完成认证。通过执行该认证,同步客户端320和浏览器扩展324二者都独立地验证它们表示相同的用户账户,从而确保只有授权用户才能够访问本地存储的文件。有利的是对于浏览器扩展324和同步客户端320二者独立执行该验证,以改善对浏览器扩展324或同步客户端320是否已经受到危害的检测。但是,由浏览器扩展324和同步客户端324二者进行的独立验证可能是耗时并且不必要地低效的。因此,这些组件中只有一个可以执行验证并且向另一个组件传送指示认证完成的消息,从而消除对于另一个组件执行单独验证的需要。

图7是用于执行本文所述的过程中的任何一个的计算设备的框图,其诸如图1-3的系统的组件中的任何一个。这些系统的组件中的每一个可以在一个或多个计算设备700上实现。在某些方案中,可以将这些系统的多个组件包括在一个计算设备700内。在某些实施方式中,可以跨若干计算设备700来实现组件和存储设备。

计算设备700包括至少一个通信接口单元、输入/输出控制器710、系统存储器、以及一个或多个数据存储设备。系统存储器包括至少一个随机存取存储器(ram702)以及至少一个只读存储器(rom704)。所有这些元件都与中央处理单元(cpu706)通信以促进计算设备700的操作。可以以许多不同的方式来配置计算设备700。例如,计算设备700可以是常规的独立计算机,或者替选地,计算设备700的功能可以跨多个计算机系统和架构来分布。替选地,可以将计算机系统虚拟化以提供多个计算设备700的功能。在图7中,计算设备700经由网络或本地网络来链接到其他服务器或系统。

可以将计算设备700配置在分布式架构中,其中将数据库和处理器容纳在分离的单元或位置中。一些单元执行主要处理功能并且最少包含通用控制器或处理器和系统存储器。在分布式架构实施方式中,这些单元中的每一个都可以经由通信接口单元708来被附接到通信集线器或端口(未示出),其充当与其他服务器、客户端或用户计算机以及其他相关设备的主要通信链路。通信集线器或端口自身可以具有最小的处理能力,主要充当通信路由器。各种通信协议可以是系统的一部分,包括但不限于:以太网、sap、atp、gsm、以及tcp/ip。

cpu706包括处理器——诸如一个或多个传统微处理器以及一个或多个补充的协处理器——诸如用于从cpu706卸载工作负载的算术协处理器。cpu706与通信接口单元708以及输入/输出控制器710通信,cpu706通过其来与其他设备——诸如其他服务器、用户终端、或设备通信。通信接口单元708和输入/输出控制器710可以包括多个通信信道以例如用于与其他处理器、服务器、或客户端终端同时通信。

cpu706还与数据存储设备通信。数据存储设备可以包括磁、光或半导体存储器的适当,并且例如可以包括ram702、rom704、闪存驱动器、光盘——诸如压缩盘或者硬盘或驱动器。例如,cpu706和数据存储设备均可以分别完全位于单个计算机或其他计算设备内;或通过通信介质相互连接,所述通信介质诸如usb端口、串行端口电缆、同轴电缆、以太网电缆、电话线、射频收发器、或其它类似的无线或有线介质、或前述的组合。例如,cpu706可以经由通信接口单元708连接到数据存储设备。可以将cpu706配置为执行一个或多个特定处理功能。

例如,数据存储设备可以存储:(i)计算设备700的操作系统712;(ii)适于根据本文所述的系统和方法来指引cpu706、并且特别是根据关于cpu706详细描述的过程来指引cpu706的一个或多个应用714(例如计算机程序代码或计算机程序产品);或(iii)适于存储信息的数据库716,其可以被利用来存储程序所需的信息。

例如,操作系统712和应用714可以以压缩、未编译以及加密的格式存储,并且可以包括计算机程序代码。程序的指令可以从除数据存储设备之外的计算机可读介质——诸如从rom704或从ram702被读取到处理器的主存储器中。虽然程序中的指令序列的执行使得cpu706执行本文所述的过程步骤时,但是可以使用硬连线电路代替软件指令或者与软件指令组合以用于本发明的过程的实现。因此,所述的系统和方法不限于硬件和软件的任何特定组合。

可以提供合适的计算机程序代码以用于执行与执行本文所述的过程相关的一个或多个功能。该程序还可以包括程序元素,诸如操作系统712、数据库管理系统、以及允许处理器经由输入/输出控制器710与计算机外围设备(诸如视频显示器、键盘、计算机鼠标等等)对接的“设备驱动器”。

本文使用的术语“计算机可读介质”指代任何非暂时性介质,其向计算设备700的处理器(或本文所述的设备的任何其他处理器)提供指令或参与向其提供指令以供执行。这样的介质可以采取很多形式,包括但不限于非易失性介质和易失性介质。例如,非易失性介质包括光盘、磁盘、或光磁盘、或者集成电路存储器——诸如闪存。易失性介质包括动态随机存取存储器(dram),其通常构成主存储器。例如,计算机可读介质的常见形式包括:软盘、柔性盘、硬盘、磁带、任何其它磁介质、cd-rom、dvd、任何其他光学介质、穿孔卡、纸带、具有孔图案的任何其它物理介质、ram、prom、eprom、或eeprom(电可擦除可编程只读存储器)、flash-eeprom、任何其它存储器芯片或盒式磁带、或者计算机能够从其读取的任何其它非暂时性介质。

各种形式的计算机可读介质可以涉及将一个或多个指令的一个或多个序列携载到cpu706(或本文所述的设备的任何其它处理器)以供执行。例如,指令最初可以承载在远程计算机(未示出)的磁盘上。远程计算机能够将指令加载到它的动态存储器中,并通过以太网连接、线缆线路、或甚至使用调制解调器的电话线来发送该指令。计算设备700(例如服务器)本地的通信设备能够在相应通信线路上接收数据,并且将该数据置于用于处理器的系统总线上。该系统总线将数据携载至主存储器,该处理器从其检索并执行指令。在被处理器执行之前或之后,主存储器接收的指令可以可选地存储在存储器中。此外,可以经由通信端口接收作为电、电磁、或光信号的指令,其是携载各种类型信息的无线通信或数据流的示例性形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1