[go: up one dir, main page]

CN102971705A - 包括多个体验模块的应用 - Google Patents

包括多个体验模块的应用 Download PDF

Info

Publication number
CN102971705A
CN102971705A CN2011800308854A CN201180030885A CN102971705A CN 102971705 A CN102971705 A CN 102971705A CN 2011800308854 A CN2011800308854 A CN 2011800308854A CN 201180030885 A CN201180030885 A CN 201180030885A CN 102971705 A CN102971705 A CN 102971705A
Authority
CN
China
Prior art keywords
equipment
experience
module
application
update package
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.)
Granted
Application number
CN2011800308854A
Other languages
English (en)
Other versions
CN102971705B (zh
Inventor
C·A·埃文斯
S·詹森
A·V·门格尔
J·T·皮尔斯
J·埃尔斯布里
L·M·坎恩
C·C·内夫
N·奥斯曼诺维奇
N·明瓦拉
R·I·拉贾库马
D·A·萨瑟
M·A·施罗德
O·G·泰梅伦卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102971705A publication Critical patent/CN102971705A/zh
Application granted granted Critical
Publication of CN102971705B publication Critical patent/CN102971705B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

设备上的应用包括当该应用在该设备上运行时各自实现一组特性的多个体验模块。多个体验模块中的每一个包括第一组件和第二组件,第一组件包括专用于该设备的特定类型的代码,而第二组件包括跨多个设备类型所共有的代码。改变该多个体验模块中的个别体验模块的更新包可从部署服务被接收并被安装在该设备上。

Description

包括多个体验模块的应用
背景技术
诸如台式计算机、无线电话、游戏控制台等各种不同类型的计算设备已经变得普遍可用。应用开发者通常需要使他们的应用运行在这些不同类型的设备中的多个设备上,从而允许更多用户运行这些应用。然而,这通常要求应用开发者在他们为这些不同类型的设备中的每一个编写和维护其应用的不同版本时重复其努力的主要部份。这可能存在问题,因为这增加了应用开发者在编写和维护其应用的众多不同版本方面导致的成本和时间。同时,应用开发者想避免由于在其他设备上的限制而限制一应用在某些设备上的体验的“最少共同点方案”。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
根据一个或多个方面,包括多个体验模块的应用被安装在设备上。当该应用在设备上运行时,多个体验模块各自实现一组特性。多个体验模块中的每一个包括第一组件和第二组件,第一组件包括专用于该设备的特定类型的代码,第二组件包括跨多个设备类型所共有的代码。该应用响应于在该设备上运行的请求而这样做。
根据一个或多个方面,与应用的不同体验模块对应的不同更新包的目录被维护。该应用包括当该应用在设备上运行时各自实现一组特性的多个体验模块。多个体验模块中的每一个包括第一组件和第二组件,第一组件包括专用于特定设备类型的呈现逻辑和资源,第二组件包括跨多个设备类型所共有的业务逻辑。作出关于是否存在适用于该设备上的应用的更新包的确定。如果存在适用于该设备上的应用的更新包,则将该更新包发送给该设备。
附图简述
在全部附图中,使用相同的附图标记来指示相同的特征。
图1示出根据一个或多个实施例的其中能够实现包括多个体验模块的应用的示例系统。
图2示出根据一个或多个实施例的运行包括多个体验模块的各应用的示例设备。
图3示出根据一个或多个实施例的支持包括多个体验模块的各应用的示例平台。
图4示出根据一个或多个实施例的更新应用的示例。
图5是示出根据一个或多个实施例的用于为包括多个体验模块的各应用安装和获取更新包的示例过程的流程图。
图6是示出根据一个或多个实施例的用于部署对设备的更新的示例过程的流程图。
图7示出根据一个或多个实施例的可被配置成运行包括多个体验模块的各应用的示例计算设备。
详细描述
本文讨论包括多个体验模块的各应用。将包括多个体验模块的各应用递送到多个不同类型的设备,这些应用在这些设备处被安装并被执行。应用中的每一体验模块实现与该模块相关联的体验对应的一组一个或多个特征。每一体验模块包括通用业务逻辑组件,该通用业务逻辑组件包括与相关联的体验对应的业务逻辑(例如,指令和数据)。该通用业务逻辑组件是所有设备共有的,并且被提供给各个设备以供安装,而不管设备的类型是什么。每一体验模块还包括设备类型专用呈现组件,该设备类型专用呈现组件包括与相关联体验对应的呈现逻辑(例如,指令和数据)以及资源(例如,用于向用户显示体验的资源,诸如图像、用户体验布局标记等)。不同的显示组件被提供给不同类型的设备,从而允许呈现相关联的体验是针对特定设备类型以及该特定设备类型的能力来定制的。
还可将应用更新递送到在其上安装应用的各个设备。应用更新以每个体验模块为基础,并且由此更新应用的体验模块,而不是整个应用。可将对体验模块的业务逻辑的改变提供给在其上运行该应用的所有设备,而不管设备的类型。然而,对体验模块的呈现组件的改变可仅被提供给在其上运行该应用、具有与经改变的呈现组件对应的类型的设备。
图1示出根据一个或多个实施例的其中能够实现包括多个体验模块的各应用的示例系统100。系统100实现了用于当在诸如个人计算机(PC)、电视机设备和/或移动设备等各种设备上运行应用时共同的用户体验的环境。服务和应用在所有三个环境中基本相似地运行,以便当使用应用、玩视频游戏、看视频等时在从一个设备转换到下一设备时得到共同的用户体验。
设备102包括支持安装和执行由多个体验模块构成的各应用的应用外壳104。在各种实现中,设备102可以是各种不同类型的计算设备,诸如计算机106、移动设备108或基于电视机的设备110。这些不同类型的设备中的每一个可具有一般不同的构造和能力,并且因此计算设备102可根据不同的设备类型中的一个或多个来配置。例如,设备102可被实现成计算机106设备类型,诸如个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。
设备102也可被实现为移动108设备类型、诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等。设备102还可被实现为电视机110设备类型,诸如在休闲观看环境中具有或连接到一般更大的屏幕的设备。例如,电视机110设备类型可包括电视机、机顶盒、游戏控制台等。
另外,设备102可被实现成各种其他类型的设备,诸如电器设备(例如,电冰箱、微波炉等)、车载PC、服饰等。本文所描述的技术可由各种类型的设备102支持,且不限于在本文描述的各具体示例。
在示例系统100中,一个或多个不同类型的多个设备102可在任何给定时间与云112通信。云112是通过网络和/或其他数据通信链路连接到设备102的一个或多个服务器计算机和/或其他类型的设备的集合。这样的网络可以是例如因特网、局域网(LAN)、蜂窝式或其他电话网络、内联网、WiFi网络、其他公用和/或专用网络、其组合等。这样的其他数据通信链路可以是有线和/或无线链路,诸如通用串行总线(USB)链路、无线USB链路、射频(RF)链路、其他公用和/或专用通信链路、其组合等。
不同类型的设备102中的每一个可具有不同的物理要求和能力。本文讨论的包括多个体验模块的应用使得能够将体验递送到设备102,这些体验既是针对特定设备类型定制的也是所有设备类型所公共的。在一个或多个实施例中,设备的类型被定义,且体验是针对通用设备类型来定制的。设备的类型可通过物理特性(例如,所支持的显示屏大小、处理器功率、数据输入机制等)、使用类型、和/或设备的其他共同特征来定义。
云112包括和/或表示一个或多个体验服务116和部署服务118的平台114。
平台114提取云112的硬件(如服务器)和软件资源的底层功能。
服务116和118可包括可由设备102利用但远离设备102的应用和/或数据。如上文讨论的,服务116和118可通过网络和/或其他数据通信链路作为一个或多个服务来提供。平台114可提取用于将设备102与其他计算设备(例如其他设备102)连接的资源和功能。平台114还可用于提取用于向对经由平台114实现的服务116的所遇到的需求提供对应的规模级别的资源规模调节。
体验服务116包括为应用提供各种功能的应用和/或数据。所提供的特定功能基于应用的类型而变化,并且可包括购物或电子商店功能、歌曲或图像(或其他数据)存储和/或检索功能、搜索功能等。部署服务118管理对包括多个体验模块的应用到设备102的部署。对应用的各种改变可随时间进行,并且部署服务118也管理这些改变到设备102的部署。这些改变被部署到改变适用的设备102,如下文更详细地讨论的。
每一应用由多个体验模块组成,每一体验模块实现与该体验模块相关联的或由该体验模块所提供的体验的一组一个或多个特性。不同特性涉及可由应用的用户或由另一组件或模块所调用的应用的不同功能。应用中的不同体验模块由应用的开发者定义,并且通常被定义以便向应用的用户提供对特征或功能的逻辑分组。特定体验模块以及每一体验模块中该组特性或功能由应用的开发者来决定。
作为示例,假定特定移动设备可作为便携式音乐播放器和便携式游戏设备来操作。移动设备上的应用可包括与音乐回放体验相关联的第一体验模块,并且实现与该音乐回放体验有关的各种特性,诸如传输控制(例如,停止、播放、倒带、随机播放等特性)、播放列表选择以及创建特性等。应用还可包括与游戏体验相关联的第二体验模块,并且实现与该游戏体验相关联的各种特性,诸如游戏选择特性、与体验服务116通信以便进行在线游戏等。应用还可包括与市场体验相关联的第三体验模块,并且实现与用户可经由其购买新歌曲或游戏的在线市场有关的各种特性,诸如允许用户选择歌曲或游戏来购买的搜索或浏览特性、与体验服务116通信以提供信用卡或其他信息来购买歌曲或游戏等。
每一体验模块被分成两个组件:通用业务逻辑组件和设备类型专用呈现组件。通用业务逻辑组件包括针对跨所有设备类型所共同的相关联体验的业务逻辑(例如,代码—指令和数据)。无需因不同设备类型而不同的指令和数据被包括在通用业务逻辑组件中。包括在通用业务逻辑组件中的特定指令和数据基于特定应用而变化。例如,通用业务逻辑组件可包括用于对播放列表中的歌曲进行随机播放、在文档内搜索单词或短语、实现电子表格计算功能等的指令和数据。
设备类型专用呈现组件包括与相关联体验对应的呈现逻辑(例如,代码——指令和数据)以及资源(例如,用于向用户显示或以其他方式呈现该体验的资源,诸如图像、用户体验布局标记等)。不同呈现组件可被提供给不同设备类型,从而允许应用的开发者定制相关联体验向特定设备类型的呈现以及该特定设备类型的能力。尽管可将不同呈现组件提供给不同设备类型,但可发生将相同呈现组件提供给不同设备类型的情形。
在一个或多个实施例中,呈现逻辑和资源基于特定设备类型的物理特性(例如,显示屏大小、处理器功率、输入和/或输出组件等)定制相关联体验向该设备类型的呈现。例如,第一呈现逻辑和资源可针对计算机106设备类型来定制,计算机106设备类型通常具有大屏幕和供数据输入的大键盘。第一呈现逻辑和资源可包括用户界面(UI),该UI支持在其中显示数据的大窗口和/或框、经由键盘或鼠标的各种不同的用户输入等。第二呈现逻辑和资源可针对移动108设备类型来定制,移动108设备类型通常具有小屏幕以及可任选的具有供数据输入的小键盘。第二呈现逻辑和资源可包括UI,该UI支持在其中显示数据的小窗口和/或框、经由话筒(如语音命令)或触摸屏的各种不同的用户输入等。第三呈现逻辑和资源可针对电视机110设备类型来定制,电视机110设备类型通常具有很大屏幕但没有供数据输入的键盘。第三呈现逻辑和资源可包括UI,该UI支持在其中显示数据的大窗口和/或框、经由手持式遥控或手持式游戏控制器的各种不同的用户输入等。
应当注意,本文讨论的应用不仅仅是被下载到设备102上并在web浏览器中运行的web应用。相反,在各种环境中本文讨论的应用从云112中被部署到设备102并安装在设备102上。对应用的各种更新也可从云112中被部署到设备102并安装在设备102上。此外,本文讨论的应用可在设备102未连接到云112时运行(尽管诸如访问在线市场之类的某一功能可能在设备102未连接到云112时对设备102不可用)。另外,本文讨论的在应用中呈现不同体验是为其上运行该应用的特定设备类型定制的。
图2示出根据一个或多个实施例的运行包括多个体验模块的应用的示例设备200。设备200可以是各种不同类型的计算设备,并且是例如图1的设备102。
设备200包括应用外壳202和操作系统204。操作系统204可以是各种常规操作系统中的任一个,诸如可从美国华盛顿州雷蒙德市的微软公司获得的操作系统中
Figure BDA00002630658500061
操作系统家族中的任一个,可从美国加利福尼亚州库珀蒂诺市的苹果公司获得的操作系统中Mac
Figure BDA00002630658500062
操作系统软件家族中的任一个,基于Linux的操作系统,基于Google Chrome的操作系统,基于电话的操作系统,基于便携式游戏设备的操作系统,基于机顶盒的操作系统等。应用外壳202由操作系统204运行,以支持包括多个体验模块的应用。另选地,应用外壳202可被包括作为操作系统204的一部分,或者操作系统204可被包括作为应用外壳202的一部分。一个或多个附加应用或外壳(未示出)也可由操作系统204运行。
应用外壳202支持本文讨论的包括多个体验模块的应用。在所示示例中,应用218被示为包括在外壳202中或在外壳202中运行。尽管单个应用218被示为在外壳202中运行,但可以理解多个应用可并发地在外壳202中运行。另外,尽管示出单个应用外壳202,但可以理解多个应用外壳202(各自运行零个或多个应用)可在设备200上并发地运行。
应用218包括多个体验模块220(1),…,220(n),其中每一体验模块都与不同体验相关联。在一个或多个实施例中,多个体验模块220的集合是应用218,并且应用218中除体验模块220以外没有包括附加组件或模块。因此,在这些实施例中,体验模块220可以是外壳202中运行的单独模块且共同作为该应用。
外壳202包括设备/服务通信框架212、体验存储214、以及核心组件接口216。可以理解,设备/服务通信框架212以及核心组件接口216的功能可作为单个组件或模块、或分开的组件或模块来实现。还可以理解,设备/服务通信框架212以及核心组件接口216之一或两者的功能可作为多个组件或模块来实现。
设备/服务通信框架212管理设备200与云(如图1的云112)之间的通信。应用218的各组件可通过向设备/服务通信框架212发送请求和/或从设备/服务通信框架212接收响应或其他信息来与云通信。设备/服务通信框架被配置有或以其他方式可访问准许设备200与云通信的各种合适的设置和协议。因此,减轻了应用218管理与云的通信的负担。相反,应用218的各组件可调用设备/服务通信框架212所展示的标准接口(例如应用编程接口(API))。不同设备类型上不同设备/服务通信框架212可按不同方式与云通信,但仍然向应用提供相同接口。应用开发者可编写应用,而无需具体知道在其上运行那些应用的设备如何与云通信。
体验存储214管理应用218的各组件的存储。应用从云(如图1的云112)中被部署到设备200。如上文讨论的,每一应用包括多个用户体验模块,且每一用户体验模块包括多个组件。当应用被部署时,这些各个组件由设备/服务通信框架212接收并被提供给体验存储214。体验存储214将接收到的组件存储在非易失性存储器中(例如磁盘、光盘、闪存等)。
当应用218首次被安装在设备200上时,设备200的组件(例如上文讨论的核心组件接口216)执行该安装。对应用218的安装包括各个安装动作,诸如将特定文件写入存储设备上的特定位置,将信息添加到注册存储(例如操作系统注册表)等。可将各文件写入体验存储214和/或设备200的其他存储设备。安装之后,应用218可在外壳202中被运行。应用218随后也可在应用218的新版本变得可用的情况下被更新,如以下更详细讨论的。
应用218可响应于从设备200的用户接收到的请求或另选地响应于来自另一组件、模块或设备的请求而被运行。响应于运行应用218的请求,外壳202从体验存储214和/或设备200的其他存储设备中获取所安装的应用218的文件,并执行所获取的组件。要获取并执行的特定组件可以例如在体验存储214所维护的文件或其他信息中被标识。
在一个或多个实施例中,体验存储214中可包括组件218的多个版本。例如,组件的经更新版本可按更新包的形式由设备/服务通信框架212接收,如下文更详细地讨论的。安装更新包导致设备200上组件的新版本。先前部署的各组件以及任何更新包可在体验存储214中被维护,使得这些组件的经更新版本和先前版本两者都在体验存储214中被维护。维护该组件的先前版本允许例如回退或返回应用218的先前版本、保存对应用218的改变的记录等。可任选地,体验存储214可基于各个准则来删除组件的各先前版本,诸如在经过特定时间量之后,在特定数量的该组件的更新包随后已被存储在体验存储214中之后等。
对包括在应用218中的不同体验模块的指示以及那些体验模块的版本号也在体验存储214中被维护。这些版本号标识安装在设备200上的体验模块的当前版本,并且随着在设备200上安装那些体验模块中的组件的新版本,这些版本号被更新。应用218的主版本数量也可在体验存储214中被维护。主版本号标识安装在设备200上的应用218的当前版本,并且随着在设备200上安装应用218的体验模块中的组件的新版本,该主版本号被更新。
核心组件接口216管理与操作系统204以及其他设备200的通信,并且还维护与外壳202内的各种通信有关的各种数据以及支持这些通信。在一个或多个实施例中,核心组件接口216维护数据高速缓存,该数据高速缓存存储由设备/服务通信框架212发送给云的各请求的结果。这一数据高速缓存可被临时维护(例如当应用218或外壳202正在运行时),或另选地可被持久存储在非易失性存储器中达更长的持续时间。
另外,在一个或多个实施例中,核心组件接口216包括提取设备专用命令的呈现框架。不同类型的设备以及甚至同一类型的不同设备(诸如不同模型的设备,来自不同制造商的设备等)可按不同方式实现特定呈现功能。接口216的呈现框架提取实现特定呈现功能的方式,从而向应用218的组件提供标准接口(例如API)。应用的组件由此可调用核心组件接口216所展示的标准接口,从而允许应用开发者编写这些应用,而无需具体知道特定呈现命令或信息如何被传送到在其上运行该应用的设备的特定硬件。在一个或多个实施例中,呈现框架可以是可从美国华盛顿州雷蒙德市的微软公司获得的
Figure BDA00002630658500091
平台。
应用218包括多个体验模块220(1),…,220(n),其中每一体验模块都与不同体验相关联。如上文讨论的,这些不同体验包括不同组的特性。另外,每一体验模块220包括设备类型专用呈现组件222以及通用业务逻辑组件224。如上文讨论的,通用业务逻辑组件224包括针对跨所有设备类型所共同的相关联体验的业务逻辑(例如,指令和数据)。设备类型专用呈现组件222包括针对专用于设备200的类型或为设备200的类型定制的相关联体验的呈现逻辑(例如,指令和数据)以及资源(例如,用于向用户显示或以其他方式呈现该体验的资源,诸如图像、用户体验布局标记等)。
在一个或多个实施例中,应用外壳202(例如,经由核心组件接口216)管理组件222和224的执行,使得体验模块220彼此隔离。这一隔离阻止一个体验模块220中的组件直接访问另一体验模块220的组件(或组件使用的通用存储空间)。这一隔离也可被称为沙箱化,并且可由外壳202以各种不同的常规方式来实现。
尽管体验模块220被阻止彼此直接访问,但在一个或多个实施例中,核心组件接口216包括交叉体验交互模块226,交叉体验交互模块226支持交叉体验交互以便允许单个隔离体验内不可能的更丰富的功能。交叉体验交互模块226提供一个体验模块220可经由其向另一体验模块220发送消息的接口。这一消息可包括例如,所请求的动作、零个或多个参数、以及要向其发送消息的体验的指示。这些参数通常包括指向数据的指针或数据的其他标识符(例如,指向特定歌曲标题的指针、指向特定电影数据的指针等),但另选地这些参数可包括实际数据(例如,歌曲标题、电影数据等)。例如,一个体验模块220可以是提供允许用户维护他或她的库(例如,歌曲或其他音频和/或视频内容的库)并从中选择特定内容的内容库体验的内容库体验模块,而另一体验模块可以是提供允许对特定内容的进行回放的内容回放体验的内容回放体验模块。内容库体验模块可向内容回放体验模块发送“播放歌曲”消息,该消息带有作为用户选来进行回放的特定内容的媒体项标识符的参数。
另外,在一个或多个实施例中,体验模块220可向交叉体验交互模块226注册,以指示体验模块220可执行的动作的类型。该注册可包括例如可能被请求的体验模块220可执行的动作的列表。其他体验模块220可查询交叉体验交互模块226以标识所请求的哪些动作可由哪些体验模块220执行,并且由此可以知道要向哪个体验模块220发送特定消息以便使所请求的特定动作被执行。另选地,对于所请求的任何给定动作,只有一个体验模块220可向交叉体验交互模块226注册为能够执行该动作。因此,如果另一体验模块220想要使该动作被执行,则请求该特定动作的消息(连同适当的参数)可被发送给交叉体验交互模块226。交叉体验交互模块226知道哪个体验模块220被注册用于执行所请求的动作,并且将消息提供给该体验模块220。
在一个或多个实施例中,交叉体验交互模块226还支持将响应消息返回给请求体验模块220(从其中接收请求特定动作的消息的体验模块220)。响应消息可包括例如,所请求的数据,该动作已被执行的确认等。发送响应消息的响应体验模块220可标识要向其发送响应消息的请求体验模块220(例如,如果对请求体验模块220的指示由交叉体验交互模块226提供给该体验模块)。另选地,交叉体验交互模块226可维护已发送的消息的记录,并且将响应消息转发给请求体验模块220,而无需响应体验模块知道哪个体验模块220是请求体验模块220。
可能发生体验模块220不理解它接收到的消息的情形。例如,消息可请求接收体验模块220未执行(或不愿意执行)的动作,接收体验模块可能是不支持该动作的较老版本等。在这样的情形中,该消息可简单地被接收体验模块220忽略。另选地,接收体验模块220可返回响应消息或所请求的动作未被执行的其他指示。
在一个或多个实施例中,体验模块220在彼此发送消息时采用基于统一资源定位符(URL)的协议。要向其发送消息的体验模块220、所请求的动作、以及参数被嵌入在URL中。该URL的记录可由发送消息的体验模块220保存,从而允许消息历史被维护,允许将带有撤销和/或重做命令的消息发送给体验模块220等。
另外,在一个或多个实施例中,核心组件接口216支持跨设备通信,从而允许设备200与一个或多个其他设备通信。例如,跨设备通信允许图1的不同设备102彼此通信。跨设备通信可通过各种不同网络或通信链路来执行,类似于上文讨论的与云(如图1的云112)的通信。
核心组件接口216可以支持以不同方式跨设备通信。在一个或多个实施例中,核心组件接口216包括交互模块,该交互模块支持以和设备/服务通信框架212与云(如图1的云112)通信类似的方式与其他设备通信。核心组件接口216展示应用218的组件可调用的标准接口,该标准组件类似于上文讨论的框架212所展示的接口。另选地,可以(例如由框架212)展示单个接口,并且应用218的组件访问另一设备的请求可由框架212路由到核心组件接口216而不是路由到云。
因此,期望将通信发送给另一设备的应用218的组件可按与经由框架212将通信发送给云类似的方式发送该通信,并可按与经由框架212从云接收通信类似的方式从该其他设备接收响应,并且无需考虑用于与其他设备通信的各种设置和/或协议。相反,核心组件接口216被配置有或以其他方式可访问这些用于与其他设备通信的设置和/或协议。核心组件接口216还被配置成标识设备200可与之通信的其他设备200。其他设备可按多种不同方式来标识,诸如使用常规蓝牙设备发现技术,使用匹配服务(如图1的体验服务116所提供的)等。
尽管本文包括与应用218的更新有关的各种讨论,但可以理解,设备200的其他组件或模块也可被更新。例如,外壳202可被更新。对设备200的这些其他组件或模块的更新可按多种方式提供给设备200并在设备200上进行,诸如使用与本文讨论的用于更新应用218的技术类似的技术,或使用其他技术。
图3示出根据一个或多个实施例的支持包括多个体验模块的应用的示例平台300。平台300可以是例如图1的平台114。平台300可使用各种不同类型的服务器或运行各种软件的其他计算设备中的一个或多个来实现。
平台300包括应用接口302,一个或多个体验专用服务304,以及部署服务306。应用接口302是平台300所展示的允许运行在设备(如图1的设备102或图2的设备200)上的应用与平台300通信的接口(例如API)。在一个或多个实施例中,图2中设备200的设备/服务通信框架212通过调用应用接口302与平台300通信。设备经由应用接口302访问体验专用服务304和/或部署服务306。
体验专用服务304例如是图1的体验服务116。体验专用服务116包括为应用提供各种功能的应用和/或数据。所提供的特定功能基于服务304为其提供功能的应用的类型而变化。例如,体验专用服务304提供的特定功能可包括购物或电子商店功能,歌曲或图像(或其他数据)存储和/或检索功能,搜索功能,朋友或伙伴匹配以供在线游戏,社交联网功能等。
部署服务306管理各应用到设备(如图1的设备102或图2的设备200)的部署。将应用部署到设备包括对该应用的初始部署(例如当该应用被首次安装在该设备上时)。将应用部署到设备还包括部署对安装在设备上的应用的改变。另选地,要在设备上首次安装的应用可按其他方式获取,诸如从光盘(如DVD或CDROM)、从另一服务等获取。然而,即使供在设备上首次安装的应用是从除部署服务306以外处获取的,部署服务306随后仍管理该应用的部署改变。
应用开发者出于各种原因可能希望在各种时间改变该应用。例如,开发者可能期望向该应用添加新功能,修复在该应用中找到的问题,改变(如由于用户反馈)该应用在特定类型的设备上呈现信息的方式等等。这些改变的范围可以从对应用的非常显著的改变到对应用的非常微小的改变。
在开发者改变应用时,开发者改变该应用中一个或多个体验模块的一个或多个组件,从而导致体验模块的新版本。开发者通常不需要改变整个应用。相反,仅需要改变受所期望的改变影响的体验模块。例如,如果开发者希望作出仅对包括十个体验模块的应用中一个体验模块产生影响的改变,则仅这一个体验模块的新版本需要被生成并被部署到设备。
在一个或多个实施例中,对体验模块中组件的改变通过向其上安装该应用且该改变适用的设备发送经改变的体验模块的更新包来部署。更新包可按不同方式标识该改变,诸如通过包括该体验模块的一个或多个替换组件,通过包括对组件的一个或多个改变的指示(如该组件的新版本与该组件的先前版本之间的差异列表)等。更新包还可包括被添加到该应用的新体验模块的新组件。
当开发者创建新更新包以改变应用时,开发者将该新更新包提供给平台300。部署306包括存储这些更新包的更新储存库312。更新包的先前版本也可在更新储存库312中维护,从而导致该体验模块的多个不同版本的更新包被包括在更新储存库312中。
设备更新组件314管理更新储存库312,并且还向适当的设备提供适当的更新包。设备更新组件314可维护更新包的所有先前版本,或另选地可基于各种准则删除更新包的先前版本。例如,设备更新组件314可在同一组件的特定数量的更新包随后已被存储在更新储存库312中之后经过了特定时间量后删除先前更新包,等等。
设备更新组件314还在版本目录316中维护描述各种更新包的信息。版本目录316可以是诸如表或列表等各种不同数据结构,这些数据结构标识与存储在更新储存库312中的更新包有关的各种信息。版本目录316允许设备更新组件314基于从设备接收到的对版本号的指示来确定更新储存库312中存储的哪些(如果有的话)更新包要被部署到该设备。在一个或多个实施例中,版本目录316包括每一应用的不同表,或另选地同一表可用于多个应用并包括对该表中哪一信息对应于哪一应用的指示。
应当注意,对体验模块的某些改变可能不适用于在其上安装应用的所有类型的设备。例如,可针对一种特定设备类型而不是其他设备类型作出对体验模块中设备专用呈现组件的改变。因此,对该体验模块的改变适用于这一特定类型的设备,而不适用于其他类型的设备。
在一个或多个实施例中,版本目录316包括安装(或可以安装)在设备上的每一应用的表或列表,并且每一个这样的表包括一个或多个记录。每一记录对应于存储在更新储存库312中的特定更新包。与版本目录316中的记录对应的特定更新包可按不同方式来标识。在一个或多个实施例中,每一记录至少包括体验模块标识符、主版本号、以及设备类型。更新储存库312也通过该体验模块标识符、主版本号以及设备类型来键控,从而维护版本目录316的记录与更新储存库312之间的对应关系。
表I示出根据一个或多个实施例的版本目录316的记录中所包括的信息的示例。应当注意表I是一个示例,而另选地在版本目录316的记录中可包括不同信息,和/或表I中包括的某些信息可能在版本目录316的记录中未包括。
表I
Figure BDA00002630658500141
每次存在应用的新版本时(这也可被称为每次将该应用的新更新包添加到更新储存库312时),该应用的主版本号递增。当设备更新组件314接收对在设备上安装该应用的当前版本的指示时,设备更新组件314将接收到的版本与版本目录316中该应用的最新近主版本号作比较。如果两个版本号相同,则不存在要部署到设备的新更新包。然而,如果两个版本号不相同,则存在该应用的新版本,因此设备更新组件314确定是否存在要被部署到该设备的一个或多个更新包。
体验标识符指示更新包改变了该应用中所包括的多个体验模块中的哪个体验模块。通常,一不同更新包包括对单个体验模块的改变,尽管另选地一更新包可包括对多个体验模块的改变。
每次存在对该体验模块的改变时,体验版本号递增。因此,每次存在体验模块的新更新包时,该体验模块的体验版本号递增。由此,每次存在对该应用中所包括的任一体验模块的改变时,主版本号递增,而仅当存在对体验标识符标识出的体验模块的改变时体验版本号递增。体验版本号在更新包添加新体验模块的情况下可具有特定值(如,值为1)。
立即更新字段指示安装对应更新包要立即发生还是可被推迟。应用开发者指示安装对应更新包要立即发生还是可被推迟,并且这一指示被添加作为与特定更新包对应的记录的立即更新字段。
如上所述,不是所有更新包都可适用于所有设备。因此,即使版本目录316中该应用的主版本号不同于特定设备上所安装的该应用的当前版本,该应用的较新版本仍可能不适用于该特定设备。设备更新组件314基于设备类型掩码、用户标识符以及位置标识符中的一个或多个来确定更新包是否适用于特定设备。用户标识符和位置标识符可任选地用于仅在设备的用户决定(或另选地没有决定不)允许他或她的用户标识符和/或位置标识符以此方式被使用的情况下确定更新包是否适用于特定设备。
设备类型掩码指示更新包适用的一个或多个设备类型。应用开发者指示特定更新包适用的设备类型,并且这一指示被添加作为与该特定更新包对应的记录的设备类型掩码。
类似地,用户标识符指示更新包适用的一个或多个用户。应用开发者可能期望例如测试应用的两个不同版本。开发者创建带有两个不同版本的两个更新包,指示哪些用户接收哪些版本,并且这一指示被添加到对应记录的用户标识符字段中。可通过例如与用户相关联的用户名(例如,如果用户已向平台300提供登录信息)、设备的标识符或物理特性等来标识用户。另选地,某些用可以注册成特定应用的测试者。设备更新组件314接收对特定设备的用户是否已注册成测试者的指示(例如,从该设备本身、或从平台300的另一组件或模块等接收)。用户标识符则可基于设备的用户的标识符来指示对应更新包是否适用于该设备。
位置标识符指示更新包适用的一个或多个设备位置。应用开发者可能期望例如具有不同国家、不同洲、基于其他地理位置或边界、或基于其他基于位置的边界的应用的不同版本。开发者创建带有两个不同版本的不同更新包,指示哪些设备位置将接收哪些版本,并且这一指示被添加到对应记录的位置标识符字段中。设备更新组件314接收对特定设备的位置的指示(例如,从该设备本身、或从平台300的另一组件或模块等接收)。位置标识符则可基于设备的位置来指示对应更新包是否适用于该设备。
设备更新组件314可响应于各种不同事件和/或在各种不同时间,将一个或多个更新包发送给在其上安装应用的设备。在一个或多个实施例中,设备的核心组件接口(如图2的核心组件接口216)被配置成当应用开始执行时、当对应用的执行终止时、安装在设备上的应用每次向平台300提交请求时等,以有规律或无规律的间隔(例如每天)发送更新检查请求以访问部署服务306。
设备发送的更新检查请求包括对设备类型的指示以及设备上所安装的当前应用的主版本号。设备更新组件314检查版本目录316以确定是否存在适用于该设备的、对该应用的体验模块中的任一个的更新包。如果存在适用于该设备的、对该应用的体验模块中的任一个的更新包,则那些更新包被部署到该设备;否则,没有更新包被部署到该设备。
另外地,该设备可按其他方式检查对应用的更新。例如,更新检查请求可包括特定体验模块的标识符以及该设备上所安装的当前应用的体验模块的体验版本号,而不是发送该设备上所安装的当前应用的主版本号。该设备由此可在逐个体验模块的基础上检查更新。
在其他实施例中,平台300可将更新包推送给设备,而不是使设备将更新检查请求发送给平台300。例如,设备更新组件314可维护各种设备上所安装的应用的主版本号(和/或体验版本号)的记录。当适用于设备但尚未被部署到该设备的更新包可用时,设备更新组件314将该更新包部署到该设备。
部署服务306还支持撤销更新包。在一个或多个实施例中,为撤销更新包,开发者提供替换更新包(该替换更新包可能是例如在已撤销的更新包之前所使用的先前更新包)。开发者还指示对替换更新包的安装要立即发生。替换更新包将由此被部署到适当的设备,以便有效地撤销先前更新包。
如上文讨论的,当开发者改变应用时,开发者提供更新包以供将该改变存储在更新储存库312中、以及描述该更新包的信息以供包括在版本目录316中。开发者可按不同方式提供该更新包和描述该更新包的信息。例如,该更新包以及描述该更新包的信息可经由电子通讯(如电子邮件)、经由光盘或其他便携式存储介质等提供给平台300的管理员。平台300的管理器随后可将该更新包发送给更新储存库312而将描述该更新包的信息发送给版本目录316。
另选地,该更新包以及描述该更新包的信息可由设备更新组件314自动获取。例如,开发者可在服务器或其他计算设备上维护该更新包以及描述该更新包的信息(按部署服务306维护该更新包以及描述该更新包的信息类似的方式)。设备更新组件314可将更新请求发送给开发者所维护的计算设备,并且从该计算设备获取该更新包以及描述该更新包的信息。由此,部署服务306可按与设备从部署服务306获取该更新包以及描述该更新包的信息类似的方式,从开发者所维护的计算设备自动获取该更新包以及描述该更新包的信息。
图4示出根据一个或多个实施例的更新应用的示例。在图4的示例中,示出图3的部署服务306和图2的设备200。设备200上所安装的应用402具有主版本号58以及三个体验模块。应用402中的第一体验模块具有体验标识符A和体验版本号3。应用402中的第二体验模块具有体验标识符B和体验版本号7。应用402中的第三体验模块具有体验标识符C和体验版本号5。
版本目录316被示为带有示例数据的表。版本目录的表被示为具有多个记录(各自在表中作为一水平行)。在版本目录316的表中,第一列指示主版本号410,第二列指示体验标识符412,第三列指示体验版本号414,第四列指示设备类型掩码416,而最后一列指示立即更新值418。附加行(未示出)也可被包括在版本目录316中,诸如与主版本号57之前的更新包对应的各行。对于设备类型掩码416,值“C”、“M”和“T”分别用于表示计算机设备类型(如图1的计算机设备106)、移动设备类型(如图1的移动设备108)、以及基于电视机的设备类型(如图1的基于电视机的设备110)。对于立即更新值418,值“T”用于指示对应更新包的安装要立即发生,而值“F”用于指示对应更新包的安装可被推迟。
如从版本目录316中可以看出,第一行对应于一更新包,该更新包具有主版本号57、用于具有体验标识符A的体验模块、具有体验版本号3、用于计算机设备类型和基于电视机的设备类型、以及对应更新包的安装要立即发生。
设备200向部署服务306发送标识设备200的类型(基于电视机设备类型)和设备200的当前主版本号(该主版本号为58)的更新检查请求420。设备更新组件314针对版本目录评估该更新检查请求,并且确定要将对应于主版本号59、61和62的更新包部署到设备200。具有小于或等于设备200的当前版本号的版本号的更新包已被部署到设备200。因此,对应于主版本号57和58的更新包无需再被部署到设备200。
对应于主版本号59的更新包针对设备200上尚未安装的新体验模块,并因此要被部署到设备200。对应于主版本号61和62的更新包都针对设备200上先前安装的体验模块的新版本,并因此要被部署到设备200。对应于主版本号60的更新包针对设备200上未安装的新体验模块,但不适用于基于电视机的设备类型(该更新包适用于移动设备类型)。因此,对应于主版本号60的更新包没有被部署到设备200。
由此,设备更新组件314向设备200返回要将对应于主版本号59、61和62的更新包部署到设备200的指示422。指示422中也可包括来自版本目录316的各种信息。在一个或多个实施例中,对于要部署到设备200的每一更新包,设备更新组件314返回对主版本号的指示、更新包改变的体验模块、体验模块的新版本的体验版本号、以及对应更新包的安装要立即发生还是可被推迟的指示。
返回图2,设备/服务通信框架212从部署服务(如图3的部署服务306)接收对更新检查请求的响应。该响应包括对针对应用218的、要安装在设备200上的特定一个或多个更新包(如果有的话)的指示。该一个或多个更新包本身也可被包括在从部署服务接收到的响应中,或另选地设备/服务通信框架212可随后向部署服务提交对该特定一个或多个更新包的请求,并且响应于这一请求,接收响应于该随后请求的该特定一个或多个更新包。
在一个或多个实施例中,当要安装在设备200上的一个或多个更新包由设备/服务通信框架212接收时,框架212将更新包存储在体验存储214中,并且向核心组件接口216通知接收到的一个或多个更新包。核心组件接口216随后将更新包安装在设备200上,从而导致该应用的经更新版本被安装在设备200上。这一安装可包括多个不同动作,诸如将特定文件写入存储设备上的特定位置,将信息添加到注册存储(如操作系统注册表),更新数据库模式等。可将文件写入体验存储214和/或设备200的其他存储设备。在某些情形中,在安装了针对应用218的更新包之后,设备200在应用218可被执行之前被重新启动。在其他情形中,在安装针对应用218的更新包之后,应用218可被执行,而无需重新启动设备200。
如果对更新包的指示指示了对应更新包的安装要立即发生,则核心组件接口216尽快安装该更新包。这一尽快安装可包括在应用218再次被执行之前安装该应用包,在已经运行并安装该更新包的情况下关闭应用218等。
然而,如果对更新包的指示指示了对应更新包的安装可被推迟,则核心组件接口216在某稍后的时间安装该更新包。核心组件接口216可确定何时安装更新包,对该更新包的安装可按不同方式推迟,诸如在应用218被再次执行之前,在对应用218的执行终止之后,在设备200下次被断电或重置之前,当应用218未在执行并且设备200处于空闲时(如设备200上处理器和/或其他资源的使用量低于阈值量)等等。
图5是示出根据一个或多个实施例的用于为包括多个体验模块的各应用安装和获取更新包的示例过程500的流程图。过程500通过诸如图2的设备102或图2的设备200之类的设备来执行,并可以以软件、固件、硬件,或其组合来实现。过程500被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于实现包括多个体验模块的各应用的示例过程;参考不同的附图,在本文中包括了对实现包括多个体验模块的各应用的附加讨论。
在过程500中,安装具有多个体验模块的应用(动作502)。如上文讨论的,该应用被安装在实现过程500的设备上,并且包括多个体验模块。
该应用的当前版本响应于运行该应用的请求而运行(动作504)。该应用的这一当前版本是实现过程500的设备上所安装的该应用的最新近版本。
另外,作出关于这些体验模块中一个体验模块的更新包是否可用的检查(动作506)。这一更新包将是适用于实现过程500的设备的更新包。该检查通过向部署服务发送检查更新的请求来作出。
如果没有针对该应用的体验模块的更新包可用,则过程500返回动作504以便运行该应用的当前版本。然而,如果针对这些体验模块中一个体验模块的更新包可用,则该更新包被获取(动作508)。
所获取的更新包被安装,以便更新该应用的当前版本(动作510)。该更新包可在该应用完成运行之后被安装(例如在更新包的安装可被推迟的情况下),或另选地该应用可终止执行,使得该更新包可被安装(例如在该更新包要被立即安装的情况下)并且该应用再次运行。过程500随后返回动作504,以便继续运行该应用的当前版本。
应当理解,在动作506中该应用可在检查更新包的可用性之前被运行,或另选地更新包的可用性可在运行该应用之前被检查,而不管图5中各动作的顺序。
图6是示出了根据一个或多个实施例的用于部署对设备的更新的示例过程600的流程图。过程600可以用软件、固件、硬件、或其组合来实现。在图6的左侧示出的过程600的动作由诸如图1的设备102或图2的设备200等设备执行。在图6的右侧示出的过程600的动作由诸如图1的部署服务118或图3的部署服务306等部署服务执行。过程600被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程600是用于在部署对设备的更新的示例过程,参考不同附图,在此包括了在部署对设备的更新的附加讨论。
在过程600中,更新包的储存库以及更新包描述的目录在部署服务处被维护(动作602)。如上文讨论的,更新包包括对于特定应用的体验模块的改变。
设备向部署服务发送更新检查请求(动作604)。如上文讨论的,可在各种时间和/或响应于各种事件而发送该更新检查请求。
部署服务接收更新检查请求(动作606),并且标识适用于设备的任何更新包(动作608)。如上文讨论的,更新包是否适用于设备可取决于各种不同准则,诸如设备上当前体验模块版本、设备的类型、设备的用户等。
向设备返回对适用于设备的任何更新包的指示(动作610)。这一指示标识适用于设备的零个或多个更新包。
设备从部署服务接收对任何更新包的指示(动作612),并且检查该指示以确定一个或多个更新包是否适用于设备(动作614)。
如果不存在适用于设备的更新包,则对更新的当前检查结束(动作616)。然而,部署服务继续维护更新包的储存库以及更新包描述的目录(动作602),并且可针对要发送给部署服务的后续更新检查请求而重复过程600。
然而,如果一个或多个更新包适用于设备,则将更新包请求发送给部署服务(动作618)。更新包请求是从部署服务获取适用于设备的一个或多个更新包的请求。
部署服务接收更新包请求(动作620),并且通过向设备发送所请求的一个或多个更新包来作出响应(动作622)。该一个或多个更新包可按不同方式来标识(诸如通过使用与更新包相关联的主版本号)。设备接收所请求的一个或多个更新包(动作624),并且将接收到的一个或多个更新包安装在设备上(动作626)。如上文讨论的,安装一个或多个更新包中的每一个可以是立即的或被推迟。对更新的当前检查随后结束(动作616)。然而,部署服务继续维护更新包的储存库以及更新包描述的目录(动作602),并且可针对要发送给部署服务的后续更新检查请求而重复过程600。
另选地,如果一个或多个更新包适用于设备,则在动作610中那些更新包可被返回给设备。在这些情形中,不必执行动作616-620。
图7示出根据一个或多个实施例的可被配置成运行包括多个体验模块的各应用的示例计算设备700。计算设备700可以是例如图1的设备102、图2的设备200,或可以实现图1的平台114或图3的平台300的至少一部分。
计算设备700包括一个或多个处理器或处理单元702、可包括一个或多个存储器和/或存储组件706的一个或多个计算机可读介质704、一个或多个输入/输出(I/O)设备708、以及允许各组件和设备彼此通信的总线710。计算机可读介质704和/或一个或多个I/O设备708可以作为计算设备700的一部分被包括,或者可另选地可以耦合到计算设备700。总线710表示若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种不同的总线体系结构中的处理器或局部总线。总线710可包括有线和/或无线总线。
存储器/存储组件706表示一个或多个计算机存储介质。组件706可包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件706可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等等)以及可移动介质(例如,闪存驱动器、可移动硬盘驱动器、光盘等等)。
此处所讨论的技术可以以软件实现,该软件具有由一个或多个处理单元702执行的指令。可以理解,不同的指令可以存储在计算设备700的不同的组件中,诸如存储在处理单元702中,存储在处理单元702的各种缓存存储器中,存储在设备700的其他高速缓存存储器(未示出)中,存储在其他计算机可读介质上等等。另外,可以理解,指令存储在计算设备700中的位置可以随着时间而变化。
一个或多个输入/输出设备708允许用户向计算设备700输入命令和信息,以及允许信息被呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、话筒、扫描仪等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
此处可以在软件或程序模块的一般上下文中描述各种技术。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可以被计算设备访问的任何可用介质。作为示例,而不是限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其他介质。
“通信介质”通常用诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。通信介质还包括任何信息传送介质。术语“已调制数据信号”指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。上面各项中的任何组合也包括在计算机可读介质的范围内。
一般而言,此处所描述的任何功能或技术都可使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的术语“模块”和“组件”一般代表软件、固件、硬件或其组合。在软件实现的情况下,模块或组件表示当在处理器(例如,一个或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读的存储器设备中,可以参考图7发现关于其进一步的描述。本文描述的包括多个体验模块技术的应用的各个特征是平台无关的,从而意味着该技术可在具有各种处理器的各种商用计算平台上实现。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (15)

1.一种在设备中的方法,所述方法包括:
在所述设备上安装包括多个体验模块的应用,在所述应用运行时所述多个体验模块各自实现一组特性,所述多个体验模块中的每一个包括第一组件和第二组件,所述第一组件包括专用于所述设备的特定类型的代码,而所述第二组件包括跨多个设备类型所共有的代码;以及
响应于运行所述应用的请求,在所述设备上运行所述应用。
2.如权利要求1所述的方法,其特征在于,所述应用在所述设备的应用外壳中被运行,并且其中所述第一组件包括专用于包括所述设备的所述特定类型在内的一个或多个设备类型的呈现逻辑和资源,并且跨多个设备类型所共有的代码包括跨所述设备的所述特定类型以及其他设备类型所共有的业务逻辑。
3.如权利要求2所述的方法,其特征在于,所述多个设备类型包括计算机设备类型、移动设备类型、以及基于电视机的设备类型,并且所述设备的所述特定类型是所述多个设备类型之一。
4.如权利要求1所述方法,其特征在于,还包括将所述多个体验模块彼此隔离,以便防止所述多个体验模块中的每一个体验模块直接访问所述多个体验模块中的其他体验模块。
5.如权利要求1所述的方法,其特征在于,还包括:
从所述多个体验模块中的第一体验模块接收包括所请求的动作的消息;
将所述消息发送给所述多个体验模块中的第二体验模块;
从所述多个体验模块中的第二体验模块接收响应消息,所述响应消息包括对包括所请求的动作的消息的响应;以及
将所述响应消息发送给所述多个体验模块中的第一体验模块。
6.如权利要求5所述的方法,其特征在于,还包括:
从所述多个体验模块中的每一个接收对该体验模块可执行的一个或多个动作的指示;
从所述多个体验模块中的一个或多个接收标识所述多个体验模块中可执行特定动作的一个体验模块的请求;以及
向所述多个体验模块中的一个或多个返回对所述多个体验模块中可执行该特定动作的一个体验模块的指示。
7.如权利要求1所述的方法,其特征在于,还包括:
从所述多个体验模块中的第一体验模块接收请求;
将所述请求发送给在其上安装所述应用的附加设备;
从所述附加设备接收对所述请求的响应;以及
将所述响应发送给所述多个体验模块中的第一体验模块。
8.如权利要求1所述的方法,其特征在于,还包括:
向部署服务发送检查各更新的请求;
从所述部署服务接收对所述多个体验模块中的一个或多个体验模块的一个或多个更新包的指示;
从所述部署服务接收所述多个体验模块中的一个或多个体验模块的一个或多个更新包;以及
在所述设备上安装所述一个或多个更新包。
9.如权利要求8所述的方法,其特征在于,还包括:
基于对所述一个或多个更新包的指示,确定所述一个或多个更新包是否要被立即安装;以及
如果确定述一个或多个更新包要被立即安装,则在下次运行所述应用之前安装所述一个或多个更新包。
10.一种计算设备,包括:
处理器;以及
一个或多个其上存储有多个指令的计算机可读介质,所述指令在被处理器执行时致使所述处理器:
维护针对应用的不同体验模块的不同更新包的目录,所述应用包括多个体验模块,当所述应用在设备上运行时所述多个体验模块各自实现一组特性,所述多个体验模块中的每一个包括第一组件和第二组件,第一组件包括专用于所述设备的特定类型的呈现逻辑和资源,而第二组件包括跨多个设备类型所共有的业务逻辑;
确定是否存在适用于所述设备上的应用的更新包;以及
如果存在适用于所述设备上的应用的更新包,则向所述设备发送所述更新包。
11.如权利要求10所述的计算设备,其特征在于,所述多个设备类型包括计算机设备类型、移动设备类型、以及基于电视机的设备类型,并且所述设备的所述特定类型是所述多个设备类型之一。
12.如权利要求10所述的计算设备,其特征在于,对于所述多个体验模块中一个体验模块的所述更新包标识在所述多个体验模块中一个体验模块中的组件的改变。
13.如权利要求10所述的计算设备,其特征在于,所述多个指令还致使所述处理器维护所述应用的多个不同的更新包,并至少部分基于所述设备的所述特定类型,确定是否存在适用于所述设备上的应用的更新包。
14.如权利要求10所述的计算设备,其特征在于,所述多个指令还致使所述处理器:
将对所述更新包的指示发送给所述设备;
从所述设备接收对所述更新包的请求;以及
响应于对所述更新包的请求,向所述设备返回所述更新包。
15.如权利要求10所述的计算设备,其特征在于,所述多个指令还致使所述处理器向所述设备发送对所述更新包的指示,所述对更新包的指示包括:
所述应用的主版本号;
体验模块标识符,所述体验模块标识符指示所述多个体验模块中被所述更新包改变的一个体验模块;
所述多个体验模块中已改变的一个体验模块的体验模块版本号;以及
对所述更新包是否要由所述设备立即安装或可被推迟的指示。
CN201180030885.4A 2010-06-23 2011-06-14 包括多个体验模块的应用 Active CN102971705B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/822,036 US9672022B2 (en) 2010-06-23 2010-06-23 Applications including multiple experience modules
US12/822,036 2010-06-23
PCT/US2011/040310 WO2011163010A2 (en) 2010-06-23 2011-06-14 Applications including multiple experience modules

Publications (2)

Publication Number Publication Date
CN102971705A true CN102971705A (zh) 2013-03-13
CN102971705B CN102971705B (zh) 2016-11-16

Family

ID=45353842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180030885.4A Active CN102971705B (zh) 2010-06-23 2011-06-14 包括多个体验模块的应用

Country Status (6)

Country Link
US (1) US9672022B2 (zh)
EP (1) EP2585915A4 (zh)
JP (1) JP5819953B2 (zh)
CN (1) CN102971705B (zh)
CA (1) CA2800917C (zh)
WO (1) WO2011163010A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104850425A (zh) * 2014-02-18 2015-08-19 柯尼卡美能达株式会社 信息处理装置以及该装置中的设定值的更新方法
CN107450923A (zh) * 2017-07-28 2017-12-08 郑州云海信息技术有限公司 一种定制基线分离的程序实现方法及装置
JP2018018501A (ja) * 2016-07-14 2018-02-01 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
CN108829406A (zh) * 2018-06-13 2018-11-16 珠海市君天电子科技有限公司 安装包打包方法、装置、电子设备及存储介质
CN109240728A (zh) * 2018-11-20 2019-01-18 北京千丁互联科技有限公司 一种软件升级方法及装置
CN112306532A (zh) * 2020-11-20 2021-02-02 广州欢网科技有限责任公司 基于大屏app功能更新的版本展示方法、装置和系统

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL210169A0 (en) 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security
US9413815B2 (en) * 2011-01-05 2016-08-09 Appcitylife, Inc. Methods and apparatuses for imparting functionality to a mobile computing device
JP2012247840A (ja) * 2011-05-25 2012-12-13 Sony Corp 近隣人物特定装置、近隣人物特定方法、近隣人物特定プログラム及び近隣人物特定システム
US20130042231A1 (en) 2011-08-10 2013-02-14 Ford Global Technologies, Llc Methods and Apparatus for Software Updating
US8726264B1 (en) 2011-11-02 2014-05-13 Amazon Technologies, Inc. Architecture for incremental deployment
US8984162B1 (en) 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
US9229740B1 (en) * 2011-11-02 2016-01-05 Amazon Technologies, Inc. Cache-assisted upload proxy
US9235398B2 (en) 2011-12-07 2016-01-12 Yahoo! Inc. Development of platform independent applications
US9158520B2 (en) * 2011-12-07 2015-10-13 Yahoo! Inc. Development of platform independent applications
US9268546B2 (en) 2011-12-07 2016-02-23 Yahoo! Inc. Deployment and hosting of platform independent applications
US20130151595A1 (en) * 2011-12-07 2013-06-13 Bruno Fernandez-Ruiz Deployment and hosting of platform independent applications
US9197720B2 (en) 2011-12-07 2015-11-24 Yahoo! Inc. Deployment and hosting of platform independent applications
US8713562B2 (en) * 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
JP5868208B2 (ja) * 2012-02-16 2016-02-24 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
US9430937B2 (en) 2012-07-03 2016-08-30 Google Inc. Contextual, two way remote control
IN2015KN00455A (zh) 2012-08-18 2015-07-17 Luminal Inc
CN109977086B (zh) * 2013-11-29 2023-09-01 华为终端有限公司 终端间应用共享的方法和终端
JP6340815B2 (ja) * 2014-02-19 2018-06-13 カシオ計算機株式会社 プログラム
US10866796B2 (en) * 2014-04-18 2020-12-15 Huawei Device Co., Ltd. Software upgrade method and apparatus, and device
US20170083865A1 (en) * 2014-06-09 2017-03-23 Hewlett Packard Enterprise Development Lp Context-based experience
US20150371536A1 (en) * 2014-06-20 2015-12-24 Ray Enterprises Inc. Universal remote control device
US10521417B2 (en) 2014-06-24 2019-12-31 Google Llc Processing mutations for a remote database
US10015236B2 (en) * 2015-01-30 2018-07-03 Ricoh Company, Ltd. Cloud application activation and update service
US9785426B2 (en) * 2015-02-19 2017-10-10 Vmware, Inc. Methods and apparatus to manage application updates in a cloud environment
US20160269261A1 (en) * 2015-03-10 2016-09-15 ECI Solutions, Inc System and method for matching electronic devices found by multiple tools
US10248403B2 (en) * 2015-03-13 2019-04-02 Kony, Inc. Providing updates for natively rendered mobile applications
US9619305B2 (en) * 2015-06-02 2017-04-11 International Business Machines Corporation Locale aware platform
US10341194B2 (en) 2015-10-05 2019-07-02 Fugue, Inc. System and method for building, optimizing, and enforcing infrastructure on a cloud based computing environment
EP3373135A4 (en) * 2015-11-02 2019-05-22 Ricoh Company, Ltd. INFORMATION PROCESSING DEVICE, COMMUNICATION SYSTEM AND INFORMATION PROCESSING METHOD
US10572213B2 (en) * 2016-04-04 2020-02-25 Microsoft Technology Licensing, Llc Universal application pinning
US10560520B2 (en) * 2016-05-20 2020-02-11 Sap Se Compatibility framework for cloud and on-premise application integration
CN106874188B (zh) * 2016-12-30 2020-05-12 北京五八信息技术有限公司 软件接口测试方法及装置
CN107357560A (zh) * 2017-04-28 2017-11-17 阿里巴巴集团控股有限公司 交互处理方法及装置
US10635463B2 (en) * 2017-05-23 2020-04-28 International Business Machines Corporation Adapting the tone of the user interface of a cloud-hosted application based on user behavior patterns
US10360017B1 (en) * 2018-01-02 2019-07-23 Microsoft Technology Licensing, Llc Updating program packages at distribution endpoint
CN111722856B (zh) * 2019-03-19 2024-04-09 上海汽车集团股份有限公司 车载微控制器中固件的升级方法和装置
US11599355B2 (en) * 2021-06-21 2023-03-07 Microsoft Technology Licensing, Llc Application module version management
CN115708062A (zh) * 2021-08-20 2023-02-21 花瓣云科技有限公司 一种应用控制方法、系统及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1471008A (zh) * 2002-06-28 2004-01-28 用于移动设备的应用程序分发和配置管理的系统和方法
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
US20050223376A1 (en) * 2004-04-06 2005-10-06 Morris Robert P Method and system for distributing a software application to a specified recipient
US20070232223A1 (en) * 2006-03-30 2007-10-04 Eric Bilange Systems and methods for communicating music indicia
US20080133569A1 (en) * 2006-12-01 2008-06-05 Amp'd Mobile, Inc. System and method for content handling and bundling for mobile handset device

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951639A (en) * 1996-02-14 1999-09-14 Powertv, Inc. Multicast downloading of software and data modules and their compatibility requirements
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US7051080B1 (en) 2000-08-04 2006-05-23 Oracle International Corporation Techniques for navigating in mobile applications
JP2003140902A (ja) 2001-10-29 2003-05-16 Sony Corp ホスト装置、クライアント装置、ホームネットワークシステム、クライアント装置のソフトウェア更新方法
US7984435B2 (en) 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US20070067373A1 (en) * 2003-11-03 2007-03-22 Steven Higgins Methods and apparatuses to provide mobile applications
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
JP4232767B2 (ja) 2005-03-14 2009-03-04 セイコーエプソン株式会社 ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法
JP4659497B2 (ja) 2005-03-29 2011-03-30 シスメックス株式会社 測定装置の測定に関する設定方法、分析システム、データ処理装置、及びアプリケーションプログラム
JP2007034750A (ja) 2005-07-27 2007-02-08 Toshiba Corp デジタル放送受信装置
US20070077921A1 (en) * 2005-09-30 2007-04-05 Yahoo! Inc. Pushing podcasts to mobile devices
JP2007172255A (ja) 2005-12-21 2007-07-05 Canon Inc コンポーネント間通信装置
JP2007226740A (ja) 2006-02-27 2007-09-06 Kyocera Corp 通信システム、ソフトウェア更新方法、通信装置、管理サーバ装置、およびプログラム
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
US7971145B2 (en) 2006-05-22 2011-06-28 Sap Ag Systems and methods for adapting service interface behaviors
US20080016176A1 (en) * 2006-07-13 2008-01-17 Ofir Leitner System for development of games for mobile devices and distribution thereof
US8607223B2 (en) 2006-07-28 2013-12-10 International Business Machines Corporation Creating multiplatform customized install packages for software installation
KR100782857B1 (ko) 2006-10-13 2007-12-06 삼성전자주식회사 복수의 모델들이 공유하는 공유모듈을 이용하여 소프트웨어를 갱신하기 위한 방법, 디지털 방송 수신기 및 그 방법을 기록한 컴퓨터로 읽을 수 있는 기록매체
US20080127174A1 (en) 2006-10-25 2008-05-29 Igt Systems and methods for transmitting and installing software on a gaming machine in a gaming network
WO2008114454A1 (ja) 2007-03-20 2008-09-25 Fujitsu Limited 更新システム、プログラム実行装置及びコンピュータプログラム
US20080301660A1 (en) 2007-05-30 2008-12-04 Google Inc. Maintaining Multiple Versions of a Software Application on a Device
US8131875B1 (en) * 2007-11-26 2012-03-06 Adobe Systems Incorporated Device profile assignment based on device capabilities
JP2009193444A (ja) 2008-02-15 2009-08-27 Fuji Xerox Co Ltd ソフトウェア更新システムおよび管理装置および端末
US8307016B2 (en) 2008-02-25 2012-11-06 Microsoft Corporation Accessing different application data via a common data structure
US8904368B2 (en) * 2008-03-31 2014-12-02 International Business Machines Corporation Instantiating a composite application for different target platforms
US8275880B2 (en) 2008-05-06 2012-09-25 Microsoft Corporation Media content programming, delivery, and consumption
EP2175613A1 (en) 2008-10-08 2010-04-14 Research In Motion Limited Mobile wireless communications device and system providing dynamic management of carrier applications and related methods
US8725745B2 (en) 2009-04-13 2014-05-13 Microsoft Corporation Provision of applications to mobile devices
US20100268735A1 (en) 2009-04-17 2010-10-21 Microsoft Corporation Online content service with catalog-based interaction
US20110047540A1 (en) * 2009-08-24 2011-02-24 Embarcadero Technologies Inc. System and Methodology for Automating Delivery, Licensing, and Availability of Software Products
JP4832558B2 (ja) 2009-08-24 2011-12-07 ソニー株式会社 受信装置および方法、記録媒体、並びにプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
CN1471008A (zh) * 2002-06-28 2004-01-28 用于移动设备的应用程序分发和配置管理的系统和方法
US20050223376A1 (en) * 2004-04-06 2005-10-06 Morris Robert P Method and system for distributing a software application to a specified recipient
US20070232223A1 (en) * 2006-03-30 2007-10-04 Eric Bilange Systems and methods for communicating music indicia
US20080133569A1 (en) * 2006-12-01 2008-06-05 Amp'd Mobile, Inc. System and method for content handling and bundling for mobile handset device

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104850425A (zh) * 2014-02-18 2015-08-19 柯尼卡美能达株式会社 信息处理装置以及该装置中的设定值的更新方法
CN104850425B (zh) * 2014-02-18 2018-11-13 柯尼卡美能达株式会社 信息处理装置以及该装置中的设定值的更新方法
JP2018018501A (ja) * 2016-07-14 2018-02-01 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
CN107450923A (zh) * 2017-07-28 2017-12-08 郑州云海信息技术有限公司 一种定制基线分离的程序实现方法及装置
CN108829406A (zh) * 2018-06-13 2018-11-16 珠海市君天电子科技有限公司 安装包打包方法、装置、电子设备及存储介质
CN109240728A (zh) * 2018-11-20 2019-01-18 北京千丁互联科技有限公司 一种软件升级方法及装置
CN112306532A (zh) * 2020-11-20 2021-02-02 广州欢网科技有限责任公司 基于大屏app功能更新的版本展示方法、装置和系统

Also Published As

Publication number Publication date
US20110321028A1 (en) 2011-12-29
JP2013529811A (ja) 2013-07-22
JP5819953B2 (ja) 2015-11-24
US9672022B2 (en) 2017-06-06
CA2800917C (en) 2019-03-26
WO2011163010A2 (en) 2011-12-29
EP2585915A2 (en) 2013-05-01
WO2011163010A3 (en) 2012-04-05
CN102971705B (zh) 2016-11-16
CA2800917A1 (en) 2011-12-29
EP2585915A4 (en) 2013-11-20

Similar Documents

Publication Publication Date Title
CN102971705A (zh) 包括多个体验模块的应用
CN102077233B (zh) 扩展的用户简档
US9069584B2 (en) Multi-platform application player
US9513888B1 (en) Virtual preloads
US6546002B1 (en) System and method for implementing an intelligent and mobile menu-interface agent
US9092243B2 (en) Managing a software appliance
US8935687B2 (en) Incrementally updating a software appliance
CN102801755B (zh) 一种应用的管理方法和一种应用平台
KR101633366B1 (ko) 앱스토어 서비스 제공 방법 및 시스템
US20160275560A1 (en) Server apparatus and server program
US20120042076A1 (en) Method and apparatus for managing application resources via policy rules
CN104205085A (zh) 设备间的无缝浏览
CN105474206A (zh) 支持按需数据传输的虚拟同步
JP2015505627A (ja) クラウドコンテンツの認識
CN105051686A (zh) 用于集成的推荐的系统和方法
CN103370689A (zh) 跨环境应用兼容
US20170269916A1 (en) Selective Application Installation Or Application Running Without Installation
EP3374858B1 (en) Creating and modifying applications from a mobile device
US10805427B1 (en) Backup and restore of customer devices
CN107667343A (zh) 按需加载资源
CN113742716B (zh) 代码运行方法、装置、电子设备、存储介质和程序产品
CN116319644A (zh) 会话菜单的处理方法、装置及电子设备
KR20080027293A (ko) 데이터 언어에서 다수 언어들의 관리
KR101856924B1 (ko) 에뮬레이터를 제어하는 런칭 어플리케이션의 동작 방법
KR102252053B1 (ko) 듀얼 스크린에서의 컨텐츠 중복을 배제하는 방법, 시스템, 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150805

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150805

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant