输入数据的条件性保存的制作方法

文档序号:25420334发布日期:2021-06-11 21:31阅读:87来源:国知局
输入数据的条件性保存的制作方法

本申请是申请号为201580020027.x的中国专利申请的分案申请。



背景技术:

一些服务代表请求方实体(例如,用户或计算设备)执行相对资源密集的处理。例如,图形渲染、加密和信号处理是可以由服务来执行的迥异类型的资源密集的处理。通常,请求方实体可以向给定的服务提交一个或多个输入,以及从该服务接收一个或多个输入。例如,客户端设备可以向web服务提交请求,以及随后从该web服务接收响应。再举一个例子,应用可以请求本地服务在给定的计算设备上执行某种功能。在大多数情况下,该服务将会成功地完成并向请求方实体提供预期的响应。但是,可能存在该服务未能向请求方实体提供预期的输出的情况。



技术实现要素:

提供本发明内容以便用简化的形式介绍将在以下的具体实施方式中进一步描述的概念的选集。本发明内容并不是旨在标识本发明的关键特征或本质特征,也不是用于限制本发明的保护范围。

该具体实施方式通常涉及输入数据的条件性保存(conditionalsaving)。一个例子包括可以由计算设备执行的方法或者技术。该方法或技术可以包括:获得“服务对输入数据执行处理以产生该输入数据的输出表示”的请求。该方法或技术还可以包括:向该请求应用标准。如果该标准被满足,则该方法或技术可以保存(preserve)该输入数据。

另一个例子包括一种云计算系统,该云计算系统包括一个或多个硬件处理单元和一个或多个计算机可读存储设备。这些计算机可读存储设备可以存储计算机可执行指令,所述计算机可执行指令当被所述一个或多个硬件处理单元执行时可以使得所述云计算系统通过网络来接收服务请求。该服务请求可以包括输入数据。此外,所述计算机可执行指令还可以使得所述云计算系统确定:该服务请求指示,该输入数据不应当被该云服务存留(persist)。所述计算机可执行指令还可以使得所述云计算系统响应于检测到失败,通过存留该输入数据来覆盖(override)所述服务请求。

另一个例子包括可以由计算设备执行的方法或者技术。该方法或技术可以包括:获得具有输入数据的服务请求;以及通过对该服务请求的输出进行评估,来向该服务请求应用标准。此外,该方法或技术还可以包括:响应于检测到该服务请求的输出满足所述标准,保存该服务请求的输入数据。

上面所列出的例子旨在提供用于辅助读者的快速参考,而不是旨在限定本文所描述的概念的保护范围。

附图说明

参照附图描述具体实施方式。在这些附图中,附图标记的最左侧数位标识该附图标记第一次出现时的附图。在说明书和附图中的不同实例中对于相同附图标记的使用可以指示相似或相同的项。

图1示出了与本发明的概念的一些实现相一致的示例性方法或技术。

图2示出了与本发明的概念的一些实现相一致的示例性环境。

图3-12示出了与本发明的概念的一些实现相一致的示例性图形用户界面。

具体实施方式

概述

在请求方实体从服务请求输出的许多不同上下文中,可能有时请求方实体未接收到预期的输出。例如,服务可能没有正确地处理输入数据,或者服务可能由于策略原因而决定不提供预期的响应。如果请求方实体没有采取步骤来保持输入数据,则输入数据可能会丢失。一些实现可以通过当某些标准被满足时条件性地保存输入数据,来减轻丢失输入数据的影响。例如,一些实现可以在处理任务已完成之后,默认地将输入数据删除,但当服务检测到失败时,通过为请求方实体保存该输入数据来覆盖该默认行为。

在一些情况下,服务可以应用各种失败标准来判定是否要保存输入数据。为了便于说明本文档起见,术语“失败标准”包括任何指示“请求方实体将不会接收到预期的输出”的标准。在一些情况下,失败标准可以指示:由于例如损坏/畸形的输入数据、处理任务的崩溃/错误等等,所请求的处理没能适当地完成。其它失败标准可以涉及服务的策略决定,例如,由于超过了存储装置配额或者处理时间限制,服务可能决定不向请求方实体提供所请求的输出,而不管处理任务是否成功地完成。

在一些实现中,服务可以执行失败标准的早期检测,例如通过,在开始所请求的处理任务之前,对输入数据进行评估并判定该输入数据是否应当被保存。例如,服务可以执行预处理例程,该预处理例程能够检测输入数据是畸形的(malformed),并在不发起处理任务的执行的情况下,为请求方实体保存该畸形的输入数据。通常,输入数据可以经由许多不同的机制来保存,其包括将输入数据从请求方实体远离地存留,或者将输入数据嵌入在提供给请求方实体的文件(例如,文档)中。

在一些情形下,取决于正在执行的特定处理任务以及在考虑之中的失败的类型,可能很难执行对失败的早期检测。例如,在一些情况下,输入数据可能不具有任何明显的(apparent)缺陷,则服务将继续发起所请求的处理任务。当处理任务在执行时,服务可以对该处理任务进行监测,以检测是否满足某个失败标准。例如,考虑一个服务设置了关于处理任务能够花费的时间量的时间限制(例如,一分钟)。请求方实体可以向该服务提供输入文件以供处理。该处理任务可能要花费比一分钟时间限制更长的时间来完成,故在生成输出之前,该服务就可能决定要杀掉(kill)该任务。在这些情形下,由于请求方实体将不会接收到预期的输出(例如,请求方实体可能根本没有接收到输出、接收到错误消息(errormessage)、接收到部分完整输出等等),因此为请求方实体来保存该输入文件也是有用的。

在一些情况下,处理任务可能继续进行到完成,但服务却确定发生了失败。例如,服务可以向处理任务的输出应用某个失败标准,并认为该输出被视作为失败情况。考虑如下情况:处理任务产生比输入数据显著更大的输出,并且失败标准包括关于输出的大小的策略限制,例如,输出可以具有不大于100兆字节的总体存储器占用(overallmemoryfootprint)。假定服务接收到5千字节的输入文件,并将该输入文件成功地处理成500兆字节的输出文件。在这些情形下,输出文件被正确地产生了,并且可用于向请求方实体提供。然而,该服务可以通过不向请求方实体提供该输出文件,来实施该大小限制。为了防止请求方实体丢失输入数据,该服务可以响应于确定了大小限制失败标准已经被满足而对输入数据进行保存。

