用于移动设备上的应用的后台传输服务的制作方法

文档序号:7889363阅读:236来源:国知局
专利名称:用于移动设备上的应用的后台传输服务的制作方法
技术领域
本发明涉及后台数据传输。
背景技术
允许应用(例如,第三方应用)在移动设备的后台运行并执行任务放任了恶意或设计糟糕的应用耗尽电池,消耗带宽,并减缓移动电话/设备性能。在其中系统资源受限并且期望前台体验以全保真度和响应性运行的移动设备上,这是个问题。一般而言,CPU、存储 器和网络带宽是有限的系统资源;此外,带宽在特定网络条件下是高度可变的。結果,在一种解决方案中,有效地禁用应用后台处理,这表现在当ー应用被从后台移除时,该应用被“停用”。这意味着应用当前依靠用户将其保持在前台以继续这些任务,包括数据传输。该解决方案通常是不合乎需要的。

发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施例中进ー步描述的ー些代表性概念。本发明内容不g在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。简而言之,此处描述的主题的各方面涉及用于将后台传输服务配置成在移动设备上运行以便控制用于应用的网络数据通信的传输的技术。后台传输服务基于ー个或多个策略来管理应用对数据传输的请求,该ー个或多个策略以限制干扰前台应用操作的方式控制后台应用数据传输的资源使用。在一个实现中,后台传输服务被耦合到下载管理器,该下载管理器被配置成进行远程连接以便向远程源传输数据或传输来自远程源的数据以满足传输请求。在一方面,数据共享服务将传输(下载)自远程源的数据移动或复制到可由应用访问的本地存储中。数据共享服务移动或复制来自可由应用访问的存储的数据以便将数据传输(上传)至远程源。在一方面,应用实例管理器向后台传输服务提供与应用的卸载状态、许可证撤消或恢复状态相关的通知,后台传输服务可分别取消、暂停和/或继续该应用的每ー个待决传输请求。策略可涉及一次只允许最大数量的待办传输、基于数据大小的限制、连接规则(例如,Wi-Fi对比蜂窝)和/或带宽限制。策略可基于条件,诸如其他应用数据传输请求、可用蜂窝服务、Wi-Fi可用性、桌面浏览可用性、功率状态、电池电量水平和/或充电状态。在一方面,代表ー个或多个应用传输数据。这包括从每ー个应用接收数据传输请求以及管理每ー个应用的数据传输请求以便在为该应用传输数据时保留对资源使用的控制。数据传输请求的管理可包括确定是否满足ー个或多个传输条件,并且如果否,则将请求移至等待状态直到满足该一个或多个传输条件。数据传输请求的管理还可包括基于要传输的数据的大小来确定是否允许请求,基于可用带宽和/或前台的正在流传输媒体的存在来对数据传输进行扼制,将前台应用数据传输的优先级排在后台应用数据传输之上,和/或通过检查传输速率是否低于阈值来检测缓慢传输状态,并且如果检测到,则在继续针对该应用的数据传输之前等待改变的条件。如果相关联的应用当前正在执行(在前台或在后台),则该应用经由通常被称为“事件”的通知来知晓当前传输状态并且还可查询传输服务以确定其请求(包括已经成功完成的或出错的那些请求)中的任一个的当前状态。在一方面,当接收到指示正在卸载应用的信息(例如,通知)时,管理数据传输请求包括取消对应于该应用的每ー个数据传输请求。当接收到指示应用的许可证已被撤消的信息时,管理数据传输请求包括暂停对应于该应用的每ー个数据传输请求;当接收到指示应用的许可证已被恢复的信息时,管理数据传输请求包括继续对应于该应用的每ー个暂停的数据传输请求。当接收到指示应用已经从后台应用变成新的前台应用的信息时,管理数据传输请求包括重新确定该新前台应用的至少ー个待决数据传输请求的优先级。当接收到指示应用已经从前台应用变成后台应用的信息时,管理数据传输请求包括重新确定该后台应用的至少ー个待决数据传输请求的优先级。

在一个实现中,当接收到包括代表应用传输数据的请求的数据传输请求时,使对应于该请求的信息在请求队列中排队。处理来自该请求队列的信息,包括代表应用将数据下载到文件高速缓存中,包括当该应用是后台应用时。在下载时,使用具有对与应用相关联的存储的访问权的服务来将数据从文件高速缓存移动或复制到分离的存储。数据可以在传输正在进行中时增量式地移动或复制,或者一旦传输完成就在单个操作中移动或复制;在一个实现中,从请求存储到分离的存储的移动只在传输无差错地结束时才完成。上传类似地操作,例如,对上传请求进行排队和处理,包括与有权访问包括要上传的数据的应用存储的服务进行通信,以代表应用上传该数据。如果相关联的应用当前正在执行(在前台或在后台),则该应用经由通常被称为“事件”的通知来周期性地知晓传输进度并且还可向传输服务查询其请求中的任ー个的当前进度。结合附图阅读以下具体实施例,本发明的其他优点会变得显而易见。


