具体实施方式
用于将主机与外部应用服务器进行连接的外部服务应用发现过程在本文被描述并在附图中被示出。外部服务应用发现过程将一个或多个主机与一个或多个服务应用进行连接,该服务应用允许客户计算设备的用户经由与主机通信的通用客户机应用来与网络上的文件一同工作。开发平台接口(其是一种共享通信协议)允许外部应用服务器与主机交互,无论主机的本地通信协议是什么。通过开放平台接口的约定所描述的外部服务应用发现过程,外部应用服务器描述了服务应用所提供的功能以及如何调用该功能。主机基于开发平台接口的实现级和主机所理解的外部服务应用发现过程的约定,选择性地使得服务应用所提供的功能对用户可用。
图1示出包括一个或多个主机102和一个或多个外部应用服务器104的示例性企业网络100的一个实施例。用户106从客户计算设备110使用web浏览器108来访问主机102。主机102最一般地是将文档存储在文档存储系统126中并为用户106管理许可的内容服务器。一般而言,主机102运行主机应用112,该主机应用提供处理主机102的普通功能的主机用户界面114。主机102的普通功能中的至少一些包括向用户106提供对已存储的文档116的访问,该文档116被包含在内容存储126中并且旨在使用支持的应用来被查看和/或编辑。主机102还提供使外部应用服务器104的服务对用户106可用的通用平台。外部应用服务器104提供基于浏览器的web应用,该web应用允许用户106与通过主机可用的文档进行交互。开放平台接口定义并指导主机102与外部应用服务器104之间的文档操作。主机102还实现从外部应用服务器接收通信的端点120。虽然主机102初始化包括外部应用服务器104的服务的场景,但主机102不调用外部应用服务器104。相反,外部应用服务器104展示所支持的功能,以使用回调来针对所支持的文档类型进行操作。
外部应用服务器104运行一个或多个基于web的服务应用118,该服务应用118使用户106能够访问、查看、编辑以及任选地执行针对内容(即,文件或文档)的其他操作,并且从客户计算设备110通过网络执行文件夹(即,目录)管理,而不要求本地安装与特定文档类型一同工作所需的适当的应用。外部应用服务器104的操作和输出不是调用外部应用服务器104的功能的主机102所专用的。每个服务应用118一般作为外部应用服务器104上的服务来运行。外部应用服务器104使用开放平台接口和开放平台接口的约定集合来与主机102集成。外部应用服务器104提供与所选文件类型的文档一同工作的必要操作和功能。外部应用服务器104是主机不可知的。换言之,外部应用服务器104的操作和/或输出不是便于访问外部应用服务器104的服务的主机102所专用的。处理各种文档类型的服务应用118的示例包括用于与文字处理文档、电子表格、演示和注释一起工作的标准(即,本地安装的)应用的在线(即,基于web的)伙伴。
每个服务应用118所提供的操作通常专用与所选文件类型或与文件夹管理有关。外部应用服务器104所提供的核心操作是查看和编辑文档。在各个实施例中,服务应用118提供一个或多个附加操作,包括但不限于,重新格式化文档以供在移动设备上查看、创建新文档、转换文档、嵌入文档、以及从外部应用服务器104的角度来广播文档,广播和嵌入是特定的交互式用户流。在广播的情况中,外部应用服务器104在多个客户计算设备110上显示文档,并在一个实施例中跟踪在多个客户计算设备110的每个处被查看的当前页面。主机102管理文档上传、广播发起、和富客户端入口点。在广播操作的另一个实施例中,页面跟踪由主机102来处理。
通过一个或多个服务应用入口URL来访问每个服务应用118所支持的操作。每个服务应用入口URL用作用于针对特定文档类型的特定操作的外部应用服务器104的入口点。一般而言,每个服务应用入口URL包括外部应用服务器的地址,并指定任务(例如,使用电子表格应用的嵌入式编辑)、与该任务相关联的所需数据,即文档的元数据URL和授权访问的访问令牌、以及该任务专用的任意可选的参数。当用户106选择用于文档的一个操作时,主机102针对用户所选择的文档生成用于该操作的服务应用入口URL。具体而言,外部应用主页122生成与服务应用118一起使用的URL参数。外部应用主页122所生成的参数包括但不限于访问令牌和源URL。源URL是服务应用118用来访问主机端点120和文档的URL。访问令牌是对用户/对象对来说唯一的令牌,主机端点120使用该用户/对象对来认证用户106并授权对文档和/或服务应用118的访问。在各个实施例中,基于用户标识符、时间戳和文档标识符来计算访问令牌,并用主机102已知的(例如,存储在主机配置数据库中的)密码来加密该访问令牌。
通过主机102提供的包装器来处理服务应用入口点。主机102提供的包装器是一个框架或环境,该框架或环境显示外部应用服务器104的输出,并接受来自允许用户106使用服务应用118提供的功能来与文档交互的客户计算设备110的输入。在一个实施例中,包装器包括外部应用主页122和/或应用帧124。作为示例,主机102生成的外部应用主页122的一个实施例是将全部服务应用页面托管在web页面容器中的单个页面,诸如使用逐条边的布局的内联帧(iFrame)。外部应用主页122本身不具有用户界面。外部应用主页的替换实现可包括用于上面所描述的用户界面或替代的其他网页容器和布局。
嵌入信息的量可能导致长且麻烦的服务应用入口URL。另外,包括将到期的访问令牌使得服务应用入口URL变得脆弱。包装器通过提供对书签和链接共享的支持来补偿服务应用入口URL的麻烦且脆弱的本质。换言之,外部应用主页的URL是可作书签且可共享的。应用帧124指向服务应用入口URL,并且外部应用主页122任选地呈现主机框架和导航控件。
外部应用服务器104的背景任务是通过与用户交互操作相类似的方式来实现的,但利用客户计算设备110显示的浏览器所显示的页中的隐藏帧来导航到服务应用入口URL并加载脚本、小程序、或其他指令集(例如,JavaScript),该指令集驱动任务、提供重试逻辑、并允许通过导航父帧来通知最终状态。在一个实施例中,背景任务用于主机定向的文档转换。
当服务应用执行文件级操作时,它使用开放平台接口向主机端点120进行请求。主机端点120是web服务,该web服务理解使用开放平台接口所作的请求。主机端点120的各个实施例被实现作为基于REST的web服务。在一些实施例中,与主机端点120的通信是通过安全传输协议(例如,HTTPS)来独占地处理的,以便保护认证令牌和文件内容。在一个实施例中,通过将主机端点web服务的位置追加到主机URL来创建主机端点URL。
外部应用服务器104提供访问、编辑、查看和以其他方式操纵或与各种文档类型一起工作的必要功能。在所描述的实施例中,外部应用服务器104不包括与网络访问相关联的复杂度和开销、用户认证、文件存储、网络和文件安全、以及通常由网络中的其他服务器来处理且通常专用于特定企业的其他管理任务。忽略这些特征并使外部应用服务器聚焦于通过开放平台接口来处理文档操作允许外部应用服务器104被用于各种各样的企业网络场景。应当理解,如此处所描述的执行并且承担通常由企业网络上的其他服务器来处理的额外角色和责任的外部应用服务器104落入本发明的范围和精神。
主机102是能够使用通用客户端应用(诸如web浏览器)通过网络来访问的在线服务器应用。外部应用服务器104所提供的服务由主机102来消费,并且对客户计算设备110可用。当附连于外部应用服务器104时,主机102变为知晓外部应用服务器104所支持的每个服务应用118和功能。合适的主机系统的示例包括但不限于允许基于web的访问的邮件系统(例如,MicrosoftExchange)、统一通信系统(例如,IBM LotusMicrosoft和)、和内容和/或文档管理系统(例如,IBM Lotus和Microsoft)。
主机102具有便于客户计算设备110与外部应用服务器104之间的交互的多种责任。主机102存储用户的数据并初始化包括外部应用服务器104的场景。主机102实现用于显示每个服务应用118所主控的用户界面页面的包装器。另外,主机102实现并展示用于从外部应用服务器104接收通信的主机端点120。主机端点120是web服务,该web服务理解使用开放平台接口所作的请求。主机102还通过使用开放平台接口作出的请求来提供用于服务应用118的文件操作。主机102的其他责任包括在用户级处理对文档的访问控制以及用于外部应用服务器104的许可实施。在一个实施例中,主机102通过生成将到期的访问令牌(即,授权元件)来处理访问控制,该访问令牌被传递给外部应用服务器104以对所请求的操作进行授权。
与外部应用服务器的集成是主机通过被称为发现的过程来实现的另一个责任,主机在该过程期间得知外部应用服务器所支持的功能。在发现之前,不要求主机具有关于外部应用服务器的可用性或功能的任何知识。必要的仅仅是主机理解外部应用服务器所使用的开放平台接口。主机的行为基于外部应用服务器的可用性和功能而改变。
开放平台接口的配置、功能、实现级以及主机102对该开放平台接口的约定的遵守确定了对终端用户可用的外部应用服务器的功能。如果主机不能完全实现开放平台接口或不满足外部应用服务器的某个功能的要求,则该功能对用户不可用。具体而言,如果主机不公开对具体功能的支持,则服务应用抑制需要不受支持的功能的任意特征。例如,当主机不能保存文件的已更新副本时,服务应用不应当允许用户编辑文档。此外,对访问被连接的服务应用的管理控制是通过主机的配置任选地可用的。
主机管理外部应用服务器所提供的服务应用的许可。主机在其检查用户对文件的准许的同时检查许可。为了对文档执行所选操作,用户必须具有对文件执行操作的适当的准许以及使用相关联的服务应用的有效许可这二者。主机向外部应用服务器报告准许和许可检查的结果。另外,主机任选地检查以查看对服务应用所支持的特定文档类型的访问是否经由在主机中配置的管理控制被阻止。主机无法保存或检索被阻止的文档类型。
在各个实施例中,主机响应于点击与服务应用相关联的文件类型,在调用默认动作之前检查许可。如果用户不具有与默认点击操作相关联的服务应用的适当的许可,则该主机不会尝试执行命令(即,调用操作)。在其他实施例中,主机不会尝试执行用户缺少其适当的准许的命令或针对被阻止的文档类型的命令。
在各个实施例中,主机还在生成用于访问外部应用服务器提供的功能的动态用户界面控件(诸如,上下文菜单)时检查许可。动态用户界面控件通常为用户提供可用于该文档类型的操作列表。如果用户不具有与用于文档类型的操作相关联的服务应用的适当的许可,则该主机不在动态用户界面控件中显示命令。在其他实施例中,动态用户界面控件不示出用户缺少其适当的准许的命令或与被阻止的文档类型有关的命令。
在各个实施例中,诸如查看操作之类的基本功能在没有许可的情况下是可用的,而诸如编辑和转换操作的高级功能则需要许可。在一个实施例中,逐个用户或逐个机器地许可对服务应用的使用。在另一个实施例中,对服务应用的使用受到可用并发许可的数量的限制。在涉及多个服务应用的又一个实施例中,单个许可应用于使用单个外部应用服务器所提供的全部服务应用。在另一个实施例中,需要用于每个服务应用的许可。
如前所述,主机是内容服务器,该主机在该内容服务器中提供文档存储。在替换的实施例中,主机被配置成提供对在主机外部存储(例如,存储在网络文件系统中或在附连于网络的存储设备上)的文档的访问。在替换的实施例中,外部应用服务器被配置成请求存储在任意可访问的内容服务器或文件存储系统中的文档,该文件存储系统接受并理解用开发平台接口作出的文件操作请求。
web服务器提供对主机和服务应用的在线访问。当外部应用服务器具有对web服务器的独占访问时,它是最具响应性的。由对web服务器的共享使用导致的通信滞后更有可能使体验对终端用户来说不那么积极。共享的web服务器在某些情况下是可以接受的,其中共享该web服务器的其他应用具有低带宽要求、不经常被访问、和/或传送少量的数据。在一个实施例中,主机和/或外部应用服务器使用独立web服务器的服务。在另一个实施例中,外部应用服务器集成了web服务器。在又一个实施例中,主机集成了由外部应用服务器使用的web服务器。
用于主机与外部应用服务器之间的通信的开放平台接口允许与文档交互,并使用访问令牌作为授权/认证机制。
开放平台接口既是可扩展的,又提供对跨版本的接口通信的支持。开放平台接口的基本数据传输机制方便了跨平台的通信。在各个实施例中,虽然应当认识到其他人类和/或机器可读数据交换格式落入本发明的范围和精神,但基本数据是在JavaScript Object Notation(JSON)主体中来传送的。开放平台接口还遵守诸如Windows Communication Foundation(WCF)的一些应用边界接口所使用的“忽略你不预期的(ignore what you weren’t expecting)”和“使用你正预期但未得到的数据的默认值(use default values for data you were expecting butdidn’t get)”的面向服务的体系结构原则。开放平台接口所使用的“默认值必然带来可接受的行为”的语义有助于维持高度跨版本的世界中的功能。该语义在SkyDrive、Hotmail以及外部应用服务器的生产和集成环境间维持功能时尤其有用。
开放平台接口的主要可扩展性机制是通过功能集(例如,Cobalt、CoAuth、锁定、更新)的声明、实现和消费。核心开放平台接口仅包含用于获得与文档相关联的元数据的方法、以及用于获得文档数据的方法。主机支持的全部其他方法在文档元数据内被声明,并作为被支持的功能集列表来返回。每个功能集由串来声明,并承诺实现开放平台接口所支持的方法集合。开放接口定义了功能集的名称以及功能集承诺的相关联的方法。主机可用于实现的功能集受限于开放平台接口的约定。换言之,开放平台接口不提供尝试发现与简单对象访问协议(SOAP)元数据交换所提供的相类似的完全通用方法的机制。开放平台接口通过声明新的功能集来轻松地扩展。
为了提供对服务应用的访问,主机102必须了解外部应用服务器104所提供的可用性和功能。外部服务应用发现过程允许主机102了解可用的外部应用服务器,而不需要管理员手动地配置该主机102。在外部服务应用发现过程期间,主机102了解外部应用服务器104所支持的文件格式和开放平台接口动词。
图2示出将主机102与外部应用服务器104进行连接的外部服务应用发现过程200的流程图。外部服务应用发现过程200是由主机通过提供发现数据源202的位置来发起,该发现数据源202包含描述外部应用服务器104的功能的信息。在所示的实施例中,发现数据被包含在由外部应用服务器104维护的发现配置文档中,并且发现数据源202是由发现URL(例如,域名)定址的外部应用服务器104的发现端点。在所示的实施例中,主机102经由主机的配置用户界面204来接受外部应用服务器位置,并生成发现URL206。在一个实施例中,发现端点具有相对于外部应用服务器104的位置的固定位置,并且主机102通过将发现端点的位置(例如,相对路径)追加到外部应用服务器104的位置来生成发现URL。在另一个实施例中,管理员必须指定完整的发现URL 206。或者,由主机消费的发现数据不由服务应用服务器来提供。相反,发现数据源202是由管理员提供的文件(即,发现配置文档),而向主机102提供的发现数据源202的位置是该文件的位置。
在获得发现URL之后,主机102向发现端点发出发现请求208。在一个实施例中,发现请求208是针对发现URL的HTTP GET请求。发现端点为主机102提供与发现服务210连接的能力。发现服务210一接收到发现请求208就响应以包含发现数据214的发现响应消息212,该发现数据214描述由在外部应用服务器上运行的服务应用提供的功能。发现数据214根据开放平台接口的约定来格式化,并且包含由该约定指定的信息。在一个实施例中,发现响应消息212在消息主体中不包含任何HTML。相反,主体包含以主机理解的XML格式描述的发现数据。在各个实施例中,发现数据包含诸如服务应用的标识符、对服务应用的描述、文件扩展名、与该文件扩展名相关联的操作(即动作)、主机的任意开放平台接口实现要求(例如,功能集)、负责处理操作的服务应用的位置、和/或与该文件扩展名相关联的文档的mime类型等信息。
主机102消费由发现服务210返回的发现数据214。在消费了发现数据214之后,主机102为主机配置存储216中相关联的文件类型存储关于由服务应用支持的动作的信息(即,注册服务应用)。在完成外部服务应用发现过程200之后,主机的行为变为集成服务应用的被支持的功能。
发现数据内容和结构由开放平台接口来指定。用于发现的核心数据包括动作标识符、与该动作相关联的文件类型、和用于调用该动作的源URL。任选的发现数据包括服务应用标识符、对主机支持动作的要求、文件夹/目录标识符、网络区域标识符、默认点击行为、目标扩展标识符、和证明标识符。动作标识符由开放平台接口的约定来定义,并且定义了针对特定文件类型而允许的操作。动作标识符的示例包括查看、编辑、编辑新的、移动查看、移动处理程序、嵌入查看、呈现(呈现广播)、加入(加入广播)、转换。文件类型描述向其应用动作的文件的类型。在一个实施例中,文件类型由文件扩展名来指定。源URL指定用于确定外部应用服务器的绝对URL的输入数据,该外部应用服务器执行用于匹配文件类型的动作。服务应用标识符是用于标识了服务应用的支持应用(例如,“Microsoft Excel Web App”)的人和机器可读标识符(例如,串值)。网络区域标识符描述了在从特定的网络区域调用时用于动作的特定参数(例如,源URL)。服务应用标识符和网络区域标识符用于对文件类型/操作对进行分组,并且提供了在主机配置用户界面中呈现可用的服务应用的有意义的方式。文件夹/目录标识符为特定动作与文件类型一起使用或代替文件类型来标识该动作的对象。默认点击行为指定在用户选择由服务应用支持的文件类型而不通过用户界面选择具体动作时由主机调用的动作。目标扩展标识符指定用于转换动作的目标文件的文件类型。在一个实施例中,目标扩展标识符由文件扩展名来指定。
注册将每个服务应用118所支持的文件类型、外部应用服务器104对每种被支持的文件类型所支持的操作、和外部应用服务器中用于调用用于每种被支持的文件类型的操作的计算设备的URL相关联。换言之,当主机102连接到外部应用服务器104时,该外部应用服务器104将成对的文件类型和操作的列表与用于调用用于该文件类型的操作的URL一起返回。URL中需要的参数由开放平台接口来定义。
在发现期间,主机基于此时其所理解的约定来选择利用或忽略各个动作。在一个实施例中,主机102在注册成对的文件类型和操作之前,验证它支持对操作的要求。如果主机102不支持该操作和/或不满足主控要求,则不注册成对的文件类型和操作。具体而言,在一些实施例中,主机使用“要求”属性,其指定用于滤除主机无法支持的动作的开放平台接口实现要求。换言之,如果主机不识别或不理解“要求”属性值中列出的全部字段,或选择不支持开放平台接口的约定,则主机不注册(即实现)成对的文件类型和操作,并且不向用户提供该功能。
源URL使用生成与每个动作相关联的有效服务应用入口URL的参数。对于动作,服务应用入口URL参数由开放平台接口中的约定来指定。某些参数是必需的,而其他参数是任选的。在一个示例性实施例中,必需的参数由方括号(“[”和“]”)来界定,而任选的参数由尖括号(“<”和“>”)来界定。如果主机不理解一个必需的参数,则主机不注册动作。相反,如果不理解可选的参数,则主机可以选择注册动作。在此情形中,与可选参数相关联的功能被简单地丢失,但是主机仍然能够提供与主机理解的功能一样多的动作。这个行为提供了不同版本的开放平台接口间的跨版本兼容性的基础。即使对服务应用服务器的升级提供了新的功能,但主机能继续与升级后的服务应用服务器一起工作。主机简单地继续提供对它理解的功能的支持,并忽略它不理解的任何功能。任选参数的示例包括用户界面的语言、对象的用户界面的语言、是否嵌入演示帧、是否允许演示参与者独立地切换幻灯片、以及是否示出幻灯片的缩略图。
主机通常可以从各个网络区域访问。通常通过其在网络内部还是外部以及是否使用传输层安全来描述网络区域。为了全面描述外部应用服务器对主机的功能,发现数据的一个实施例通过网络区域标识符来描述用于一个或多个可能的区域配置的文件类型/操作对。例如,为了与可通过外联网(例如,因特网)和内联网(例如,企业局域网)来访问的主机一起工作,发现数据的一个实施例使用用于内部使用的服务应用URL以及用于外部使用的服务应用URL来描述每个文件类型/操作对。类似的,发现数据的一个实施例使用用于与开放网络协议(例如,HTTP)一起使用的服务应用URL以及容纳允许使用安全和不安全网络协议来访问的主机的安全网络协议(例如,HTTPS)来描述文件类型/操作对。发现数据的另一个实施例使用用于内部/外部和安全/不安全使用(例如,内部-http、外部-http、内部-https、外部-https)的每种组合的服务应用URL来描述每个文件类型/操作对。在一些实施例中,当主机未被配置用于安全网络时,发现约定提供对较低安全区域的后退位置。换言之,如果主机未被配置一个安全网络协议,则使用对应的开放网络协议来更改和注册被指定为使用安全网络协议的服务应用URL。由此,使得服务应用服务器的功能对用户可用,但缺少安全网络协议的好处。
出于简明,外部服务应用发现过程的一个实施例默认将服务应用与在主机中配置的全部区域相关联,并将主机端点允许列表设置成允许全部区域。对服务应用与各个区域间的集成的管理控制通过某些主机可用。在各个实施例中,在服务应用服务器级(即,启用或禁用服务应用服务器所提供的全部服务应用)或在服务应用级(即,选择性地启用或禁用服务应用)禁用集成。当禁用与服务应用服务器/服务应用的集成时,主机不在动态用户界面控件中列出操作或不尝试执行命令。
任选地,被提供给主机的发现数据包括服务应用服务器专用的密码密钥信息。该密码密钥信息为主机提供通过其验证请求实际上是由服务应用服务器作出的机制。当请求到达主机端点时,主机任选地使用该密码密钥信息来确认请求的密码签名。如果该密码签名不能被确认,则主机忽略该请求。
在各个实施例中,主机在外部服务应用发现过程期间实现差错检查。在一个实施例中,如果发现URL是残缺的,则主机生成通知。在另一个实施例中,如果外部应用服务器未响应或无法被定位,则主机生成通知。在又一个实施例中,如果发现响应是残缺的,则主机生成通知。在另一个实施例中,在冲突的情况下(即,如果外部应用服务器尝试注册已经被注册的文件类型),主机生成通知并且不注册服务应用。
在一个实施例中,发现仅在由管理员发起时发生,因此主机和服务应用服务器不会自动地知晓对方的被支持功能的任何变化。在替换的实施例中,一旦主机和服务应用服务器被连接,发现过程就提供用于更新被支持功能的自动化机制。在自动化的发现更新过程的各个实施例中,在周期性的基础上(例如,经调度的轮询)或实时地(例如,推送通知)提供更新。此外,自动化的发现更新过程的各个实施例是在主机侧(例如,周期性地重复发现过程)或服务应用服务器侧(例如,发现服务向主机通知变化)实现的。
对外部应用服务器的包含提供了与主机无关的文档处理服务。这消除了添加新的组件或者在实质上修改支持外部应用服务器的工作主机的配置的需求。通过不修改操作或不向工作主机添加新的组件,将违反工作配置或需要主机大量停机时间的可能最小化。这还允许外部应用服务器被升级、修改、添加或移除,而不需要重新配置主机。这是尤其有益的,因为文档处理应用的新的版本和更新往往比对像主机的核心服务的更新发生的频繁得多。换言之,将企业从仅为了利用对现有文档处理应用的改进、为了添加新开发的或新要求的文档处理应用、或为了移除过时的或被弃用的文档处理应用就修改主机的停机、风险和负担中解脱出来。
本文描述的实施例和功能可经由许多计算系统来操作,诸如上面参考图1所描述的主机102、和外部应用服务器104、和客户机设备110,包括有线和无线计算系统、移动计算系统(如移动电话、图形输入板或平板型计算机、膝上型计算机等)。此外,本文所述的实施例和功能可在分布式系统上操作(如基于云的计算系统),其中应用功能、存储器、数据存储和检索、以及各种处理功能可在诸如因特网或内联网之类的分布式计算网络上彼此远程地操作。各种类型的用户界面和信息可经板载计算设备显示器或经与一个或多个计算设备相关联的远程显示单元被显示。例如,各种类型的用户界面和信息可在墙壁表面上被显示和交互,各种类型的用户界面和信息被投射在墙壁表面上。与可用于实施本发明的各实施例的许多计算系统的交互包括:键击输入、触摸屏输入、语音或其他音频输入、姿势输入(其中相关联的计算设备配备有用于捕捉和解释用于控制计算设备的功能的用户姿势的检测(如相机)功能)等。图3到5以及相关描述提供了其中可实施本发明的各实施例的各种操作环境的讨论。然而,关于图3到5所示出和讨论的设备和系统是用于示例的目的,而非对可被用于实施本文所述的本发明的各实施例的大量计算设备配置的限制。
图3是示出可用来实施本发明的各实施例的计算设备300的示例物理组件的框图。下面描述的计算设备组件可适合于上面描述的计算设备,例如主机102、外部应用服务器104、和客户计算设备110。在基本配置中,计算设备300可包括至少一个处理单元302和系统存储器304。取决于计算设备的配置和类型,系统存储器304可包括但不限于,易失性存储器(例如,随机存取存储器(RAM))、非易失性存储器(例如,只读存储器(ROM))、闪存、或任何组合。系统存储器304可包括操作系统305和一个或多个编程模块306,该编程模块306适合于运行诸如客户机应用(例如,用户代理/web浏览器108)或服务器应用(例如,主机应用112或服务应用118)的应用320。操作系统305例如可适合于控制计算设备300的操作。此外,本发明的实施例可结合图形库、其他操作系统、或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图3中由虚线308内的那些组件示出。
计算设备300可具有附加特征或功能。例如,计算设备300还可包括附加数据存储设备(可移动和/或不可移动),诸如例如,磁盘、光盘、或磁带。这些附加存储在图3中由可移动存储309和不可移动存储310示出。
如上所述,可在系统存储器304中存储包括操作系统305在内的多个程序模块和数据文件。当在处理单元302上执行时,编程模块306可执行各个过程,包括例如,外部服务应用发现过程200的各步骤中的一个或多个。上述过程是一个示例,且处理单元302可执行其他过程。根据本发明的实施例可使用的其他编程模块可包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用等。
一般而言,根据本发明的实施例,程序模块可包括可执行特定任务或可实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本发明的实施例可用其他计算机系统配置来实践,包括手持式设备、多处理器系统、基于微处理器的系统或可编程消费电子产品、小型机、大型计算机等。本发明的实施例还可在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
此外,本发明的实施例可在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或在包含电子元件或微处理器的单个芯片上实践。例如,可以通过片上系统(SOC)来实施本发明的各实施例,其中,可以将图3中示出的每个或许多组件集成到单个集成电路上。这样的SOC设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能,所有这些都被集成到(或“烧录到”)芯片基板上作为单个集成电路。当通过SOC操作时,服务器应用320或客户机应用的功能可以通过在单个集成电路(芯片)上集成有计算设备300的其它组件的应用专用逻辑来实现。本发明的实施例还可使用能够执行诸如例如,AND(与)、OR(或)和NOT(非)的逻辑运算的其他技术来实践,包括但不限于,机械、光学、流体和量子技术。另外,本发明的实施例可在通用计算机或任何其他电路或系统中实践。
例如,本发明的实施例可被实现为计算机过程(方法)、计算系统、或诸如计算机程序产品或计算机可读介质之类的制品。计算机程序产品可以是计算机系统可读并对用于执行计算机过程的指令的计算机程序编码的计算机存储介质。
本文所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器304、可移动存储309和不可移动存储310都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可用于存储信息且可由计算设备300访问的任何其他介质。任何这样的计算机存储介质可以是设备300的一部分。计算设备300还可具有输入设备312,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括输出设备314,诸如显示器、扬声器、打印机等。上述设备是示例,并且可使用其他设备。
本文所使用的术语计算机可读介质还可包括通信介质。通信媒介可由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。计算设备300可包括允许与其他计算设备318通信的通信连接316。合适的通信连接316的示例包括但不限于RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行或串行端口、以及适用于与适用的计算机可读介质一起使用的其他连接。
图4A和4B示出可用来实施本发明的各实施例的合适的移动计算环境,例如移动电话400、智能电话、平板个人计算机、膝上型计算机等。参考图4A,示出了用于实现各实施例的示例移动计算设备400。在基本配置中,移动计算设备400是具有输入元件和输出元件两者的手持式计算机。输入元件可包括允许用户将信息输入到移动计算设备400中的触摸屏显示器405和输入按钮410。移动计算设备400还可结合允许进一步的用户输入的可选的侧面输入元件415。可选的侧面输入元件415可以是旋转开关、按钮、或任何其他类型的手动输入元件。在替代实施例中,移动计算设备400可结合更多或更少的输入元件。例如,在某些实施例中,显示器405可以不是触摸屏。在又一替代实施例中,移动计算设备是便携式电话系统,如具有显示器405和输入按钮410的蜂窝电话。移动计算设备400还可包括可选的小键盘435。可选的小键盘435可以是物理小键盘或者在触摸屏显示器上生成的“软”小键盘。
移动计算设备400结合输出元件,如可显示图形用户界面(GUI)的显示器405。其他输出元件包括LED光420和扬声器425。另外,移动计算设备400可包含振动模块(未示出),该振动模块使得移动计算设备400振动以将事件通知给用户。在又一实施例中,移动计算设备400可结合耳机插孔(未示出),用于提供提供输出信号的另一手段。
尽管此处组合移动计算设备400来描述,但在替代实施例中,本发明还可组合任何数量的计算机系统来被使用,如在台式环境中、膝上型或笔记本计算机系统、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型计算机、大型计算机等。本发明的实施例也可在分布式计算环境中实践,其中任务由分布式计算环境中通过通信网络链接的远程处理设备来执行;程序可位于本机和远程存储器存储设备中。总而言之,具有多个环境传感器、向用户提供通知的多个输出元件和多个通知事件类型的任何计算机系统可结合本发明的实施例。
图4B是示出在一个实施例中使用的诸如图4A中所示的计算设备之类的移动计算设备的组件的框图。即,移动计算设备400可结合系统402以实现某些实施例。例如,系统402可被用于实现可运行与台式或笔记本计算机的应用类似的一个或多个应用的“智能电话”,这些应用例如浏览器、电子邮件、日程安排、即时消息收发、以及媒体播放器应用。在某些实施例中,系统402被集成为计算设备,诸如集成的个人数字助理(PDA)和无线电话。
一个或多个应用程序466可被加载到存储器462中并在操作系统464上或与操作系统464相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、PIM(个人信息管理)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息通信程序等等。系统402还包括存储器462内的非易失性存储468。非易失性存储468可被用于存储在系统402断电时不会丢失的持久信息。应用466可使用信息并将信息存储在非易失性存储468中,如电子邮件应用使用的电子邮件或其他消息等。同步应用(未示出)也驻留在系统402上并被编程为与驻留在主机计算机上的对应同步应用进行交互,以保持存储在非易失性存储468中的信息与存储在主机计算机上的对应信息相同步。如应被理解的,其他应用可被加载到存储器462中且在设备400上运行,包括此处描述的各种客户机和服务器应用。
系统402具有可被实现为一个或多个电池的电源470。电源470还可包括外部功率源,如补充电池或对电池重新充电的AC适配器或加电对接托架。
系统402还可包括执行发射和接收无线电频率通信的功能的无线电472。无线电472通过通信运营商或服务供应商来方便系统402与“外部世界”之间的无线连接。来往无线电472的传输是在操作系统464的控制下进行的。换言之,无线电472接收的通信可通过操作系统464传播到应用程序466,反之亦然。
无线电472允许系统402例如通过网络与其他计算设备通信。无线电472是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制之类的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传送介质。术语已调制数据信号摂是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。如此处所使用的术语“计算机可读介质”包括存储介质和通信介质两者。
系统402的这个实施例被示为具有两种类型的通知输出设备:可用于提供视觉通知的发光二极管(LED)420和可用于与扬声器425一起使用来提供音频通知的音频接口474。这些设备可直接耦合到电源470,使得当被激活时,即使为了节省电池功率而可能关闭处理器460和其它组件,它们也保留一段由通知机制指示的保持通电时间。LED 420可被编程来无限地保持通电,直到用户采取行动指示该设备的通电状态。音频接口474用于向用户提供听觉信号并从用户接收听觉信号。例如,除被耦合到扬声器425以外,音频接口474还可被耦合到话筒以接收听觉输入,诸如便于电话对话。根据各本发明的各实施例,话筒也可充当音频传感器来便于对通知的控制,如下文将描述的。系统402可进一步包括允许板载相机430的操作来记录静止图像、视频流等的视频接口476。
移动计算设备实现系统402可具有附加特征或功能。例如,设备还可包括附加数据存储设备(可移动的/或不可移动的),诸如磁盘、光盘或磁带。这些另外的存储在图4B中由存储468示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。
设备400生成或捕捉的且经系统402存储的数据/信息可如上所述本地存储在设备400上,或数据可被存储在可由设备通过无线电472或通过设备400和与设备400相关联的一分开的计算设备之间的有线连接访问的任何数量的存储介质上,该计算设备如例如因特网之类的分布式计算网络中的服务器计算机。如应理解的,此类数据/信息可经设备400、经无线电472或经分布式计算网络来被访问。类似地,这些数据/信息可根据已知的数据/信息传送和存储手段来容易地在计算设备之间传送以供存储和使用,这些手段包括电子邮件和协作数据/信息共享系统。
图5示出用于向一个或多个客户机设备提供如上所述的浏览器应用108、主机应用112、和/或服务应用118的系统体系结构。与主机应用112和/或服务应用118相关联地开放、交互或编辑的内容可被存储在不同通信信道或其他存储类型中。例如,可使用目录服务522、web门户524、邮箱服务526、即时消息通信存储528以及社交联网站点530来存储各种文档。如上所述,主机应用112和/或服务应用118可使用用于允许数据利用的这些类型的系统等中的任一个。服务器520可为客户机提供主机应用112和/或服务应用118。作为一个示例,服务器520可以是通过web来提供主机应用112和/或服务应用118的web服务器。服务器520可通过网络515向客户机提供web上的主机应用112和/或服务应用118。可访问主机102的客户机的示例包括计算设备300,计算设备可包括任何通用个人计算机110a、平板计算设备110b和/或诸如智能电话的移动计算设备110c。这些设备中的任一个可从存储516中获得内容。
以上参考例如根据本发明的实施例的方法、系统和计算机程序产品的框图和/或操作示图描述了本发明的实施例。框中所注明的各功能/动作可按不同于任何流程图所示的次序出现。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可基本同时执行,或者这些框有时可按相反的次序执行。
尽管已描述了本发明的特定实施例,但也可能存在其他实施例。此外,虽然本发明的实施例被描述为与存储在存储器和其他存储介质中的数据相关联,但是数据还可被存储在其他类型的计算机可读介质上或从其读取,诸如辅助存储设备(像硬盘、软盘、或CD-ROM)、来自因特网的载波、或其他形式的RAM或ROM。此外,所公开的方法的各步骤可以任何方式修改,包括通过对各步骤重新排序和/或插入或删除步骤,而不背离本发明。
在各种实施例中,用于在构成本发明的计算设备之间进行通信的网络的类型包括但不限于互联网、内联网、广域网(WAN)、局域网(LAN)、以及虚拟专用网络(VPN)。在本申请中,网络包括企业网络和客户机计算设备用来访问企业网络的网络(即客户机网络)。在一个实施例中,客户机网络是企业网络的一部分。在另一实施例中,客户机网络是通过外部可用的入口点(如网关、远程访问协议、或公共或专用互联网地址)来访问企业网络的一分开的网络。
本申请中提供的一个或多个实施例的描述和说明不旨在以任何方式限制或约束如权利要求所要求保护的发明范围。本申请中提供的实施例、示例和细节被认为是足以传达所有权,且使得他人能够制作并使用所要求保护的发明的最佳模式。所要求保护的发明不应被理解为限制于本申请中所提供的任何实施例、示例或细节。不管是以组合的方式还是分开的方式示出和描述,各种特征(结构上的和方法逻辑上的)旨在被选择性地包括或忽略,以产生具有特定的特征集的实施例。在被提供本申请的描述和说明的情况下,本领域的技术人员能够想象到落在所要求保护的发明的更宽泛方面以及本申请中所具体化的一般发明概念的精神内的替代实施例并不背离该更宽泛的范围。