条件性保存方法

下面的讨论提出了对能够条件性地保存输入数据的功能的概述。该功能可以由各种类型的服务来执行,或者代表各种类型的服务来执行。取决于具体的实现方式,该服务可以体现为云服务、本地应用、库例程、操作系统例程和/或专用硬件电路系统。因此,可以利用软件、硬件或者其组合来实现该功能。

图1示出了与本发明的概念相一致的示例性方法100。如下面所更详细讨论的,该方法可以在许多不同类型的设备上实现,例如,由一个或多个云服务器实现,由诸如膝上型计算机、平板设备或智能手机或者其组合之类的客户端设备实现。方法100可以由以下服务来实现:在与请求方实体相同的设备上以本地方式执行的服务、远离请求方实体来执行的服务、或者代表本地或远程服务。

方法100开始于方框102处,从请求方实体获得请求。例如,该请求可以具有诸如文档、信号的数字采样或者数字通信之类的输入数据。该请求可以请求对输入数据执行某个处理任务,例如,文档的渲染、向数字采样应用的转换(transform)、或者对数字通信进行加密。在一些情况下,该请求可以是获得输入数据的不同表示(例如,将输入数据渲染成图像),或者在其它情况下,该请求可以是取回其它数据(例如,取回与输入搜索查询相匹配的文档)。

方法100转到方框104处,向该请求应用标准。例如,该标准可以是失败标准,其指示如下情境:其中请求方实体将不会接收到该处理任务的预期输出。如下面所讨论的,对失败标准进行评估可以是在服务发起该处理任务之前,在服务成功地完成该处理任务并已获得输出之后,或者在处理任务正在进行时。

方法100转到判断框106处,其判断该标准是否被满足。在满足该标准的情况下,方法转到方框108和110。

当该标准被满足时,方框108可以对该请求的输入数据进行保存。例如,响应于确定该标准已被满足,可以将输入数据存留在存储装置上。在一些情况下,将输入数据存留在与请求方实体相关联的指定存储位置中(例如,云存储装置中的用户帐户)。

方框110可以向请求方实体提供该输入数据。在一些实现中,可以替代预期的输出,向请求方实体自动地发送该输入数据。例如,所述文档可以替代所请求的渲染图像而向请求方实体提供,所述信号采样可以替代所请求的经转换的信号而向请求方实体提供,和/或所述通信可以以未加密形式替代所请求的加密通信而向请求方实体提供。在其它情况下,直到接收到另外的请求为止,不向请求方实体提供输入数据。例如,该服务可以向请求方实体发送消息,该消息指示“发生了失败,并且已将输入数据与该用户的帐户相关联地存储以便稍后访问(例如,由另外的请求)”。

返回参见判断框106,在该标准不被满足的情况下,方法转到方框112和114。

当该标准不被满足时,方框112可以向请求方实体提供所请求的输出。例如,可以向请求方实体提供经渲染的文档、经转换的信号采样或者经加密的数字通信。在一些情况下,默认行为可以是向请求方实体提供所请求的输出,而不是也向请求方实体提供输入数据。

方框114可以删除该请求的输入数据。例如,可以由该服务从存储装置中删除被渲染的文档、被转换的信号采样、和/或被加密的数字通信,使得该服务和请求方实体不再具有对该输入数据的访问权。这可以是下面的情况,例如,其中由于请求方实体接收到预期的输出,故请求方实体通常不被预期为需要对该输入数据的进一步的访问。

云场景

方法100能够在其中执行的一种特定场景是,当云服务执行该方法、同时与远程客户端设备进行交互时。考虑图2,其中图2示出了包括云计算系统210的示例性环境200,其中该云计算系统210经由网络220连接到分别示出成扫描仪客户端设备230、平板客户端设备240和膝上型客户端设备250的各种客户端设备。所述云计算系统和客户端设备可以具有各自的处理资源212、232、242和252与存储器/存储装置资源214、234、244和254,如下面所更详细讨论的。

云计算系统210可以包括服务提供者模块216,后者提供诸如云存储装置、用户帐户等等之类的云服务功能。此外,云计算系统还可以具有任务实现模块218,其执行由各个客户端设备所请求的特定处理任务(例如,渲染、加密、信号处理、文档生成/修改、搜索等等)。应当注意,在一些情况下,该任务实现模块可以远离云计算系统210来体现,例如,云服务充当为执行任务的第三方平台和请求该任务的客户端设备之间的桥梁。在这些情况下,该处理任务其自身可以远离云计算系统地在第三方平台上执行。

客户端设备230、240和250可以具有与服务提供者模块216进行交互的服务请求模块236、246和256的相应实例。例如,这些服务请求模块可以是在各个客户端设备上执行的云使能(cloud-enabled)的应用的相应本地实例的一部分,该本地实例取回在云计算系统210上存储的各种不同的数据项。在一些情况下,云计算系统既提供用户存储装置部分又提供云服务存储装置部分。通常,云存储装置的云服务存储装置部分可以由云服务进行使用,以用于与由该云服务进行的处理相关联的存储,而用户存储装置部分可以用于向各个用户提供云存储装置帐户。例如,各个用户通过登录到用户帐户,可以能够从任何客户端设备访问他们的云存储装置,而在客户端设备上的相应服务请求模块可以从该用户帐户取回诸如文档之类的数据。在一些情况下,客户端设备可以规定要取回的特定数据项,在其它情况下,客户端设备和云服务可以自动地将本地客户端设备数据与用户的云存储装置帐户进行同步。

渲染示例