作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中图I是表示用于经由后台传输服务来为应用执行后台数据传输的示例组件的框图。图2是使用后台传输服务来下载内容的应用的示例。图3是表示示例组件和在执行后台数据传输时传递的数据的数据流程图。图4是示出应用如何建立到后台传输服务的连接的示例时序图/数据流程图。图5是示出应用如何使后台传输请求入队的示例时序图/数据流程图。图6A和6B包括示出用于检查条件并基于这些条件来延迟或请求数据传输的示例步骤的流程图。图7是示出调用后台传输服务来注册进度/完成通知的示例时序图/数据流程图。图8是示出涉及获取传输进度通知的示例操作的时序图/数据流程图。
图9是示出涉及获取完成通知的示例操作的时序图/数据流程图。图10是示出涉及取消后台传输请求的示例操作的时序图/数据流程图。图11是示出涉及查询后台传输请求状态的示例操作的时序图/数据流程图。图12是示出涉及暂停后台传输的示例操作的时序图/数据流程图。图13是示出涉及继续后台传输的示例操作的时序图/数据流程图。图14是示出涉及查询后台传输服务状态的示例操作的时序图/数据流程图。图15是示出后台传输服务中的传输请求的示例状态的状态图。图16是表示其中可实现在此处所描述的各实施例的ー个或多个方面的示例性、 非限制性计算系统或操作环境的框图,例如,在移动电话设备的例子中。
具体实施例方式此处描述的技术的各方面一般涉及提供平台级支持以供应用使传输排队以便在后台运行的后台传输服务。这确保应用能够在后台执行适当的数据传输任务,而不向应用提供运行它们想运行的无论什么代码的全灵活性。后台传输服务允许应用在不在前台运行时使请求排队、取消请求、检查请求状态和继续传输(上传/下载)内容。应用能够基本上并行地下载内容,例如经由以公平的方式向应用提供资源的循环公平机制。应用可指定传输偏好,然而,与后台传输服务相关联的策略控制应用能够做什么,例如应用一次只可具有某个最大数量的待办传输,在通过蜂窝且WiFi不可用时或者在缺少外部电源的情况下数据传输可被限于某一大小,后台应用可能不被允许使用2G/EDGE蜂窝连接,在依靠电池电量、低电量或在连接到AC/USB充电时可以采取不同的动作,等等。提供平台级传输服务由此使得平台能够保持对什么传输相关任务应用能够在后台执行的控制,而不向应用提供运行任意代码的全灵活性。另外,后台传输服务允许第一和第三方应用对带宽量和/或正在使用的其他设备资源进行控制,以保护前台体验(其中如此处所使用的“第一方”指的是诸如由操作系统厂商提供的可信代码,而第三方指的是来自厂商的应用,而不管这些应用的来源或可信度)。前台应用可以在必要时为重度带宽利用活动请求额外带宽,并且后台传输(取决于环境)可以对带宽进行扼制以保护前台体验,以便限制(例如,減少或避免)对前台应用操作的干扰。应当理解,此处的任何示例均是非限制性的。因此,本发明不限于在此描述的任何具体的实施例、方面、概念、结构、功能或示例。相反,此处所描述的任何一个实施例、方面、概念、结构、功能或示例都是非限制性的,可以以一般而言在计算和进行数据传输时提供好处和优点的各种方式来使用本发明。在一个实现中,如图I大致表示的,后台传输服务102(BTS)根据与后台传输服务102相关联(例如,结合或外部地耦合)的ー个或多个策略103来控制应用数据传输请求。后台传输服务102经由BTS客户机API 104来允许诸如应用106等应用从网络端点下载内容或将内容上传至网络端点,即使应用106不在前台(例如,在被停用或脱水(dehydrated))。当应用已休眠时(被移至后台而不是关闭,且操作系统为稍后该应用返回到前台维护状态信息),情况亦如此。一般而言,前台应用可将请求添加至后台传输服务的请求队列;前台/后台应用可以在后台传输服务的请求队列中找到请求并且从后台传输服务的请求队列中移除请求。这些请求受到后台传输服务102根据ー个或多个策略103的控制。可提供其他功能,诸如允许状态更新,如此处所描述的。还如图I所示,任务和/或服务107(例如,第一方应用)可经由在图I中所示出的被设置成API 105的相似(或相同)API来使用后台服务。如下文中所描述的,出于安全和类似原因,每ー应用具有其自己的本地存储108和109,该本地存储在一个实现中经由数据共享服务110来访问。注意在图I中,不同的组件具有由腔室(chamber)表示的不同访问权,例如,后台传输服务在标准权限腔室中运行,应用在低特权腔室中运行,数据共享服务110在标准腔室中运行,等等。数据共享服务110有权访问应用的本地存储108或109 (被仅限于存储中的ー个特定文件夹),并且后台传输服务102使用数据共享服务110来传入下载的数据,或者传出数据以供上传。使用数据共享服务110(具有提升的权限)来向分离的存储传输数据并传输来自该分离的存储的数据提供了附加安全性。如图2大致表示的,从web 220或其他网络源进行后台传输的场景包括应用下载游戏的额外等级或游戏内容,诸如视频流传输(例如,应用206)、电子阅读器(例如,应用 207)、全程导航程序等应用的媒体内容下载/上传。每ー应用(例如206和207)可具有其自己的分离存储,在图2中分别被示为208和209。应当注意,前台应用可使用后台传输服务102。在这种情况下,后台传输服务102可应用不同的策略或具有其他规则,例如将前台应用传输请求的优先级排在后台应用的传输请求之上,使用不同的限制(或甚至没有限制)等。在后台应用正在使用该服务并已经改变为前台应用时也应用策略或其他规则;提高其排队的请求的优先级(可暂停其他应用请求),改变或不实施限制,等等。如将会理解的,通过后台传输服务102的传输能够以合理的公平性并行进行,且因为受服务102所控制,而不会使彼此缺乏资源。結果,大传输不会无限阻塞其他请求,且后台传输服务102可实施对传输的内容大小的硬限制,同时最小化对例如以下各操作的中断后台音频流传输、前台视频流传输、游戏以及使用网络的前台活动。注意,音频流传输是对资源缺乏敏感的,并且后台传输服务尝试不中断该场景,同时既不使资源密集应用缺乏资源,也不便需要网络带宽的前台体验降级,例如,音乐流传输、多玩家游戏场景、游戏场景、视频流传输、浏览器、社交网络等。同时,服务可以自适应和/或以其他方式操作以便通过高效的资源使用(包括电池和带宽)来最大化电池寿命。成本意识可以是另一考虑事项,例如不允许流氓或编写糟糕的应用使用蜂窝连接上的用户的有限数据计划中的大多数。返回到在图I中大致表示的示例实现/体系结构,后台传输服务102 (BTS)可包括在标准权限腔室中的servicesd. exe的内部运行的'Windows Phone服务。在该示例中,RPC(远程过程调用)用作后台传输服务客户机106、107和后台传输服务102之间的IPC(进程间通信)机制。服务102由此提供可由低特权腔室BTS知晓(例如,Yamanote)应用以及其他高特权进程可访问的RPC接ロ。注意,本地RPC、PSL (进程服务器库)和IPC机制在Windows Phone平台中是可用的。RPC接ロ展示用于对单个传输的状态进行排队、取消和查询的API 104、105。RPC接ロ还展示API 104、105以供RPC客户机获取关于传输的进度和完成的通知。后台传输服务102将传输请求持久存储在其请求存储112中直到条件适于删除请求(例如,响应已被成功发送到请求者)。请求存储112包括文件系统中后台传输服务保存应用的传输请求的持久存储。在一个实现中,后台传输服务102可使用娱乐下载管理器IH(EDM)的服务来管理诸如启动、取消和暂停请求等http/https传输请求。虽然娱乐下载管理器114此处被例示为单独组件,但在ー替换实现中,娱乐下载管理器114 (例如,其功能)或其一部分可被结合到后台传输服务102中,反之亦然。因此,如此处所使用的,娱乐下载管理器114可以是单独组件(整体地或部分地),或者可以是后台传输服务102的子部分(或者相反)。娱乐下载管理器114本质上是具有循环逻辑(例如,在ー个或多个作出请求的应用中划分可用并行时隙)的直接排队服务,该服务处理请求,提供进度回调/通知等。娱乐下载管理器114具有其自己的文件高速缓存115和请求队列,并且通常维护状态数据以便处理以下操作与端点进行通信以便将内容传输到端点或传输来自端点的内容、在需要时使用重试机制等等。娱乐下载管理器114还可监视来自资源管理器组件的通知以便在应用从后台变为前台时改变传输(例如,在一个实现中,暂停特定传输)。如后台传输服务102所指示的,数据共享服务110在适当时经由传输文件夹将数据从文件高速缓存115移动/ 复制到每ー个应用的对应的分离存储或将数据移动/复制到文件高速缓存115。另外,后台传输服务102使用应用实例管理器116(AM)来接收关于应用卸载和许可证撤消和恢复的通知。为此,应用实例管理器116包括向后台传输服务102发送关于应用卸载和许可证撤消/恢复的通知。如图I中大致表示的,BTS知晓(例如,第三方)应用106使用平台提供的托管API104。任务/服务107可以是无头(headless)任务或作为平台的一部分的另ー背景服务。在一个实现中,后台传输服务包括平台后台服务(例如,主存在servicesd. exe中,主存多个服务的平台组件进程),该平台后台服务包括实现传输API的RPC服务器侧组件。背景传输服务客户机API可以是展示使用本地RPC来与后台传输服务通信的本机后台传输服务API的平台本机DLL。还如图I所示,在一个实现中,数据共享服务110包括用作访问低特权应用的分离存储108的平台组件的安全中介的平台后台服务。娱乐下载管理器114包括平台组件用来传输内容的后台服务。后台传输服务102的一种设计使用娱乐下载管理器114来与wininet接口和执行实际http文件传输。对于后台传输服务的持久存储选择可包括任何合适的数据结构/机制,包括任何合适的数据库、寄存器或每个请求ー个文件。在平台中,EDB(嵌入式数据库引擎)用于这ー机制,这部分是因为EDB提供对很有可能的请求模式(例如,数百个请求、随时间创建/删除)的合理支持,并且因为它支持事务。图3提供了系统概览以及编号的操作流程。后台传输服务客户机API 304包括应用306引用以获取对后台传输服务102的访问的库。客户机API 304为下载请求创建临时文件(在为方便起见在应用中示出的应用的分离存储308内),并且在下载完成时将该临时文件重命名为所需文件名或者将该临时文件移至所需文件名。注意,在一个实现中,移动不是对文件系统的双重写入,只要它不跨卷,并由此提高性能。可以启用P2高速缓存以避免转储清除到闪存/SD,除非需要。如图3中由带标记的箭头ー⑴和ニ⑵所表示的,应用306(经由客户机API304)向数据共享服务110 (经由RPC)请求给定文件句柄的权标,并且通过向后台传输服务(经由RPC)提供请求信息(文件句柄的权标、请求ID)来使请求入队(带标记的箭头三⑶)或出队。数据共享服务110提供用于以下操作的的机制在应用的分离存储308中创建到文件的句柄,以及通过共享秘密(权标)的交換来向后台传输服务102授予对上述句柄的访问。这在图3中由带标记的箭头四(4)和五(5)来表示。后台传输服务102负责管理应用请求队列,跨应用的生存期保存请求的状态(在设备上),管理队列优先级和管理,以及与数据共享服务110接ロ以便从应用存储复制文件或将文件移至应用存储(通过提供权标),如上所述。同样,后台传输服务102经由客户机API 304中继进度事件/查询,诸如完成和重大错误,如经由带标记的箭头六(6)所表示的。应用实例管理器116提供用于获取关于任务实例的信息的API等,后台服务102可能需要确认任务实例的身份并做出关于是否接受请求的策略決定。后台传输服务120订阅并满足来自应用实例管理器116的对卸载和撤消以及其他应用生存期事件的请求。应用 实例管理器116在由后台传输服务注册的应用被卸载,其许可证被撤消或恢复时通知后台传输服务102。后台传输服务102在应用正被卸载时取消该应用的待办请求,并且在该应用的许可证被撤消时暂停该应用做出的请求。后台传输服务102在应用许可证被恢复时继续这些请求。在一个实现中,资源管理器可用于控制后台传输服务102的暂停和恢复。应用实例管理器116可禁用娱乐下载管理器114。因为请求是使用请求ID和应用ID的组合来查找的,所以为了确保请求查找的沙箱化并确保应用ID不由应用提供,后台传输服务具有确定该信息的ー些手段。应用的产品id可通过在给定应用的进程ID的情况下调用安全系统来获取。转向ー个示例实现的附加细节,后台传输服务客户机采取的第一步骤是建立到后台传输服务服务器的RPC连接。这可使用图4中的序列来完成。假定请求ID对于系统是唯一的并且由后台传输服务102来实施。注意,调用者可指定请求ID是否是现有请求,在这种情况下后台传输服务将验证调用者的产品ID(使用从RPC运行时获取的调用者进程ID并使用该ID来从帐户数据库中检索产品ID),并且用现有请求ID的产品ID来对调用者的产品ID进行交叉检查。后台传输服务102还可使用API调用(例如,GetTaskInstanceInformation (获取任务实例信息)API)来从应用实例管理器获取RPC调用者的产品ID,然而这要求将客户机进程的任务ID传递给API。任务ID可以从后台传输服务客户机库经由对BtsCreateBackgroundTransferRequest (Bts创建后台传输请求)的RPC来传递。后台传输服务可通过将从GetTaskInstanceInformation获取的任务进程的进程ID与从RPC获取的调用者进程ID进行比较来独立验证任务ID的有效性。使后台传输请求入队在图5中大致表示。在一个实现中,后台传输服务102支持应用使用唯一请求ID串、URI、传输文件名和HTTP动词的组合来使文件传输请求排队。所支持的动词包括GET (用于下载)和POST (用于上传)。另外,应用可指定将被添加到请求的一组允许的自定义HTTP首部。应用还可指定传输是否要求设备接通AC电源(包括USB充电)和/或Wi-Fi。用于使请求入队的示例顺序图在图5中示出。另外,还示出了 API的服务器侧流程。图中示出的不同组件已经在上文中描述。
注意,后台传输服务客户机API 104使用在图4中获取的RPC上下文句柄来与后台传输服务102通信。后台传输服务客户机API 104使用数据共享服务的API来将传输文件名转换成文件权标ID串,因为后台传输服务(在标准权限腔室中运行)无法直接访问应用的分离存储。后台传输服务API通过之前创建的RPC上下文句柄中的本地(同歩)RPC传递以及上述包括文件权标ID的传输參数来调用后台传输服务102。当后台传输服务102获取RPC调用吋,该服务检查以查看条件是否适于向娱乐下载管理器114发送请求,或者代之以后台传输服务是否使请求入队并稍后在条件适当时将其发送到娱乐下载管理器114。图6A和6B例示了可以检查的不同条件。例如,步骤602确认參数,并且仅当被确认时执行用于通知应用实例管理器116的步骤604。为了帮助优化电池使用,后台传输服务允许应用指定延迟传输请求直到AC电源可用。在这种情况下,后台传输服务只在电话接通AC电源(例如,USB供电)时才用娱乐下 载管理器114启动传输进程。另外,后台传输服务启动对电源状态改变的监视,并且如果电话转为电池,则可以在娱乐下载管理器114中暂停正在进行的传输,直到电话返回到AC电源时再继续。此外,后台传输服务监视低电池状态,以及在启动时检查电池状态。如果后台传输服务获得低电池状态通知,则该服务将暂停它用娱乐下载管理器114排队的传输。传输在电池状态从低状态转变时继续。如经由步骤606、608、610和612表示的,如果请求未被延迟且存在低电池条件(还在“省电模式”为开时),或者请求被延迟且AC电源不可用,则该过程分叉到如下所述的图6B的步骤628 (入口点EP2)。否则,步骤614表示准备下载管理器并继续至图6B的步骤 620 (入口点 EPl)。步骤628表示步骤624的成功的分叉或上述条件集(步骤606、608、610和612)中的一个的分叉。步骤628将请求入队至存储器中队列,并且持久存储该请求。步骤628表示步骤624的成功的分叉或上述条件集(步骤606、608、610和612)中的一个的分叉。步骤628将请求入队至存储器中队列,保存该请求,并且持久存储该请求。返回至图5,后台传输服务调用应用实例管理器116以便使用对应于图6A的步骤604的NotifyRequestCreatedO来通知请求已被接受。该API还可通过调用娱乐下载管理器114来返回应用的许可证状态,该状态可用于确定是否能够启动传输。如果接下来后台传输服务API中存在失败,则使用对应于图6B的步骤626的NotifyRequestCompletedO来通知应用实例管理器116。后台传输服务调用娱乐下载管理器114API,即DownloadManagerCreate (下载管理器创建),来创建下载ID。传输參数可被直接传递给娱乐下载管理器114,例如设置标志 DM_TYPE_CONTENT|DM_PRIORITY_0PP0RTUNISTIC|DM_PERSIST_LIBRARY|DM_FETCH_CACHED I DM_DONT_WANT_RESPONSE_STREAM。传输參数指定策略,即允许3G蜂窝传输和Wi-Fi传输或只允许Wi-Fi传输。传输參数还可指定传输方法,POST还是GET。另外,可指定应用产品ID(GUID)以及媒体密钥(与应用请求ID相同)。应用产品ID被娱乐下载管理器114用来跨应用循环传输以缓解资源缺乏。媒体密钥用于使娱乐下载管理器114将下载的文件作为唯一文件存储到娱乐下载管理器114持久高速缓存。后台传输服务102在传输成功时例如使用数据共享服务110中支持的MoveFile (移动文件)来将文件从高速缓存移至应用的存储。注意,MoveFile API在移动不跨越不同的逻辑卷时不复制数据。响应于DownloadManagerCreate,娱乐下载管理器114返回下载ID,后台传输服务将该下载ID与其余传输请求參数一起保存在存储器中(下载ID在重启后失效)。后台传输服务然后调用娱乐下载管理器114,即DownloadManagerStart (下载管理器启动),并启动传输进程。一旦用于启动传输的对娱乐下载管理器114的调用成功,后台传输服务就将包括与请求相关联的目标文件权标ID的请求保存到EDB(对应于步骤628)。注意,数据共享服务110支持跨重启持久存储文件权标ID。还可存在每ー个应用的待办请求的限制(例如,默认为五),并且如果该限制存在,则由后台传输服务实施。注册设置等可盖写默认限制。这防止一个应用耗费太多的系统资源,诸如网络带宽、电池、后台传输服务存储器、传输文件空间和持久存储空间。