如上所述,一些实现方式可以执行针对于请求方实体的多种不同类型的处理任务。下面的讨论提供了实现方式的一些另外的细节,其中所述服务代表用户来执行渲染任务。例如,该渲染任务可以对作为输入数据而被提供的各种文档类型进行渲染,例如,便携式文档格式(pdf)文件、附言(postscript)(ps)文件、文字处理文件(例如,microsoft)、幻灯片演示文件(例如,microsoft)、标记语言文件(例如,可扩展标记语言(xml)、超文本标记语言(html))等等。可以将这些文档从它们的原始文档格式渲染成各种图像格式,例如,联合图像专家组(jpeg)文件、标签图像文件格式(tiff)文件、位图(bmp)等等。

例如,给定的用户可以从与他们相关联的任一客户端设备上传和维护各种文档,以及对它们进行访问。此外,用户可能能够向云服务提交渲染某些文档的请求,并且随后云服务可以向用户提供对输出图像的访问。在一些情况下,云服务可以将输出图像文件存储在用户的云存储装置帐户中以便以后访问,或者可以响应于该渲染请求,向用户的客户端设备发送图像文件。例如,如下面所进一步讨论的,云服务可以将该图像文件嵌入在存储在云存储装置帐户中的另一个文档中。

为了术语的清楚说明起见,术语“外部文档”指代在其中嵌入有另一个文档的文档,而术语“嵌入文档”指代被嵌入在外部文档之中的文档。术语“嵌入图像”指代嵌入在外部文档中的图像。术语“输入文档”指代一类输入数据,例如,提供给服务用于进行处理的文档。

紧接着的下面讨论关注于在云场景中进行渲染,但应当注意,服务也可以在客户端设备上本地执行,如本文所讨论的。假定云计算系统210从扫描仪客户端设备230接收到请求“对输入文档进行渲染以获得相应的图像文件,并将渲染的图像文件包括在外部文档(例如,html网页)中作为嵌入图像”。随后,云服务可以通过向这些客户端设备中的任何一个发送在其中包括有该经渲染的图像文件的外部文档,来提供对该外部文档的访问。

在一些情况下,在对该渲染请求处理之后,云服务可以默认地删除所接收的输入文档。由于一旦完成了该渲染,用户可能不再预期使用该输入文档,因此上述操作可以是预期的行为。但是,考虑该渲染请求失败的情况,例如,由于渲染的图像的尺寸超过了某个预先定义的约束(例如,渲染的图像不可以大于50兆字节)。在一些实现中,当检测到失败时,云服务可以保存该输入文档,而不是删除该输入文档。例如,云服务可以将输入文档存储在用户的云存储装置中,或者将该输入文档发送回给用户(例如,发送给用户的膝上型计算机、平板设备等等)。由于云服务已经自动地保存输入文档,因此该输入文档没有丢失,故用户不需要使用扫描仪客户端设备230来获得另一个适当的输入文档。

在一些情况下,云服务还可以将输入文档嵌入在外部文档中作为嵌入文档(例如,作为附加的数据对象,其不是必须作为图像被包括在外部文档中的)。例如,不是将渲染的图像文件包括在外部文档中,云服务可以将输入文档以其原始格式来包括在外部文档中。因此,当用户可能不能够看到如所请求地在外部文档中渲染的嵌入文档时,他们可以能够至少使用适当的应用来观看该嵌入文档。在pdf文件的情况下,例如,用户能够点击在外部文档中嵌入的pdf文件,在个体的客户端设备上启动pdf阅读器应用的本地实例。

数字笔记本示例

在一些实现中,每一个客户端设备230、240和/或250可以运行数字笔记本应用的实例(例如,microsoft等等)。在这些实现中,云计算系统210可以提供数字笔记本云服务,数字笔记本云服务针对于客户端设备上的数字笔记本应用的本地实例来执行各种支持功能。例如,数字笔记本云服务可以为用户笔记本提供云存储装置,执行各种文件类型的渲染,还可以支持各种类型的内容扩增(例如,如下面所进一步讨论的网页剪辑)。此外,如下面所进一步讨论的,数字笔记本是在其中可以将图像和/或其它文档类型嵌入的外部文档的一个例子,但很多其它类型的文档也可以充当外部文档(pdf、ps文件、文字处理文件、幻灯片演示文件、标记语言文件等等)。为了说明下面的例子起见,数字笔记本云服务可以执行上面参照服务提供者模块216所讨论的功能,而数字笔记本客户端应用的本地实例可以执行上面参照服务请求模块236、246和/或256所讨论的其它功能。

图3示出了具有各种标签302的示例性数字笔记本。在该情况下,用户在该笔记本中打开“宠物”标签,此外,该笔记本还包括标题为“车辆”和“乐器”的标签。在宠物标签中存在两个页面304,一个标题为目前打开的“chewy”,另一个标题为“boots”。目前打开的“chewy”页面具有背景内容306以及位置308,其中背景内容306大致描述了名字为chewy的狗的遗传宗谱,在位置308处,用户希望放置渲染的图像内容。假定该笔记本以图3中所示的状态来存在于该用户的云存储装置中,并且用户可经由任何的客户端设备来访问。

接着,假定用户使用扫描仪客户端设备230,对他们的狗chewy的图片进行扫描。用户这样做可以是由于他们希望让云服务渲染他们的狗的图片,并在位置308处将图像插入到数字笔记本300中。扫描仪客户端设备可以对该图片进行扫描以获得pdf文件,并且向云计算系统210发送该pdf文件。例如,扫描仪客户端设备可以发送遵循与在云计算系统上运行的数字笔记本云服务相关联的api的请求消息。该消息可以指示应当对该pdf进行渲染,并将该pdf包括在数字笔记本300中。在接收到该消息时,云计算系统210可以使用任务实现模块218,尝试将pdf文件渲染成诸如jpeg、bmp、tiff之类的图像格式或者其它图像文件格式。

图4示出了在渲染成功地完成,并且不满足失败标准的场景下的数字笔记本300。在该情况下,云计算系统210将渲染的图像文件在位置308处包括在数字笔记本300中,并且在用户的云存储装置中更新该笔记本。随后,用户可以经由他们的客户端设备中的任何一个,访问该笔记本文件。在该情况下,在渲染完成之后,云计算系统可以删除扫描仪客户端设备230所创建的pdf文件。这可以与用户的预期相一致,这是由于他们关注于将正确的图像文件插入到该笔记本中,而可能并没有期望保持由扫描仪客户端设备所生成的pdf文件。

图5示出了在渲染没有成功地完成的场景下的数字笔记本300。这里,或者是云计算系统210未能够成功地渲染pdf文件,或者出于将要进行讨论的各种原因中的一个或多个而以其他方式将该请求视为失败的请求。应当注意,扫描仪客户端设备230在向云服务发送该请求之后,可能不存留该pdf的任何本地副本。因此,如果云服务将在该请求成功时简单地如所做的那样删除该pdf文件,则用户将需要重新扫描他们的图片,以便获得chewy的另一个图像用于该笔记本。但是,在该情况下,云服务可以将pdf文件作为附件500嵌入到数字笔记本300中,如图5中所示。因此,即使用户没有从云服务接收到预期的结果(具有渲染的图像的笔记本),在无需重新创建该pdf文件的额外的努力的情况下,用户仍然可以访问该pdf文件。在一些情况下,云服务可以向用户的客户端设备中的一个或多个发送指示“渲染已失败”的错误消息(errormessage)。此外,云服务可以对该用户的云存储装置中的笔记本进行更新以包括该错误消息,其中该错误消息替代于经渲染的图像文件而被显示。应当注意,在该例子中,嵌入的pdf文件是经由用户的扫描仪客户端设备从用户接收的输入数据,其不具有扫描仪客户端设备原始请求的图像格式。

应当注意,可能存在用户希望将渲染的图像和pdf文件自身两者均包括在数字笔记本300中的情形。在这些情形下,扫描仪客户端设备230可以在请求消息中指示“应当既将pdf渲染到数字笔记本300中,又将pdf以其原始文件格式来嵌入在数字笔记本300中”。如果成功地完成渲染,则数字笔记本300可以如图6中所示地出现,其中该图像成功地渲染并且附件500(pdf文件)被嵌入。或者,如果渲染失败,则该笔记本可以如图5中所示地出现,其丢失了渲染的图像,但包括嵌入的pdf文件。

此外,应当注意,数字笔记本300可以具有各种文件格式。例如,一些实现可以使用特定于笔记本应用的专有文件格式,其中该专有文件格式支持其它操作,比如在该笔记本上绘画、对该笔记本的一部分进行剪切等等。其它实现可以使用更通用的文件格式,例如,通过将笔记本作为html文件来维护。

拖放实现

在先前的例子中,第一客户端设备(例如,扫描仪)向云服务提交请求,而具有嵌入图像的文档被提供给第二客户端设备(例如,膝上型计算机)。在其它实现中,相同的客户端设备可以既向云服务提供该请求又接收具有嵌入图像的文档,如下面所进一步讨论的。

图7示出了一种示例性桌面型界面700,如可在客户端设备(例如,膝上型客户端设备250)上所示出的。在该特定的例子中,该桌面型界面包括到存储在膝上型客户端设备的本地文件系统(例如,硬盘驱动器)上的pdf文件的快捷方式702。用户可以将该快捷方式拖放到数字笔记本300中和拖放到位置308上。本地笔记本应用可以将该拖放解释成“向云服务发送请求,以便将pdf文件渲染成图像并将该图像包括在数字笔记本300中”的指令。

在该渲染成功的情况下,云服务可以更新数字笔记本300以包括渲染的图像,并将更新后的笔记本发送回膝上型客户端设备。在该情况下,桌面型界面700可以如图8中所示地出现,此时,该图像被成功地渲染到数字笔记本300中。云服务可能已经更新了云存储装置,其中经更新的笔记本在其中具有经渲染的图像,从而用户可以从其它客户端设备(例如,平板客户端设备240)访问该经更新的笔记本。在该情况下,应当注意,由于用户的预期已经通过该成功的渲染而获得满足,因此不将pdf文件嵌入在经更新的笔记本中。

在渲染失败的情况下,桌面型界面700可以如图9中所示地出现。这里,没有将图像渲染到数字笔记本300中。但是,云服务将pdf文件作为附件500嵌入在笔记本中,并更新该用户的云存储装置帐户中的笔记本。因此,当用户从他们的客户端设备中的任何一个访问该经更新的笔记本时,他们可以使用任何已安装的pdf阅读应用来单独地打开该pdf文件。换言之,云服务认识到该渲染失败将导致未满足的用户预期,并主动地确定该pdf文件应当嵌入在笔记本文件中。在某种意义上,这可以视作为用户体验的优雅的降级,其某种程度上缓解了渲染失败的影响。

网络剪切(websnipping)示例

在前面的特定例子中,对单一pdf文件进行渲染,以获得单一图像。但是,应当注意的是,pdf文件的前述渲染只是示例性的,可以根据所公开的实现来渲染其它文件类型。例如,图10-12示出了可以响应于单一请求,渲染多种不同的文件类型的场景,如下面所讨论的。

图10描绘了在示出网页浏览器1000的配置下的桌面型界面700。在该例子中,用户导航浏览称为“abcdogpics.com”的网站,其中该网站可以托管(host)有用户的狗以及其它狗的图片。这里,用户希望从该网站获得内容,并将该内容包括到数字笔记本300中。用户可以使用剪切工具或者其它内容识别工具来选择内容1002。应当注意,内容1002周围的粗边界说明这是所选定的内容。

在该例子中,内容1002包括两种不同类型的内容:示出为文本“chewy’stree”的html内容以及图像。在该例子中,假定该网站托管有bmp格式的图像。因此,用户对于希望渲染到他们的笔记本中的一个或多个图像中的两种不同的文件类型(html和bmp)的内容进行剪切(snip)。