后台传输服务客户机可任选地订阅接收传输进度通知,并且将在传输的特定完成时间点处做出应用回调。将做出回调的时间点取决于娱乐下载管理器114对后台传输服务的回调,对后台传输服务的回调取决于正在被传输的文件的大小而间隔出现。如图7所表示的,后台传输服务客户机可使用在创建步骤中获取的RPC上下文句柄来做出对后台传输服务的RPC调用以注册进度/完成通知。该RPC可以是异步RPC,因为使任何专用线程在客户机或服务器中阻塞是不合乎需要的。注意,通知可以在做出异步RPC调用后的稍后时间点到达。图8和9分别表示传输进度和完成通知。注意,后台传输服务102监听来自娱乐下载管理器114的进度和完成通知。在完成情况下,后台传输服务使用数据共享服务110的服务来将传输文件移至下载情况下的应用的分离存储。一旦请求被传递至客户机,后台传输服务102还从其持久存储中删除该请求。还可通知应用实例管理器116请求已被删除,例如使用 NotifyRequestDeletedO。应用可在任何时间点取消它所排队的传输请求;取消操作的顺序图在图10中示出。请求使用作为创建步骤的一部分来接收的不透明的RPC上下文句柄来标识。一旦取消请求成功,就从存储器和持久存储中删除传输请求。还可使用NotifyRequestCompletedO通知应用实例管理器116请求已完成。应用可使用在调用BtsCreateBackgroundTransferRequest (Bts创建后台传输请求)API后接收到的请求句柄来查询它所排队的传输请求(图11)的状态。以下信息可以从后台传输服务中的娱乐下载管理器114状态的最近高速缓存的结果中返回·请求状态·传输的Hr状态·传输的Http状态 接收到的字节的数量·预期接收到的字节的总数·已发送字节的数量·预期发送的字节的总数应用可以在任何时间点关闭请求句柄。关闭请求句柄不取消请求,但会扯断客户机进程和服务器进程之间的RPC连接。如果客户机进程在未关闭句柄的情况下死亡,则RPC运行时使用上下文句柄用尽(rundown)回调来通知后台传输服务102。应用可使用API ( “BtsEnumBackgroundTransferRequests (Bts 枚举后台传输请求”)来枚举迄今由其自己所排队的待办请求。当应用已经用后台传输服务来使少许请求排队,被停用并且稍后回来以查找它所排队的请求的状态时,枚举是有用的。该API只返回涉及调用者应用产品ID的请求信息。图12涉及暂停后台传输服务102。诸如资源管理器等平台组件可请求暂停后台传输服务102 (例如,如果它检测到ー个或多个前台联网应用正在运行)。作为响应,后台传输服务使用DownloadManagerEnumDownloads (下载管理器枚举下载)API来枚举已经在娱乐下载管理器114中排队的传输,且任务ID作为姆一 DownloadManagerCreate调用的一部分来指定。一旦枚举传输,就可暂停它们,例如,通过调用DownloadManagerPause (下载管理器暂停)API来逐个暂停。可以在娱乐下载管理器114中提供DownloadManagerPauseTaskDownloads (下载管理器暂停任务下载)API以使得可以用ー个API调用来做到上述序列。 一旦已暂停后台传输服务,也暂停新入队请求。这些新入队请求只在来自平台组件的特定继续API调用后被继续。在一个实现中,在后台传输服务102中无需存在用于从暂停自动继续的计时器。资源管理器确保应用在前台,仍旧运行,且不在锁屏下。资源管理器的崩溃重启移动设备,因为该资源管理器被主存在外壳程序中。后台传输服务102确保只有适当的腔室调用者才能调用暂停API。注意,有了计时器,应用能够重复调用API,由此计时器提供极少益处,但对电池寿命具有某些影响以及其他缺陷。图13涉及继续后台传输服务102。这继续后台传输服务102早先暂停(例如,由于暂停API调用)的任何传输。后台传输服务102确保只有适当的腔室调用者才能调用继续API。继续次序与后台传输服务中的请求队列次序相同。这可使用DownloadManagerResume (下载管理器继续)API来完成;娱乐下载管理器114可提供使继续序列可以用ー个API调用来做到的API。对于下载,娱乐下载管理器114将在服务器支持HTTP范围首部的情况下从最近暂停的时间点继续。查询后台传输服务状态在图14中表示。后台传输服务状态可以是活动的(意味着它正在运行并且不需要传输)或已暂停,并且可使用API来查询。另外,后台传输服务还可返回处于正在传输和等待/已暂停状态的传输请求的数量的计数。在一个实现中,传输请求在后台传输服务中经历以下状态,如图15所表示的状态1501。已创建后台传输服务请求已由后台传输服务客户机使用BtsCreateBackgroundTransferRequest API 来创建。状态1502。正在传输后台传输服务客户机已经通过后台传输服务使用BtsEnqueueBackgroundTransferRequest (Bts入队后台传输请求)API来使传输请求排队,并且后台传输服务已经将请求传递至娱乐下载管理器114。状态1503。等待传输请求正在后台传输服务队列中等待,因为尚未满足传输条件(例如,对于延迟的传输,电话未接通AC电源)。状态1504。已暂停后台传输服务已由第一方应用使用BtsPauseBackgroundTransferService (Bts暂停后台传输服务)API来暂停。由于应用实例管理器116通知后台传输服务102应用的许可证已被撤消,请求被暂停。这将暂停迄今在后台传输服务中排队的传输,包括等待、正在传输和已经创建的传输状态。与只使用等待状态形成对比,该状态可用于供应用区分传输的延迟是否是由于第一方应用(例如,资源管理器应用实例管理器116)已暂停传输而是故意的,或者是否由于未满足条件而是无意的。状态1505。已完成由于应用使用 BtsCancelBackgroundTransferRequest (Bts 取消后台传输请求)API来取消传输请求而使得其完成,或者该传输请求成功或错误地完成。为了优化网络带宽使用,娱乐下载管理器114可通过检查传输速率是否低于阈值来检测缓慢和被挂起的传输,以便将这些传输认为是失败的,并且对它们应用重试策略。例如,如果在Wi-Fi上传输速率落到X kbps以下,则传输将被暂停并且在稍后时间继续。在Wi-Fi由于特定错误而不可用的情况下,娱乐下载管理器114将使得超过20MB的传输失败。在这种情况下,后台传输服务将监视Wi-Fi连接,并且在支持Wi-Fi时用娱乐下载管理器114来使传输重新排队。如果后台传输服务检测到预期文件大小太大并且传输请求未被指定为只在AC情况下传输,则后台传输服务可以用娱乐下载管理器114来取消该请求并向应用返回ー错 误。回调将携帯预期总文件大小和当前传输的大小。娱乐下载管理器114只可允许最大数量的并发后台传输(例如,默认被限于两个或四个或类似限制)。此外,娱乐下载管理器114可以在它检测到媒体栈正在流传输时扼制并发传输的最大数量(默认为一)。注意,当不存在展示给客户机(包括后台传输服务)以供使用的扼制支持时,后台传输服务102必须基于系统中的条件来自动暂停和继续传输。在丢失连接时,娱乐下载管理器114将传输请求移至等待状态并且在连接恢复时开始传输。如果连接在一断开时间(timeout)内没有恢复,则由娱乐下载管理器114来取消传输并将连接超时错误报告给后台传输服务102。在这种情况下,后台传输服务将监视连接,并且在支持连接时用娱乐下载管理器114来使传输重新排队。连接管理器基于带宽来从可用连接中进行选择。因此,在缺少任何特定偏好或要求(或映射策略)的情况下,连接管理器将按以下顺序选择DTPT (桌面穿过)、Wi-Fi和蜂窝。注意在一个实现中,一旦启动传输,连接的类型将不会改变。后台传输服务102执行监视以使得请求在娱乐下载管理器114中排队,包括设备是否具有连接。这样做是因为娱乐下载管理器114在连接在特定时间(例如,默认I分钟)内不可用的情况下使传输失败。因此,后台传输服务监视连接可用性。后台传输服务还监视设备的电源状态(AC/电池、电池状态)。后台传输服务可以用娱乐下载管理器114来使应用请求以相同的优先级排队,例如,三个娱乐下载管理器114优先级中的最低的后台优先级(DM_TYPE_CONTENT、DM_PRI0RITY_0PP0RTUNISTIC)。这是为了确保第三方传输不会太多地干扰诸如市场下载等第
一方传输。娱乐下载管理器114支持应用ID与作为传输參数的一部分的每ー个DownloadManagerCreate调用一起传递。后台传输服务在其用娱乐下载管理器114来创建传输请求时将应用产品ID作为应用ID来传递。娱乐下载管理器114将使用应用ID来在每ー队列中循环以使得来自ー个应用ID的请求无法使其他应用请求缺少资源。由此,如果娱乐下载管理器114队列包含AppldO (O)、AppIdO (I)、Appldl (O)、AppId2 (O),则调度算法按以下次序选取这些请求AppId(0)、AppIdl (O)、AppId2 (O)、AppIdO (I),其中 AppIdX(y)指示应用X的第I个请求。娱乐下载管理器114可限制并发传输的最大数量以获得可接受的设备性能。为了防止一个应用取得娱乐下载管理器114中的所有传输时隙和传输大型文件,娱乐下载管理器114可以在循环的基础上在应用之间进行时间切片(例如,两分钟),并且在需要时强制暂停传输。注意,娱乐下载管理器114市场下载可能花费一段时间来进入机会主义队列并且将与后台传输服务应用进行多路复用并且将被包括在循环中。对于安全性,后台传输服务102可以在标准权限腔室中运行并且可以与servicesd. exe中的其他服务共同主存。可以为后台传输服务指定RPC安全策略以允许低特权腔室应用使用RPC来调用后台传输服务。在适当时,后台传输服务使用帐户数据库API来交叉检查做出调用的进程的产品ID,并且确保ー个应用无法代表另ー应用来调用后台传输服务API。注意,因为大多数后台传输服务第三方应用API使用RPC上下文句柄(并非直接但作为使用请求句柄的副作用是RPC上下文句柄的包装),所以应保护这些应用API以防哄骗,因为RPC运行时是针对该哄骗来加固的。然而,BtsCreateBackgroundTransferRequest未采用RPC上下文句柄而改为采用请求ID (优选地是GUID),因为创建上下文句柄的是 API。该API可针对哄骗来加固。后台传输服务102在应用做出对API的第一次调用时启动。该后台传输服务然后检查它是否需要继续它能够在引导时启动的任何先前未完成的传输。出于性能原因,可以延迟紧接在服务启动后的处理,例如使用RegisterDelayedBootWork(注册■延迟引导工作)API。后台传输服务102检查持久存储以查找已经用正在传输、已暂停或等待状态来标记的请求项,并且然后将这些请求项发送到娱乐下载管理器114以启动传输进程,或使这些请求项在存储器中排队,以等待适于启动传输进程的条件(例如,电话当前接通电池的情况下的延迟的传输请求)。在这完成后,后台传输服务可启用其RPC接ロ并开始从客户机接收调用。后台传输服务还调用应用实例管理器116以指示使用 NotifyBackgroundServiceStartO 来启动,并且调用 NotifyRequestCreatedO 以通知应用实例管理器116后台传输服务102已创建新请求。当使用BtsCreateBackgroundTransferRequest API来创建新请求时,后台传输服务102在姆ー请求仅使用一次NotifyRequestCreated来调用应用实例管理器116。后台传输服务102还可检查其请求队列是否已经在多于某ー时间(例如两分钟)内为空并且在空闲时自己停止。后台传输服务102可由后台传输服务客户机使用ActivateService ()来重新激活。还将使用 NotifyBackgroundServiceStop O 来调用应用实例管理器116来指示停止。对于可靠性和出错处理,后台传输服务102可依靠娱乐下载管理器114来向它呈现传输错误。一旦娱乐下载管理器114报告传输错误,或者存在阻止请求完成的其他后台传输服务错误,则娱乐下载管理器114将会将该请求移至已完成状态但将该已完成状态,迄今传输的字节、总预期字节和http状态连同该请求一起保存在持久存储中以使得应用能够稍后查询它。应用在其已经对传输结果采取适当动作时将请求从存储中删除。对于应用卸载,后台传输服务102创作实现IBackgroundServiceProxy接ロ的进程中COM服务器,以使得应用实例管理器116可以在应用被卸载或其许可证被撤消/恢复时通知后台传输服务。只要在后台传输服务102已经启动并且准备好接受来自应用实例管理器116的通知时,后台传输服务就将每ー请求的创建和删除通知给应用实例管理器116。
当应用被卸载时,后台传输服务删除对应于该应用的请求。当应用许可证被撤消时,后台传输服务将请求状态改为已暂停以及指示许可证已被撤消的状态。在该状态中,不做出改变传输请求状态的API (BtsEnqueueBackgroundTransferRequest等),并且这些API将失败且具有许可错误。当许可证被恢复时,请求将遵循“传输条件被满足”路径(图15中的状态1503到状态1502)。每ー个请求只有少量字节需要被保存在存储器中。候选列表(基于存取速率)包括I.固定长度请求ID2.固定长度应用产品ID3.请求状态 4.已传输字节的数量5.字节总数6.传输状态如果与请求有关的数据不可用,则引用持久存储。在一个实现中,后台传输服务102不为罕见事件布置线程并且改为使用线程汇合(pooling)。后台传输服务客户机可任选地订阅传输进度通知,并且将在传输的特定完成点处做出应用回调。做出回调的时间点取决于娱乐下载管理器114对后台传输服务的回调,该对后台传输服务的回调以任意间隔进行。后台传输服务客户机可使用在创建步骤中获取的RPC上下文句柄来做出对后台传输服务的RPC调用以注册进度/完成通知。如可见的,后台传输服务向第三方应用提供服务以便,例如使用http/https协议,将文件传输到后台中的应用的分离存储或从后台中的应用的分离存储传输文件。后台传输服务向第三方应用提供用于以下操作的ー组API :提交文件传输请求、检查请求状态、注册完成和进度通知或取消请求。后台传输服务即使在应用已经脱水、終止或遵循设备重启时也管理和处理请求。后台传输服务将状态报告回给应用。示例性操作环境图16示出可在其上实现此处所描述的主题的各方面的合适的移动设备1600的示例。移动设备1600仅为设备的ー个示例,并非g在对此处所描述的主题的各方面的使用范围或功能提出任何限制。移动设备1600也不应被解释成对于在示例性移动设备1600中所示出的任一组件或其组合有任何依赖或要求。參考图16,用于实现此处所述的主题的各方面的示例性设备包括移动设备1600。在某些实施例中,移动设备1600包括蜂窝电话、允许与其他手持设备的语音通信的手持设备、某一其他语音通信设备等。在这些实施例中,移动设备1600可配备用于拍摄照片的照相机,虽然这在其他实施例中可能不是必需的。在其他实施例中,移动设备1600包括个人数字助理(PDA)、手持游戏设备、笔记本计算机、打印机、包括机顶盒、媒体中心等的装置、或其他装置、其他移动设备等。在又一些实施例中,移动设备1600可包括通常被认作非移动的设备,如个人计算机、服务器等。移动设备1600的组件可以包括但不限干,处理单元1605、系统存储器1610和将包括系统存储器1610在内的各种系统组件耦合至处理单元1605的总线1615。总线1615可包括几种类型的总线结构中的任何ー种,包括存储器总线、存储器控制器、外围总线、以及使用各种总线体系结构中的任ー种的局部总线等。总线1615允许在移动设备1600的各种组件之间传送数据。移动设备1600可以包括各种计算机可读介质。计算机可读介质可以是能由移动设备1600访问的任何可用介质,而且包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息并且可由移动设备1600访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号” 是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、蓝牙 、无线USB、红外、Wi-Fi、WiMAX、和其它无线介质。上述的任意组合也应包含在计算机可读介质的范围内。系统存储器1610包括易失性和/或非易失性存储器形式的计算机存储介质,且可包括只读存储器(ROM)和随机存取存储器(RAM)。在诸如蜂窝电话等移动设备上,操作系统代码1620有时被包括在ROM中,虽然在其他实施例中,这不是必需的。类似地,应用程序1625通常位于RAM中,虽然同样在其他实施例中,应用程序可位于ROM中或其他计算机可读存储器中。堆1630提供用干与操作系统1620和应用程序1625相关联的状态的存储器。例如,操作系统1620和应用程序1625可在其操作期间将变量和数据结构存储在堆1630中。移动设备1600还可包括其他可移动/不可移动、易失性/非易失性存储器。作为示例,图16示出闪存卡1635、硬盘驱动器1636、以及记忆棒1637。例如,可小型化硬盘驱动器1636以适应存储器槽。移动设备1600可经由可移动存储器接ロ 1631与这些类型的非易失性可移动存储器接ロ,或可经由通用串行总线(USB)、IEEE 16394、一个或多个有线端ロ 1640、或天线1665连接。在这些实施例中,可移动存储器设备1635-1637可经由通信模块1632与移动设备接ロ。在某些实施例中,并非所有这些类型的存储器都可被包括在单个移动设备上。在其他实施例中,可将这些和其他类型的可移动存储器中的ー个或多个包括在单个移动设备上。在某些实施例中,可按更持久地附连到移动设备1600的方式连接硬盘驱动器1636。例如,硬盘驱动器1636可连接到诸如并行高级技术附件(PATA)、串行高级技术附件(SATA)或其他可连接到总线1615的附件等接ロ。在此类实施例中,移除硬盘驱动器可涉及移除移动设备1600的外壳并移除将硬盘驱动器1636连接到移动设备1600内的支承结构的螺丝钉或其他紧固件。以上描述和在图16中示出的可移动存储设备1635-1637及其相关联的计算机存储介质提供对用于移动设备1600的计算机可读指令、程序模块、数据结构、和其他数据的存储。例如,可移动存储器设备1635-1637可存储由移动设备1600拍摄的图像、语音录音、联系人信息、程序、用于程序的数据等。
用户可通过诸如键盘1641和话筒1642等输入设备向移动设备1600中输入命令和信息。在某些实施例中,显示器1643可以是触敏屏幕并可允许用户在其上输入命令和信息。键盘1641和显示器1643可通过耦合到总线1615的用户输入接ロ 1650连接到处理单元1605,但也可由其他接口和总线结构连接,如通信模块1632和有线端ロ 1640。运动检测1652可用于确定对设备1600作出的姿势。例如,用户可经由对话筒1642讲话以及经由在键盘1641或触敏显示器1643上输入的文本消息来与其他用户通信。音频单元1655可提供电信号以驱动扬声器1644以及接收并数字化接收自话筒1642的音频信号。移动设备1600可包括提供信号以驱动照相机1661的视频单元1660。视频单元1660还可接收由相机1661获得的图像并将这些图像提供给包括在移动设备1600上的处理単元1605和/或存储器。由相机1661获得的图像可包括视频、不形成视频的ー个或多个
图像、或其某ー组合。 通信模块1632可向一根或多根天线1665提供信号并从其接收信号。天线1665之一可发射并接收用于蜂窝电话网络的消息。另一天线可发射并接收蓝牙 消息。又一天线(或共享天线)可经由无线以太网网络标准发射并接收网络消息。更进一歩,天线将例如GPS信号等基于位置的信息提供给GPS接口和机制1672。GPS机制1672又使相应的GPS数据(例如时间和坐标)可用于处理。在某些实施例中,可使用单根天线来发射和/或接收用于超过ー种类型的网络的消息。例如,单根天线可发射并接收语音和分组消息。当在网络化环境中操作时,移动设备1600可连接到一个或多个远程设备。远程设备可包括个人计算机、服务器、路由器、网络PC、蜂窝电话、媒体回放设备、对等设备或其他常见的网络节点,并且一般包括上面相对于移动设备1600所述的许多或全部元件。本文所描述的主题的各方面可与众多其他通用或专用计算系统环境或配置一起操作。适用于此处所描述的主题的各方面的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任意上述系统或设备的分布式计算环境等。此处所描述的主题的各方面可在由移动设备执行的诸如程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本文所描述的主题的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。此外,虽然此处频繁使用术语服务器,但可以认识到,该术语也可涵盖客户机、分布在一个或多个计算机上的一个或多个进程的集合、ー个或多个独立的存储设备、ー个或多个其他设备的集合、以上的一个或多个的组合,等等。结论尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不g在将本发明限于所公开的具体形式,而是相反地,g在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
权利要求
1.一种包括后台传输服务(102)的系统,所述后台传输服务被配置成在移动设备上运行以便在应用(106)在后台时控制所述应用的网络通信的传输,所述后台传输服务被配置成基于控制后台应用数据传输的资源使用的一个后多个策略(103)来管理对数据传输的应用请求,以限制对前台应用操作的干扰。
2.如权利要求I所述的系统,其特征在于,还包括下载管理器,所述下载管理器被配置成进行远程连接以便与远程源进行数据传输以满足传输请求。
3.如权利要求2所述的系统,其特征在于,还包括数据共享服务,所述数据共享服务被配置成将传输自所述远程源的数据移动或复制到与所述应用相关联的分离存储中,或者移动或复制来自与所述应用相关联的分离存储的数据以便将所述数据传输到所述远程源,或两者兼而有之。
4.如权利要求I所述的系统,其特征在于,还包括应用实例管理器,所述应用实例管理器被配置成向所述后台传输服务提供关于以下内容的一个或多个通知应用卸载状态、许可证撤销或恢复状态、或卸载状态、许可证撤消或恢复状态的任何组合。
5.一种计算环境中的至少部分地在至少一个处理器上执行的方法,所述方法包括
6.如权利要求5所述的方法,其特征在于,管理每一应用的所述数据传输请求包括为至少一个应用确定是否满足一个或多个传输条件,并且如果否,则将所述请求移至等待状态直到满足所述一个或多个传输条件。
7.如权利要求5所述的方法,其特征在于,管理每一应用的所述数据传输请求包括为至少一个应用基于可用带宽来扼制所述数据传输。
8.如权利要求5所述的方法,其特征在于,管理每一应用的所述数据传输请求包括为至少一个应用确定是否满足一个或多个传输条件,并且如果否,则将所述请求移至等待状态直到满足所述一个或多个传输条件;或者基于要传输的数据的大小来确定是否允许所述请求;或者基于可用带宽来扼制所述数据传输;或者是下述项的任何组合确定是否满足一个或多个传输条件,并且如果否,则将所述请求移至等待状态直到满足所述一个或多个传输条件;基于要传输的数据的大小来确定是否允许所述请求;或者基于可用带宽来扼制所述数据传输。
9.一个或多个具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在被执行时执行以下步骤,包括 接收包括代表应用下载数据的请求的数据传输请求; 使对应于所述请求的信息在请求队列中排队(628); 处理来自所述请求队列的信息,包括代表所述应用将数据下载到请求存储(112)中(1502),包括当所述应用是后台应用时;以及 与具有将所述数据从所述请求存储移动或复制到与所述应用相关联的分离存储(108)的访问权的服务(110)进行通信。
10.如权利要求9所述的一个或多个计算机可读介质,其特征在于,还具有以下计算机可执行指令,包括从所述应用接收对与下载状态相关的状态信息的请求,并且响应于所述请求来返回状态信息。
全文摘要
本发明公开了用于移动设备上的应用的后台传输服务。本发明涉及后台传输服务,该后台传输服务为第三方应用提供了平台级支持以使数据传输排队以便在后台运行,包括当该应用并非在前台运行时。应用由此可以在后台执行下载和上传任务;然而,后台传输服务管理数据传输请求以限制每个后台应用的干扰前台应用操作的能力,即通过根据一个或多个策略来控制资源使用。
文档编号H04W8/24GK102685729SQ20121003168
公开日2012年9月19日 申请日期2012年2月13日 优先权日2011年2月14日
发明者A·巴德热辛, A·德拉戈米拉, C·P·苏巴拉曼, D·米勒, G·A·德索扎, J·I·拉斯特洛姆, J·殷, M·D·麦克卢尔, M·G·多纳休, P·J·托尔, P·R·胡卢曼, R·江, T·D·努南, V·戈特格, Y·沙班 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1