对内容1002的选择可以被本地笔记本应用解释成“渲染内容1002,并将该渲染的内容放置到数字笔记本300中”的请求。响应于对该内容的剪切(snipping),本地笔记本应用可以向云服务发送执行该渲染的请求。在一些情况下,本地笔记本应用可以从网页中提取所选定的内容,并将该内容发送给云服务。在其它情况下,本地笔记本应用可以将该网页的统一资源定位符连同该网页中的用户希望进行渲染的特定内容的某种标识,一起发送给云服务(例如,该请求可以标识所选定的内容的一个或多个html属性)。

倘若云服务成功地渲染了用户所标识的html和bmp内容,则数字笔记本300可以如图11中所示地出现。这里,成功地将剪切的内容渲染到数字笔记本300中,或许渲染成一个或多个jpg文件。在该情况下,云服务尚未存留该网页或者将该网页包括在笔记本中。

图12示出了在云服务处没有适当地完成该渲染的场景。在该情况下,在位置308中没有出现jpg图像。但是,应当注意,html文件1200已经被嵌入到数字笔记本300中。因此,即使用户没有如预期地在他们的笔记本文件中具有渲染的jpg图像,他们也至少将所托管的内容(hostedcontent)嵌入在笔记本中以便以后使用。这在各种情形下是有用的,例如,如果域http://abcdopgpics.com变得不可用,用户未连接到网络,等等。应当注意,在一些情况下,该嵌入的内容可以包括所托管的整个网页(其包括嵌入的bmp文件),或者只包括用户所选定的网页的一部分(例如,该bmp文件和与文本“chewy’stree”相对应的html内容的部分)。

本地实现

此外,还可以在个体计算设备上,本地执行前述的技术。通常,给定的计算设备可以既具有服务和又具有使用该服务进行某种处理的请求应用。例如,该服务可以是操作系统例程、由其它应用和/或专用硬件执行的加密或压缩功能、由数学或者统计包执行的数学例程等等。

继续上面所阐述的数字笔记本和渲染示例,考虑平板客户端设备240和/或膝上型客户端设备250具有能够对文件进行渲染的本地渲染服务的场景。这些客户端设备仍然可以使用云服务来存储文件,例如,具有这些客户端设备渲染的嵌入图像的笔记本。但是,不是由云服务执行该渲染,而是由本地渲染服务来执行。

现在,考虑上面介绍的扫描仪场景,其中,扫描仪客户端设备230向云服务发送pdf文件以进行渲染。替代地,扫描仪客户端设备可以向平板客户端设备240和/或膝上型客户端设备250发送pdf文件以在其上进行渲染。本地笔记本应用可以以与上面针对云实现所讨论的那些相似的方式,对输入pdf、本地渲染服务所使用的计算资源和/或输出图像的特性进行评估。

其它处理类型

在前述的渲染示例中,云服务或者本地服务将各种文件格式的文档渲染成不同文件格式的图像。更通常来说,服务可以执行针对于给定的请求方实体(例如,用户、应用或者设备)的各种各样的处理任务。下文讨论可以实现前述的技术的一些不同类型的服务。

应当注意,可以将给定的被渲染图像视作为输入文件的表示,并且可以将该处理任务视作为将输入数据从一种电子格式(例如,pdf文件)到另一种电子格式(例如,jpg文件)的转换。某些服务可以执行其它类型的处理任务,其也将输入数据转换成该输入数据的不同表示。例如,如果输入数据是波形的时域采样,则服务可以使用诸如快速傅里叶变换(fft)之类的变换运算,将该时域采样转换成频域表示。再举一个例子,加密服务可以将未加密的输入数据转换成该输入数据的加密表示。

将输入数据转换成该输入数据的不同表示的服务的另一个例子,是用于将一个文档转换成另一个文档的服务。例如,文档转换服务可以将第一文字处理格式(例如,microsoft)的文字处理文档转换成第二文字处理格式(例如,),或者转换成不同的文档类型(例如,电子表格、标记语言文档、ascii文本等等)。当识别到诸如本文所讨论的那些之类的失败标准时(例如,文档转换服务不能适当地完成该转换,输入或输出文档太大,该处理花费时间太长或者使用过多的计算资源等等),文档转换服务可以利用第一格式来保存输入文档。

其它服务可以产生可能不被视作为输入数据的表示的输出。例如,输入数据可以是具有各种搜索项的搜索查询,输出可以是与该搜索查询相匹配的文档的列表。再举一个例子,输入数据可以是一个数学值,处理任务可以是对该数学值和其它数学值执行各种操作(例如,将输入数据加到一个常量)。

搜索查询的一个特定例子可以是用户向本地应用(例如,前述的笔记本应用)输入国际标准图书编号(isbn)的场景。该本地应用可以向云服务提供isbn,转而该云服务尝试向用户提供该图书自身的一部分或者全部的数字副本(例如,该图书的pdf副本)。在一些情况下,该图书的pdf可能没有可获得的。在这些情形下,云服务可以替代地通过向用户提供该图书的购买网页的url,来对该用户进行响应。在另外的实现中,云服务可以将用于该图书的购买服务网页渲染到另一个文档(例如,笔记本)中。在任一情况下,云服务还可以将图书的isbn包括在该文档中,使得用户不需要在稍后时间再次查找该isbn。

在其它实现中,本地应用可以执行上面所描述的处理。例如,响应于用户输入了isbn,本地应用可以尝试下载该图书的数字副本。如果该图书的数字副本不可获得,则本地应用可以替代地访问该图书的购买网页url,并将该网页存留在客户端设备上。在本地应用创建/修改文档的情况下,本地应用可以请求由本地或远程渲染服务对该网页进行渲染,将渲染的网页插入到该文档中。如果该渲染失败,则本地应用可以将该网页作为对象嵌入到该文档中(如先前所讨论的),和/或可以将isbn嵌入到该文档中,使得用户不需要再次取回该isbn。

请求类型

在一些实现中,提供给服务的请求可以包括:规定应当如何对该请求进行处理的各种字段。在一些情况下,请求可以明确地指示是否应当在该服务所产生的输出中提供输入数据。如上面所讨论的,当某个失败标准被满足时,该服务可以覆盖该请求。

例如,在上面所讨论的特定例子中,扫描仪客户端设备230可以向云计算系统210发送规定应当如何将pdf文件包括在笔记本(notebook)中的请求。一些请求可以包括规定该pdf是否应当在数字笔记本300中渲染(如图4中所示)、嵌入在笔记本中(如图5中所示)、或者既嵌入又渲染(如图6中所示)的一个或多个参数。再举一个例子,用于将时域信号转换成频域表示的请求,可以指示:是否应当将输入信号采样包括在具有该信号的频域表示的输出中。

本文所公开的技术可以在下面的情形下执行:当所述请求指示所述服务不应当将输入数据包括在处理任务的输出中时。在这些情形下,当服务将输入数据包括在输出中时,可以将服务视作为有效地覆盖请求参数。虽然这可能是与在请求中表示的参数相反的,但结果可能是可接受的,这是由于这些请求参数是基于该服务请求将成功地完成的假定的。通过响应于检测到某种失败标准而对请求参数进行覆盖,可以对输入数据进行保存以便后续使用,而不是丢失该数据。例如,在上面所阐述的渲染示例中,随着渲染请求一起输入的pdf、html和/或bmp文件被保存在笔记本中。在上面所提及的信号转换示例中,可以以某种方式对输入信号采样进行存留,使得当转换由于某种原因而失败时,输入信号采样对于请求方实体仍然是可访问的,例如,通过在该转换没有完成时,将采样值存储在指定的位置。即使当请求方实体请求丢弃这些采样值时,信号转换服务也仍然这样做。

应当注意,在一些情况下,在进行请求之后,请求方实体可以默认地删除输入数据。在上面所阐述的云渲染示例中,在该渲染显然将成功完成之前,或者事实上在甚至发起该渲染之前,云计算系统210可以对来自扫描仪客户端设备230的请求进行确认。从云设备接收到该确认,在假定云服务将成功地对该pdf文件进行渲染的情况下,可以提示扫描仪客户端设备删除该pdf文件的其本地副本。在一些情况下,扫描仪客户端设备甚至不曾了解到失败的渲染。同样,在上面所阐述的信号转换示例中,服务可以默认地删除输入采样,而不是将它们存储在指定的位置(当转换失败时,它们所存储到的位置)。

此外,一些请求还可以规定如何对输出数据进行安置(arrange)。例如,在渲染示例中,所述请求可以指示应当在数字笔记本300中包括输出图像的特定位置。此外,该请求可以规定将渲染的图像包括在什么地方,例如,位于现有的标签或者页面中的特定位置、在新的笔记本中生成新的标签或者页面等等。再举一个例子,所述服务可以是用于减少输入图像的大小的压缩服务。该请求可以指示将该图像的压缩版本包括在输出网页中的什么位置。

此外,如上所述,所述请求可以具有代码的形式(例如,诸如html之类的标记语言格式)。在一些情况下,可以使用该请求的代码来构造输出。例如,在上面的渲染示例中,请求可以是指代特定的pdf文件的网页的html表示,例如:

上面的示例性请求包括:用于请求服务执行渲染操作的参数,例如,

“imgdata-render-src”。该参数指代“myappfileblockname”,其是对于包括在该请求中的pdf的文件名(其标题为“chewynexttotreepdf”)的间接引用。规定“data-attachment”的行(line)是用于使服务将该pdf文件嵌入在笔记本的页面中的明确请求。该行的缺少,可以指示该pdf文件不应当被嵌入在笔记本页面中。如上所述,在渲染操作失败的情况下,该服务可以将对该行进行省略的请求覆盖(override),而将pdf文件嵌入在笔记本页面中。

失败标准

如上所述,在发起相关联的处理任务之前,所述服务可以确定已满足了某种失败标准。其它失败标准可能在由该服务处理期间变得显然,也可能甚至直到在处理完成之后都不是明显的。结果,在一些情况下,可以立即地判定服务请求将失败,在其它情况下,在服务认识到满足该失败标准之前,将执行某种处理,或者甚至完成某种处理。

在一些情境下,识别失败标准可以在开始该处理任务之前。例如,在能够通过对输入数据进行评估来检测到失败的情况下,可以执行对失败的提早识别。例如,在上面所讨论的渲染实现中,对于渲染目的而言,可能不支持一些文件类型(例如,mime类型)。因此,如果输入数据不在支持的mime类型中(例如,没有可用的渲染器),则可以满足失败标准。再举一个例子,一个失败标准可以是:输入数据的二进制大小不可以超过预定的阈值(例如,15兆字节)。再举一个例子,还可以将畸形(malformed)输入(例如,具有丢失的html标签)视作为失败标准。在服务执行数学运算的情况下,失败标准可以规定不被该服务接受的某些数据类型(例如,不要无符号整数),还可以规定关于该输出的上限和/或下限(例如,32比特的有符号整数的限制)。

在开始该处理任务之前可以识别的另一种类型的失败标准是已失败的认证。假定例如,数字证书、用户名和密码或者其它认证机制被用来对输入数据进行认证。如果认证机制失败,则输入数据可以如本文所讨论地被保存,而无需发起处理任务。

在其它情境下,当处理正在进行时,可能检测到失败。例如,与资源使用有关的失败标准,对于在处理期间识别失败可能是有用的。在一些情况下,该失败标准可以规定:关于用于该处理的某些计算机资源(例如,用于处理给定请求的存储器的量)的限制、关于处理器时间/周期的量的限制、对于跨网络传送的数据的量的限制等等。如果对给定请求的处理超过这样的限制,则该请求可能在完成之前就失败。例如,在一些情况下,当满足该标准时,可以杀掉该处理任务。在一些情况下,这样的资源使用标准随着服务的负载发生改变而发生变化,而在其它情况下可以是静态的。

在处理期间检测到失败的另一个例子发生在,当正在被处理的文件包括对远程文件的引用、并且该引用不能够被解析或者访问时。例如,网络失败可能阻止这些远程文件被访问,或者这些引用可能标识用户的本地网络上作为某些lan权限的结果而使得该服务不可访问的lan存储地址。这些远程文件可以是用户希望渲染到笔记本中的文件、用户希望进行加密的文件、用户希望进行压缩的文件、等等。

在一些情况下,直到处理完成和产生输出之前,失败可能都不是明显的。因此,一些失败标准涉及输出的特性,并且服务可以对输出进行评估以判定是否满足这些标准。例如,输出数据的总体大小可以是一个失败标准,例如,渲染的图像、转换的信号、压缩的文件等等的总大小等等不可以超过固定的大小(例如,75兆字节)。在一些情况下,输出可以具有多个组成部分(例如,笔记本文件的页面、电子表格文件中的工作表等等),并且每一个组成部分的大小可以具有规定的限制(例如,不大于5兆字节的存储器占用)。其它实现可以规定关于组成部分的数量的限制,例如,不超过30页被渲染、电子表格中不超过10个工作表等等。

在一些情况下,输出自身可能不是孤立地造成失败。但是,输出可以是具有某个相关联标准的数据集合的一部分,并且将该输出添加到该集合可能造成该数据集合触发该标准。换言之,输出自身并不满足失败的标准,但当与集合中的其它项聚合时,则发生失败。例如,用户可以具有在云存储装置上的存储装置配额(其以字节、兆字节、吉字节等等进行表示),并且当将输出存储在用户的云存储装置中时若造成用户的总文件存储量超过他们的存储装置配额则可能满足失败标准。再举一个例子,无论个体文件大小为何,对于用户可以在云存储装置中存储的文档的总数量可具有固定的限制(例如,100个文档,并且该输出可以是第101个文档)。

应当注意的是,还可能存在当将输入数据存储在用户的云存储装置中时将造成他们超过存储装置配额的情况。从用户的角度来看,一些实现可以在失败的情况下覆盖存储装置配额,至少临时地阻止数据丢失,并提供相对“温和(soft)”的失败。其它实现在这些情形下可以删除输入数据。

其它失败标准可以涉及:该处理实际上崩溃、或者报告某种类型的错误的情形。例如,处理任务可以报告输入数据是畸形的,且渲染已被暂停。再举一个例子,处理任务自身可能具有当对输入数据进行处理时违反的某些约束(例如,虚拟存储器限制)。

此外,应当注意,在一些失败情况下,用户仍然能够访问部分结果。假定例如,服务对于渲染的文档施加了30页的限制,并且渲染任务成功地完成,并输出了50页的渲染图像。因此,即使该服务能够向用户提供全部的渲染的50页文档,但由于策略原因,也只向用户提供仅仅30页。在这些环境下,该服务可以采取步骤来保存输入数据,例如通过对用户的云存储装置中的笔记本进行更新,以包括50个渲染页中的30个页以及该pdf文档自身。此外,在用户没有接收到全部的50个渲染页的情形下,该服务也可以执行相似的步骤,这是由于在渲染了这些页面中的仅仅一些之后,渲染任务发生崩溃。

再举一个例子,考虑用于将数据库文件转换成电子表格的服务。例如,假定该服务关于输出电子表格施加了10个工作表的限制,并且电子表格创建任务成功地完成,并输出具有15个工作表的电子表格。因此,即使该服务能够向用户提供全部15个表单的电子表格,但由于策略原因,也只向用户提供仅仅具有10个工作表的部分电子表格。在这些情形下,该服务可以采取步骤来保存输入数据,例如将数据库文件嵌入在部分电子表格中,将该部分电子表格保存在用户的云存储装置中。此外,在用户没有接收到全部的15个工作表的情形下,该服务也可以执行相似的步骤,这是由于在创建了这些工作表中的仅仅一些之后,电子表格创建任务发生崩溃。

此外,还应当注意,在一些情况下,当处理开始时,所述输出的特性可能不是明显的。例如,在pdf渲染的情况下,对pdf进行分析以确定渲染的pdf将是多大、其将包含多少页、各个页面将是多大等等,可能是不可能的或者不高效的。再举一个例子,对数据库文件进行评估以确定在输出电子表格中将生成多少不同的工作表,也可能是不可能的或者不高效的。在这些情形下,有用的或者需要的是,允许完成处理任务,使得可以对输出进行评估。

另外的示例

本文所讨论的各种例子可以包括由至少一个计算设备执行的第一方法。该第一方法示例可以包括:获得服务对输入数据执行处理以产生输入数据的输出表示的请求;向该请求应用标准;以及响应于确定满足该标准,保存输入数据。在第二示例性方法示例中,第一方法示例的输入数据可以包括:用于该服务进行渲染以获得输出表示的文档。在第三方法示例中,向第一和第二方法示例中的请求应用标准,可以包括:对输入数据进行评估。在第四方法示例中,向第一、第二或第三方法示例中的请求应用标准,可以包括:对用于执行该服务的计算机资源进行评估。在第五方法示例中,向第一、第二、第三或第四方法示例中的请求应用标准,可以包括:对输入数据的输出表示进行评估。在第六方法示例中,第一到第五方法示例中的任何一个的请求是代表具有相关联的云存储的用户的,并且保存输入数据包括:将输入数据存储在用户的相关联的云存储装置中。在一些另外的方法示例中,第一到第六方法示例中的一些或者全部,由远离请求方实体(例如,应用)运行的云服务来执行,或者由在具有请求方实体的计算设备上运行的本地服务来执行。

本文所讨论的各个例子还可以包括第一示例性云计算系统,其中该第一示例性云计算系统包括一个或多个硬件处理单元和存储计算机可执行指令的一个或多个计算机可读存储设备,这些计算机可执行指令当被一个或多个硬件处理单元执行时,使得第一示例性云计算系统通过网络接收包括输入数据的服务请求,确定该服务请求指示该输入数据不应当被第一示例性云计算系统存留,响应于检测到失败,通过存留输入数据来覆盖该服务请求。在第二示例性云计算系统示例中,第一示例性云计算系统示例的计算机可执行指令使得云计算系统通过将输入数据保存在云存储装置中,来存留输入数据。在第三示例性云计算系统示例中,第一或第二云计算系统示例的计算机可执行指令使得云计算系统通过将输入数据作为对象嵌入在文档中,来存留输入数据。在第四云计算系统示例中,第一到第三云计算系统示例的云计算系统提供数字笔记本云服务,并且输入数据被嵌入在数字笔记本中。在第五云计算系统示例中,第一到第四云计算系统的服务请求是对输入数据进行渲染的请求。在第六云计算系统示例中,第一到第五云计算系统示例的输入数据包括便携式文档格式文件。在第七云计算系统示例中,第一到第六云计算系统示例的计算机可执行指令使得该云计算系统通过将标准应用到以下至少一个,来检测失败:输入数据、该服务请求的输出、或者用于处理该服务请求的计算机资源。在其它示例中,客户端设备本地执行上面参照第一到第七云计算系统所讨论的处理。

本文所讨论的各种例子可以包括由至少一个计算设备执行的另外的第一方法示例。该另外的第一方法示例可以包括:获得具有输入数据的服务请求,通过对该服务请求的输出进行评估来向该服务请求应用标准,并且响应于检测到该服务请求的输出满足该标准,对该服务请求的输入数据进行保存。在第二另外的方法示例中,第一另外的方法示例由在至少一个计算设备上运行的本地服务来执行,其中该本地服务代表着同样在所述至少一个计算设备上运行的应用。在第三另外的方法示例中,在第一或第二另外的方法示例中应用标准包括:判定输出的总体存储器占用是否超过阈值。在第四另外的方法示例中,第一到第三另外的方法示例的应用标准包括:判定输出的任何组成部分是否具有超过阈值的存储器占用。在第五另外的方法示例中,第一到第四另外的方法示例的应用标准包括:判定对输出进行存储是否使得存储装置配额被超过。在第六另外的方法示例中,第一到第五另外的方法示例的存储装置配额包括与用户帐户相关联的云存储装置配额。在第七另外的方法示例中,第一到第六另外的方法示例的保存输入数据包括:将输入数据存储在与用户帐户相关联的云存储装置中。

设备实现

返回到参见图2,如所示的环境200包括若干设备。在该情况下,为了便于说明起见,这些设备被表征为客户端设备和云计算系统。在该例子中,客户端设备表现为扫描仪、平板设备和膝上型设备。但是,其它类型的设备也可以充当客户端设备,例如,智能手机、桌面型计算机、打印机或者具备计算能力的家庭电器。通常,只要一个设备具有某种计算硬件,则根据所公开的实现,该设备就可以充当客户端设备。

云计算系统210可以包括一个或多个基于云的服务器类型设备,尽管在一些情况下,该云计算系统可以包括前述的客户端设备类型中的任何一种。云计算系统可以与同该云计算系统同处一地的数据存储(datastore)进行通信。当然,并非所有的设备实现都能够被图示,对于熟练的技术人员来说,根据前面和下面的描述,其它设备实现也应当是显而易见的。

如本文所使用的术语“设备”、“计算机”、“计算设备”、“客户端设备”和/或“服务器设备”可以意味着具有一定量的硬件处理能力和/或硬件存储/记忆能力的任何类型的设备。处理能力可以由一个或多个处理器(例如,硬件处理单元/内核)来提供,所述一个或多个处理器可以执行具有计算机可读指令形式的数据来提供功能。可以将计算机可读指令和/或数据存储在诸如存储装置/存储器和/或数据存储之类的存储装置上。

该存储装置/存储器可以在设备内部,也可以在设备外部。该存储装置可以包括易失性或非易失性存储器、硬盘驱动器、闪速存储设备和/或光存储设备(例如,cd、dvd等)等等中的任何一个或多个。如本文所使用的,术语“计算机可读介质”可以包括信号。相比而言,术语“计算机可读存储介质”不包括信号。计算机可读存储介质包括“计算机可读存储设备”。计算机可读存储设备的例子包括易失性存储介质(如,ram)和非易失性存储介质(如,硬盘驱动器、光碟和闪存等等)。

在一些情况下,设备配置有通用处理器和存储装置/存储器。在其它情况下,设备可以包括片上系统(soc)类型的设计方案。在soc设计方案实现中,可以将设备所提供的功能集成在单一soc或者多个耦合的soc上。一个或多个相关联的处理器可以被配置为与诸如存储器、存储装置等等之类的共享资源和/或一个或多个专用资源(例如,配置为执行某种特定功能的硬件模块)进行协调。因此,如本文所使用的术语“处理器”还可以指代中央处理单元(cpu)、图形处理单元(gpu)、控制器、微控制器、处理器核心或者适合于在常规的计算架构以及soc设计方案中实现的其它类型的处理设备。

在一些配置中,可以在设备的制造期间,或者通过准备将该设备出售给最终用户的中间商,将服务请求模块、服务提供者模块和/或任务实现模块作为硬件、固件或者软件来安装。在其它实例中,最终用户可以稍后安装务请求模块、服务提供者模块和/或任务实现模块,例如通过下载可执行代码,并将该可执行代码安装在相应的设备上。

此外,还应当注意,设备通常可以具有输入和/或输出功能。例如,计算设备可以具有诸如键盘、鼠标、触摸板、语音识别等等之类的各种输入机制。此外,设备还可以具有诸如打印机、监视器等等之类的各种输出机制。

此外,还应当注意,本文所描述的设备可以以独立方式或者协作方式进行工作,以实现所描述的技术。例如,方法100可以在单一计算设备上执行,和/或分布在通过网络220进行通信的多个计算设备上。在不进行限制的情况下,网络220可以包括一个或多个局域网(lan)、广域网(wan)、互联网等等。

结论

虽然利用特定于结构特征和/或方法动作的语言来描述了本发明,但应当理解的是,所附权利要求书中限定的主题不一定限于上面所描述的这些特定特征或动作。相反,上面所描述的特定特征和动作被公开成实现本发明的示例性形式,并且本领域普通技术人员应当认识到的其它特征和动作也旨在落入本发明的保护范围之内。

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