专利名称:呈现设备作为应用的制作方法
呈现设备作为应用
背景技术:
从对大多数用户有利的角度来看,应用与设备的交互是简单的。例如,当文字处理程序的用户想要打印文档时,用户只需要按下按钮(或与对话框交互),然后在打印机处取走打印好的纸张。然而,在软件和硬件级处的场景的背后,该过程可能涉及若干系统服务的复杂集成,导致打印的纸张停留在打印机托盘中。在许·多情况下,这种复杂性产生可抑制应用与设备之间的交互的灵活性的紧密结合。设备通常经由设备驱动程序呈现给计算设备。设备驱动程序是强类型化组件,其使得应用和/或系统服务能够直接和与驱动程序相关联的设备交互。典型的设备驱动程序主要负责使主机计算设备和其所附连到的设备之间能够通信。这种通信可经由与中央处理器(CPU)上的特定针脚相关联的电路板上的直接链路、经由诸如外设部件互连(PCI)、内置集成电路(I2C)或通用串行总线(USB)的通用扩展总线、或者经由诸如以太网的网络媒介。在这种链路上的通信涉及命令和控制以及数据交换。设备驱动程序提供对特定设备的标准化(例如系统限定的)视图,使得驱动程序表示一类设备;或者用于所关注的特定设备的专用实现。例如,从应用的传统打印可如图I所描绘的那样进行。如图所示,过程100开始于框102,其中用户指示应用(例如,文字处理应用、图像编辑器、电子表格程序等)将在特定打印设备上打印文档。在框104中,应用为被请求的打印机加载特定设备情境。设备情境常常是系统提供的实际设备的抽象且使得应用、系统服务和打印机设备驱动程序之间能够为了形成打印输出而进行交互。根据设备情境中提供的信息,应用为特定打印设备确定可用于打印的一个或多个设置和/或选项。在框106中,应用基于用户指定的设置和/或选项创建用于待打印的每页文档的固定页面布局的形式化描述。在一些情况下,代替创建固定的页面布局,每一页被描绘(例如,如在许多喷墨打印机中那样)。在框108中,应用经由设备情境提交用于每一页的形式化描述,这导致或者将(一个或多个)形式化页面描述直接假脱机输入至打印机或者经由打印服务器提交该描述。在本示例中,应用创建打印布局,然后经由设备情境直接与设备交互以直接协商用于输出的格式。然后设备情境将输出传送给打印子系统,打印子系统接着进行打印。因此,应用或多或少地直接与打印机或其它类型的设备交互,从而在应用和设备之间形成紧密结合。
发明内容
本公开提供了一种用于在应用和设备之间交互的新范例。如下所述,一个或多个管理组件管理并调解应用之间的双向交互。这使得能够在第一应用和第二应用之间交互,第二应用为物理设备(例如,打印机、网络摄影机、视频显示器或其它设备)的虚拟化或提供到服务提供商、在线业务等的接口。这样,可将设备看作与另一应用交互的服务。例如,在第二应用为物理打印设备的虚拟化的情况中,第二应用用作打印服务而不是物理打印设备的表示,以便将设备的功能虚拟化到服务契约中。(一个或多个)管理组件可充当操作系统(OS)的一部分,以允许OS协调双向、应用至应用的交互,并且使得在交互中能具有更大灵活性。一些实施例包括应用编程接口(API),以允许应用经由OS的(一个或多个)管理组件彼此交互。在本文所述实施例提供的范例中,数据交换的重要性增加,这种数据交换由在两个应用的情境中的用户交互而不是命令和控制来调解。这与传统的设备驱动程序模型形成对比,传统模型支持由用户提供的有限调解并且其中命令和控制扮演整个驱动程序设计的更重要部分。提供本发明内容用于以简化形式引入概念的选择,这些概念将在下面的具体实施方式
中进一步描述。本发明内容并非旨在标识要求保护的主题的关键特征或必要特征,也不旨在用来限制要求保护的主题的范围。
参考附图来描述详细描述。在附图中,附图标记中最左边的数字(一个或多个)表示该附图标记首次出现的附图。在不同附图中相同的附图标记表示相似或相同的项目。 图I描绘了用于从应用打印文档的传统过程。图2是描绘了其中可操作一个或多个实施例的示例环境的示意图。图3是针对一个或多个实施例的可作为图2的示例环境的一部分部署的示例计算设备的示意图。图4是针对一个或多个实施例的用于调解应用之间的双向交互的示例配置的示意图。图5A描绘了针对一个或多个实施例的用于调解应用之间的双向交互的示例性过程。图5B描绘了针对一个或多个实施例的用于提供在应用之间的双向交互的情境中的用户体验的示例性过程。图5C描绘了针对一个或多个实施例的用于应用寿命管理的示例性过程。图6是针对一个或多个实施例的用于调解应用之间的双向交互的示例配置的图。图7A和7B描绘了针对一个或多个实施例的用于调解应用之间的双向交互的示例性过程。图8是针对一个或多个实施例的用于调解应用之间的双向交互的示例配置的图。图9A和9B描绘了针对一个或多个实施例的用于调解应用之间的双向交互的示例性过程。
具体实施例方式概述
简而言之,实施例涉及调解应用之间的交互的管理组件(或管理应用)。通过这种调解,一个应用产生由另一应用消费和/或处理的输出。管理组件协调(broker)这种交互并管理与交互相关联的用户体验。在一些实施例中,管理组件可调解在第一应用(例如,诸如文字处理应用或其它应用的用户应用)和第二应用之间的双向交互。第二应用可以是设备(例如,诸如打印机的外围设备)的虚拟化,或者第二应用可以是到服务提供商(例如,在线打印服务业务)的接口或前端。如本文所用,体验和用户体验是指呈现给用户以从用户收集信息和/或为用户提供信息的一个或多个对话框、显示画面、窗口、控件,以及其呈现的流、布置和/或定时。虽然本文可以使用术语对话框,但应当理解,该术语用于清楚描述的目的,并且应理解为描述不限于单个对话框的广义的体验。如本文所用,虚拟化描述了一种过程,其中应用将硬件设备模拟、模仿或人格化为其它硬件或软件组件,使得该设备和另一组件之间的交互经由应用进行。不像通信重点往往集中在设备的命令和控制上的传统设备驱动程序设计,本文所述虚拟化更多地关注操作的意图和过程中交换的数据。这种不同的关注重点可使用作为示例的打印情景来示出。尽管传统打印驱动程序主要关注如何与打印机会话并指示其在页面上打印内容,但本文所述虚拟化关注打印操作本身,并且将如何完成打印的实现留给虚拟化应用。虽然这种虚拟化可包括设备驱动程序,但其也可包括提供比设备驱动程序更丰富的功能的虚拟化的应用。在一些实施例中,管理组件是在客户端设备上运行的OS的一部分。此外,一些实施例包括管理API,其允许第一应用(例如,诸如文字处理应用的用户应用)与管理组件交互,以使得第一应用和第二应用之间能够双向交互,第二应用是设备的虚拟化或到在线服务的前端。 由于交互是双向的,第一用户应用可或者生成由第二应用消费的内容,或者可以消费由第二应用生成的内容。第一情景的示例是文字处理应用(例如,Microsoft Word 、Corel WordPerfect 等),其生成将由打印机设备打印或作为打印作业提交给在线打印服务提供商的文档。在该示例中,第二应用充当打印机设备的虚拟化或到打印服务提供商的前端/接口。第二情景的示例是使用由网络摄影机或其它摄像设备产生的音频/视频内容流的在线视频会议或聊天程序(例如,Skype > Windows Live Messenger、Yahoo! Messenger等)。在该示例中,第二应用充当摄像设备的虚拟化。这两种情景都将在下文中更详细地描述。此外,虽然本文所列示例描述了双向交互,但实施例不受此限制。由于管理组件和相关联的API产生用于应用(包括虚拟设备应用)彼此通信的共同框架,实施例支持灵活的范例,其中能够在多个应用和设备之间进行多向通信。例如,在一些实施例中,第一用户应用可充当将发送给第二应用的内容的创建者和从第三应用接收的其它内容的消费者两者,其中在应用之间的每对交互由OS的管理组件来调解。本文所述实施例允许管理组件调解两个应用之间的交互,并且为应用彼此交互提供更大的灵活性。这种增加的灵活性可使用作为示例的打印功能来示出。传统上,文字处理应用为文档创建打印布局,然后与打印机设备情境交互以便与该设备直接协商文档的输出格式。然后设备情境将打印布局传送给打印子系统,打印子系统在打印机上打印文档。因此,在输出打印布局中文档的输送由应用经由设备情境直接对打印机设备进行。给定设备情境和设备驱动程序之间的传统结合,这导致特定的命令集以打印机理解的某页面定义语言(例如,PostScript或PCL)发送给打印机。这些命令被连接的打印机硬件直接转化为动作。本文所述实施例与这种传统的情景的不同在于,管理组件充当源应用(例如,文字处理应用)和虚拟化打印概念(使用打印情景作为示例)的应用之间的中介。代替直接与打印机设备交互,源应用与中间管理组件交互,中间管理组件然后代表源应用与虚拟化的应用进行交互。因此,源应用可以在与用于打印机设备的特定设备驱动程序之间没有任何直接交互的情况下操作。由于管理组件是源应用和虚拟化应用之间的中介,在这种交换中,相比基于传统打印机情境的模型,源应用可具备关于由打印组件支持的特征的一定程度上更有限的信息集。例如,所提供的信息可局限于诸如目标输出的大小(例如,信纸大小纸张)、其取向、以及目标输出的分辨率的信息。这些能力可由管理组件决定,如下文进一步描述的。因此,实施例使得能够从由应用直接命令和控制设备的传统模型转变为操作的更封装的表示(encapsulated representation)。在示例打印情景中,这导致采用诸如OpenXPS或Adobe 便携文件格式(PDF)的更高级文档交换格式的打印内容的交换,而不是关于打印机应如何操纵硬件以形成打印输出的离散指令的交换。在一些实施例中,管理组件使虚拟化应用能够获得其参与某些数据交换情景的能力。例如,用于打印的虚拟化应用能够通知用于打印的管理组件其准备好作为目标用于打印功能。可将各种模型用于配准(register)虚拟化应用与管理组件,以便在管理的数据交换中充当目标应用。 此外,通过将用于操作的所选目标移出源应用并移入管理组件,更大的灵活性被引入整个系统中以适应设备或服务的新创新或新能力。例如,当管理组件为OS的一部分时,可随时间推移而通过更新引入用于支持不同类型的虚拟化应用的新形态,而不需要更改源应用。这不同于传统的设备驱动程序模型,其中通过修改源应用来添加用于特定新形态的支持而支持新形态。此外,管理组件作为中介的使用在所得用户体验中提供了更大的灵活性。例如,在一些实施例中,管理组件可询问打印机设备(例如,通过与人格化打印机设备的虚拟应用交互)以确定其能力和可用打印选项。此外,管理组件可呈现公共对话框,以使用户能够选择打印选项(例如,纸张大小、页码、多面、调色板等)并减少该任务的文字处理应用。相似地,管理组件也可提供用户界面以允许用户预览待打印的文档,并且也减少该任务的文字处理应用。在其它实施例中,管理组件可将用户界面委托给虚拟化应用来负责。这为虚拟化过程提供了明显的益处,因为不再受设备驱动程序抽象的传统约束的限制。通常,实施例操作来从文字处理应用抽象出打印功能和用户体验(或抽象出其它与设备有关的交互),并且将格式协商功能与内容流分开。这样,实施例可允许呈现与打印(或其它类型的应用与设备的交互)有关的更丰富的用户体验。此外,本文所述实施例有利于使用充当在线服务提供商的前端和/或接口的应用。同样使用打印作为示例,文字处理应用的用户可选择针对打印服务提供商的应用作为打印目标。从用户的角度来看,用户选择打印到目标,相反,管理组件启动虚拟化的应用以便完成打印体验。在一些情况下,该虚拟化应用可呈现相比物理打印机设备不同的用户体验。例如,可要求用户提供某些形式的识别或证明以管理支付或其它审计。同样,打印服务处可用的功能的类型可以不同于可从传统打印设备得到的那些类型。一旦收集到合适的信息,管理组件可将文档作为打印作业请求的一部分提交给打印服务提供商,而不是将文档发送至打印设备以打印。用户可接着前进到打印服务提供商的商店以挑选输出打印的文档、出版的书籍、小册子、海报或事实上任何其它格式的出版物。这样,实施例允许这样的服务提供商有效地人格化打印设备,以使得用户能够更容易地利用其服务,而不需要创建设备驱动程序的开销。此外,由于管理组件和API提供统一的用户体验以允许用户应用(例如,文字处理应用)与设备(例如,打印机)或在线服务提供商(例如,在线打印店)交互,用户应用开发者不再必须编写其应用以支持不同类型的设备或各种在线服务提供商接口。管理组件和统一的API从用户应用提取出该功能,形成通用的、可能功能更丰富的用户体验。在一些实施例中,管理组件也通过虚拟化应用而使得更丰富的生态系统能支持类似设备的行为。例如,在传统的设备驱动程序模型中,设备驱动程序的安装视设备的存在情况而定。设备存在情况可取决于经由其上操作管理组件的许多公共外设互连总线(例如,PCI、I2C、USB等)之一直接到主机计算机的物理连接。此外,设备存在情况也可取决于设备在网络上的存在情况。在该传统模型中,设备存在情况通常通过本领域的技术人员可认识的许多可能的网络设备发现协议之一来确定。这种传统体验不同于根据本文所述实施例的虚拟化的应用。在不需要物理设备硬件的情况下,如在打印服务的示例中那样,可通过安装虚拟化应用而有利于功能的发现。该 应用可直接从服务提供商或从某些形式的应用市场获得。在一些实施例中,通过市场环境可得的应用寿命管理工具通过更简单的自动更新程序、更灵活的编程环境等而为应用开发者提供了更大的灵活性。这些寿命管理工具使得比传统设备驱动程序模型更容易提供特定情景。示例性的环境
图2描绘了实施例在其中操作的示例环境200。如图所示,环境200的各种设备经由一个或多个网络202彼此通信,网络202可包括允许这种通信的任何类型的网络。例如,网络202可包括诸如因特网的公共网络、诸如机构和/或个人内联网的专用网络、或公共网络和专用网络的一些组合。网络202还可包括任何类型的有线和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、Wi-Fi 、WiMax 、以及移动通信网络(例如,3G、4G等)。网络202可利用通信协议,包括基于分组的协议和/或基于数据报的协议,例如,互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其它类型的协议。此外,网络202还可包括有利于网络通信和/或形成用于网络的硬件基础的多个设备,例如,交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。环境200还包括与(一个或多个)用户相关联的一个或多个客户端设备204。简而言之,(一个或多个)客户端设备204可包括用户可用来通过网络202发送和接收信息的任何类型的计算设备。例如,(一个或多个)客户端设备204可包括但不限于台式计算机、膝上型计算机、平板计算机、佩戴式计算机、媒体播放器、汽车用计算机、移动计算设备、智能手机、个人数据助理(PDA)、游戏控制台/平台、移动游戏设备、机顶盒等。(一个或多个)客户端设备204通常包括使用户能通过网络和/或因特网发送和接收信息的一个或多个应用,包括但不限于网络浏览器、电子邮件客户端应用、聊天或即时通讯(IM)客户端、以及其它应用。(一个或多个)客户端设备204还可包括用于文字处理、会计、准备演示、多媒体处理(例如,用于处理视频、音频、图像、图形等)、游戏、社交网络、聊天/即时通讯(頂)的一个或多个应用,或其它类型的应用。(一个或多个)客户端设备204可运行OS,其包括用于调节双向应用间交互的调解和/或管理组件,如本文进一步描述的。
如图2所示,环境200还可包括一个或多个联网外围设备206。这样的设备可通过(一个或多个)网络202通信到诸如(一个或多个)客户端设备204和/或(一个或多个)远程服务器设备208的其它设备以提供包括但不限于打印、多媒体显示、通信等的功能。如本文进一步描述的,这样的(一个或多个)联网外围设备206可提供为设备的虚拟化的应用。这样的应用可访问管理API以便能够与在客户端设备204上运行的应用进行双向交互。环境200还可包括一个或多个远程服务器设备208。在一些实施例中,(一个或多个)远程服务器设备208可包括提供在线服务、贸易等的(一个或多个)服务器设备。利用本文所述实施例,远程服务器设备可提供应用形式的接口,该应用参与与在客户端设备上运行的应用的双向应用到应用通信,以允许用户利用在线服务。例如,远程服务器设备206可由打印服务提供商管理以便打印文档、制作广告/营销资料、出版手稿等。这样的打印服务提供商可使用访问管理API以便能够与在客户端设备204上运行的文字处理应用进行双向交互的应用。这样,运行文字处理应用的用户可从 应用选择“打印”选项,并且将文档作为打印作业经由作为客户端设备的OS的一部分运行的(一个或多个)管理组件发送给打印服务提供商。因此,实施例允许打印服务提供商便利地为用户提供其服务,方便的程度仿佛打印服务提供商是打印设备一样。(一个或多个)服务器设备208也可代表应用市场服务器,该服务器可有利于用户发现、安装和/或管理应用。在一些实施例中,这样的市场服务器有利于传播虚拟化应用以支持物理硬件设备以及用于提供在线服务、电子商务服务等的远程服务器应用。环境200还可包括一个或多个本地外围设备210,其经由诸如PCI、I2C、USB等的计算机总线或通过其它连接模型直接连接到(一个或多个)客户端设备204。这样的(一个或多个)本地外围设备210可提供包括但不限于打印、多媒体显示、通信等的功能。如本文进一步描述的,这样的(一个或多个)本地外围设备210可提供为设备的虚拟化的应用。这样的应用可访问管理API以便能够与在一个或多个客户端设备204上运行的应用进行双向交互。虽然未明确描绘,但环境200还可包括一个或多个数据库或其它存储设备,其被配置成存储与本文所述各种操作有关的数据。这样的存储设备可并入所描绘的设备中的一个或多个内,或者可以是与设备中的一个或多个分开但通信的外部存储设备。存储的数据还可包括关于(一个或多个)客户端设备204、( 一个或多个)联网外围设备206、( 一个或多个)远程服务器设备208、和/或(一个或多个)本地外围设备210的操作的信息。通常,图2中描绘的一个或多个设备中的每一个可包括布置在群集、服务器群或其它组中以共享工作量的多个计算设备。这样的设备组可以是负荷平衡的或以其它方式被管理以提供更有效的操作。此外,虽然环境200的各种计算设备被描述为客户端或服务器,但每个设备可以任一种能力操作以进行与各个实施例有关的操作。因此,作为客户端或服务器的设备的描述被提供来用于进行示例性说明,而不限制可由该设备进行的活动的范围。示例性计算设备架构
图3描绘了用于图2所描绘的各种设备的示例计算机系统架构的框图。如图所示,计算设备300包括处理单元302。处理单元302可包括一个或多个处理单元(例如,处理器),并且可实现为硬件、软件或它们的某种组合。如本文所用,处理器是指硬件组件。处理单元302可包括用任何合适的编程语言编写以执行本文所述各种功能的计算机可执行、处理器可执行、和/或机器可执行指令。在一些实施例中,处理单元302还可包括一个或多个图形处理单元(GPU)。计算设备300还包括系统存储器304,其可包括易失性存储器,例如,随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。系统存储器304还可包括非易失性存储器,例如,只读存储器(ROM)、闪存等。系统存储器304还可包括高速缓冲存储器。如图所示,系统存储器304包括一个或多个OS 306,例如,WindoWS 、Linux 、iOS 等。如下文进一步描述的,(一个或多个)OS 306还可包括一个或多个管理组件308,其操作来管理和/或调解应用和/或设备之间的双向交互。系统存储器304还可包括一个或多个可执行组件310,其可包括可由(一个或多个)处理单元302加载和执行的程序、应用和/或过程。这些可包括用于文字处理、会计、准备演示、多媒体处理(例如,用于处理视频、音频、图像、图形等)、游戏、社交网络、聊天/即时通讯(頂)的(一个或多个)应用312或其它类型应用。可执行组件310还可包括其·它组件314。系统存储器304中的各种组件、应用、(一个或多个)OS可使用组件数据316作为存储区以存储与它们的各种功能有关的数据。如图3所示,计算设备300还可包括可移动存储320和/或不可移动存储322,包括但不限于磁盘存储、光盘存储、磁带存储等。磁盘驱动器和相关联的计算机可读介质可提供对计算机可读指令、数据结构、程序模块和用于操作计算设备300的其它数据的非易失性存储。通常,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块和其它数据的信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、可擦除可编程只读存储器(EEPROM)、SRAM、DRAM、闪存或其它存储器技术、致密盘只读存储器(CD-ROM)、数字多用盘(DVD)或其它光学存储、磁盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储信息以供计算设备访问的任何其它非传输介质。相比之下,通信介质可具体化计算机可读指令、数据结构、程序模块或在已调制数据信号中的其它数据,例如载波或其它传输机制。如本文所定义的,计算机存储介质不包括通信介质。计算设备300可包括(一个或多个)输入设备324,包括但不限于键盘、鼠标、笔、语音输入设备、触摸输入设备、游戏控制器等。计算设备300还可包括(一个或多个)输出设备326包括但不限于显示器、打印机、音频扬声器、触觉输出接口等。计算设备300还可包括允许计算设备300与其它计算设备330通信的(一个或多个)通信连接328,这些其它计算设备包括(一个或多个)客户端设备204、(一个或多个)远程服务器设备208、数据库、(一个或多个)联网外围设备206、或通过(一个或多个)网络202可访问的其它计算设备。(一个或多个)通信连接328可包括网络接口控制器(NIC)、网络适配器、收发机等。(一个或多个)通信连接328也可允许与一个或多个外围设备332通信,这些外围设备与计算设备300物理上分开但经由(一个或多个)网络202或经由串行、并行、Universal Serial Bus (USB)、High Definition Multimedia Interface (HDMI)、视听(AV)或其它类型连接相连。这样的外围设备可包括(一个或多个)本地外围设备210且包括诸如打印机、显示器、外部存储设备等的设备。示例性操作
图4、6和8描绘了用于调解应用和/或设备之间的交互的(一个或多个)管理组件的示例配置。这些图中所示要素表示可在硬件、软件或它们的组合中实现的组件、模块、过程、对象和/或应用。所示要素的布置旨在用于举例说明,而不对要素的操作、控制流或特定位置的任何次序进行限制。因此,所示要素中的一个或多个可以是相同设备或不同设备的组件。此外,虽然附图描绘了双向箭头,但这些箭头旨在图示各种要素之间的通信,并且这样的通信在各种情况下可以是单向和/或双向的。图4是用于调解应用之间的双向交互的示例配置的示意图。如图4所示,OS 306包括一个或多个管理组件308,其用于调解第一应用402和第二应用406之间的交互。在 一些实施例中,第一应用402可以是诸如第一设备404的物理设备的虚拟化。这样,第一应用402可以结合(一个或多个)管理组件308和第二应用406有效地人格化第一设备404。类似地,在一些实施例中,第二应用406可以是诸如第二设备408的物理设备的虚拟化,其有效地人格化第二设备408。( 一个或多个)管理组件308调解第一应用402和第二应用406之间的交互,以使得应用之间的通信通过(一个或多个)管理组件308且由其管理。在一些实施例中,第一应用402和/或第二应用406可以是结合到外部应用服务器的设备行为的虚拟化,而不是物理设备。虽然第一应用402和/或第二应用406可以是在与OS 306相同的设备(例如,客户端设备)上执行的用户应用,但实施例不受此限制。事实上支持图4的要素的任何布置,使得在特定情景迫切需要的情况下各种要素可在不同设备或相同设备上执行。此外,一些实施例支持管理API,其暴露诸如功能、方法、过程、接口、变量等的功能性。第一应用402和/或第二应用406可利用管理API的功能来与(一个或多个)管理组件308通信。在一些实施例中,(一个或多个)管理组件308可通过公共设备对话框提供丰富的用户体验,用户可通过该对话框在选项中选择以与特定设备交互。这些选项可取决于(一个或多个)管理组件308,管理组件308通过其相关联的虚拟化应用询问设备,以确定设备能力和/或该设备所需的信息。在备选实施例中,(一个或多个)管理组件308可能造成虚拟化设备应用的用户体验被呈现给用户,以便允许用户配置和完成设备所需的一个或多个选项。这样的实施例参照图6-9更详细地描述。图5A、5B、5C、7A、7B、9A和9B描绘了示出根据各种实施例的示例过程的流程图。这些过程的操作在各个框中示出并结合这些框概述。过程示出为逻辑流程图,其中每个操作可表示能在硬件、软件或它们的组合中实现的一组操作。在软件的背景中,操作表示存储在一个或多个计算机存储介质上的计算机可执行指令,这些指令在由一个或多个处理器执行时使该一个或多个处理器能够执行所引述的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。操作的描述次序并非意图被理解为限制,并且任何数量的所描述的操作可以任何次序组合、分成子操作和/或并行进行以实现过程。根据各种实施例的过程可包括在逻辑流程图中描绘的操作中的一些或全部。图5A描绘了用于调解应用之间的双向交互的示例性过程500。在一些实施例中,过程500作为(一个或多个)管理组件308的部分而执行。如图4所示,应用中的一个或两个可以是物理设备(例如,诸如打印机、摄像机等的外围设备)的虚拟化或用于在线服务(例如,打印服务)的前端。在框502中,接收指示选择第二应用以与第一应用交互的指示。在一些实施例中,第一应用可以是用户应用(例如,文字处理应用、视频会议应用等),并且第二应用可以是诸如打印机或网络摄影机的目标设备的虚拟化,或者到用户希望第一应用与之交互的诸如打印服务提供商的在线服务的前端。根据所支持的通信协议,指示可作为通信包的部分被接收、从第一应用传递到管理组件。在一些实施例中,第二应用的指示可由用户在第一应用或(一个或多个)管理组件308的对话框内进行的虚拟化设备和/或服务的选择来触发,以便或者消费由第一应用生成的数据,或者生成将由第一应用消费的数据。应当理解,一些实施例可包括虚拟化的应用与管理组件的配准。这种配准使得第 一应用的用户能够通过信息确定第二应用。例如,将第二应用与管理组件配准可以使管理组件或第一应用能够为用户呈现用于与第一应用交互的可能目标的列表。然后用户可选择用于交互的特定第二应用。配准和虚拟化的应用寿命管理的其它方面参照图5C更详细地描述。在框504中,可以实例化用于调解第一和第二应用之间的交互的管理对象。在一些实施例中,管理对象可以是作为一类实现的管理组件的执行实例,并且管理对象的特定实例被创建以调解在第一应用和第二应用之间的特别请求的交互。由于管理对象被实例化以调解与特定应用(例如,第二应用)之间的交互,管理对象可描述为结合到第二应用。在一些实施例中,只要第一应用与第二应用在交互,管理对象的特定实例就存在。在一些实施例中,特定实例可高速缓存或以其它方式保存并再次使用以处理第一和第二应用之间的后续交互,和/或另一应用和第二应用之间的后续交互。在一些实施例中,管理对象可以是特定类别的第二应用(例如,作为诸如打印机设备的特定类型设备的虚拟化的应用)通有的。在框506中,管理对象可询问第二应用以确定其能力。例如,在第二应用充当打印机设备的虚拟化时,管理对象可询问以确定打印能力(例如,双面打印、调色板可用性、横向布局与纵向布局、页编号、水印等)。在框508中,可基于在框506中确定的第二应用的能力为在第一和第二应用之间的交互生成一个或多个选项。在框510中,可由管理对象为用户提供体验。这种体验可使用户能够从在框510中确定的一个或多个选项中进行选择。在一些实施例中,所呈现的体验可以是对特定类别的第二应用(例如,作为打印机设备的虚拟化的那些应用)通有的共同体验。在其它实施例中,体验可特定于特定第二应用及其能力。下文参照图5B更详细地描述体验的提供。在框512中,可以基于由用户通过在框510处提供的体验而选择的那些选项来启动第一和第二应用之间的双向交互。在一些实施例中,交互可在管理对象的一个或多个附加步骤(未示出)之后启动,该附加步骤为第一和/或第二应用提供用户选择的选项。这种提供可以使第一和/或第二应用能够基于由用户选择的那些选项而生成特定数据和/或内容。例如,在打印的情景中,用户的打印选项选择可提供至第一应用(例如,文字处理应用),第一应用可以接着回流(reflow)并基于选项生成待打印的几页文档的形式化描述。参照图6、7A和7B更详细地描述该示例。图5B描绘了针对一个或多个实施例的用于提供在应用之间的双向交互的情境中的用户体验的示例性过程530。在一些实施例中,提供用户体验可以是用于调解在应用之间的双向交互的过程500的一部分,并且可包括提供对话框,如参照图5A的步骤510所描述的。在步骤532中,对是否向用户提供共同体验(例如,公共对话框)或是否提供由第二应用生成且源自第二应用的体验做出决策,后一体验表示物理设备的虚拟化或用于在线服务提供商的前端。在一些实施例中,这种确定可基于由第二应用在与管理组件配准时(如参照图5C所描述的)提供的信息。例如,在配准期间,第二应用可为管理组件规定管理组件将作为其对第一和第二应用之间的交互的调解的一部分来提供公共对话框。备选地,第二应用可规定管理组件将提供特定于第二应用和/或由第二应用生成的对话框,并且该对话框包括特定于第二应用的选项和/或要求。·
在备选实施例中,管理组件可自动地确定是否采用公共对话框或使用由第二应用提供的对话框。在某些情况下,管理组件可决定始终使用公共对话框来与第二应用交互。在其它情况下,管理组件可确定始终使用由虚拟化应用提供的对话框。此外,在一些情况下,管理组件可根据正完成的双向通信的特定情境决定要显示的对话框。在用于完成双向打印通信的一个非限制性示例中,管理组件可确定所有虚拟化的打印机设备可使用公共对话框,同时所有虚拟化的打印机服务可呈现其自己的用户体验。如果决定提供至少部分地特定于第二应用或为其定制的体验,则过程530进行到框534,其中管理组件促使由第二应用生成的对话框被呈现。在这种情况下,管理组件呈现由第二应用提供的体验,并且因此充当协调在第一和第二应用之间的配置信息移动的中介。应当理解,可以为管理组件采用各种模型以促使由第二应用呈现用户体验。在一个非限制性示例中,管理组件可提供其中第二应用能够呈现其用户体验的托管模型。在另一个非限制性示例中,管理组件可从第二应用接收用户体验的说明性描述并完全代表第二应用呈现用户体验。应该指出的是,在一些实施例中,这种情景可允许管理组件具有较不复杂的实现,假设管理组件充当呈现由第二应用生成的用户体验的管道,而不是管理对话框等的特定能力。备选地,如果决定提供共同体验,则过程530进行到框536,其中管理组件生成用于共同体验的对话框。在一些实施例中,用于共同体验的对话框可以是包括第二应用的一类应用共同的。例如,当第二应用为打印机设备的虚拟化时,公共对话框可以是用于一类打印机设备的虚拟化应用共同的。这样的类别可包括在该类中的所有设备(例如,所有打印机设备)、或者某些子集,例如具有特定制造商的设备、采用特定技术的设备(例如,激光打印机或喷墨打印机)、支持特定功能的设备(例如,调色板、黑白、多面打印、特定打印分辨率等)、或其它类别。应当理解,在一些实施例中,公共对话框模型可视为其中管理组件使得能够为处理一类熟知的设备而呈现第二应用的用户体验的模型的专门化。在这样的实施例中,提供公共对话框可通过安装另一虚拟化应用而实现,该应用提供用于一类熟知的设备的共同体验。例如,用于双向打印体验的管理组件可被配置成显示来自第二应用的体验。在需要公共类别的体验的情况中,例如为了提供用于该类别所有打印机设备的功能,管理组件可自动地选择和使用管理组件直接已知用于该目的的预安装的应用。这样,管理组件仍然能够代表该类熟知的设备提供共同体验,同时保持用于呈现所有用户体验的公共模型。在框538中,为用户提供(例如,显示)了对话框,并且将由用户通过对话框提供的信息用于进一步处理,如参照图5A所描述的。虽然图5B未描绘,但在一些实施例中,管理组件可为用户提供体验,该体验是共同体验和特定于第二设备的体验的组合。例如,管理组件可提供用于特定类别设备的公共对话框以及更特定于第二应用的第二对话框。该第二对话框可以是伴随对话框,其显示用于与第二应用交互的附加选项和/或收集第二应用为满足用户请求而需要的信息。下文将更详细地描述包括伴随对话框的这样的实施例。此外,在一些实施例中,管理组件可询问第二应用以确定任何第二应用特别需要的信息。例如,当第二应用为用于在线服务提供商(例如,电子商务)的前端时,所需信息可包括用户作为服务提供商的客户的识别和/或支付信息,例如,姓名、地址、电话号码、电 子邮箱地址、信用卡号、递送/取件信息、用户的包装偏好等。在一些实施例中,隐私考量可使用户能够在共享任何个人、隐私或敏感信息之前决定采用信息共享政策,或者决定不采用数据共享政策以防止共享任何此类信息。图5C描绘了针对一个或多个实施例的用于应用寿命管理的示例性过程560。这样的寿命管理用于一个或多个应用,包括本文描述为第一或第二应用的应用,其提供物理设备的虚拟化或用于在线服务的前端。图5C所示操作可由(一个或多个)管理组件或备选地由(一个或多个)管理组件和通常设计用于支持应用的寿命管理的其它系统组件来执行。在步骤562中,过程560发现将与管理组件配准的一个或多个应用,并且使其可用于参与和源应用的双向交互。在一些实施例中,这一发现过程是由管理组件启动的主动过程,该管理组件为可用于与管理组件配准的应用发送通信查询。在一些实施例中,发现过程是被动的,因为管理组件收听正发送请求配准的通信的应用。在步骤564中,一个或多个发现或检测到的应用在管理组件处进行配准。在一些实施例中,管理组件使虚拟化应用能够获得其参与和源应用的某些数据交换情景的能力。例如,用于打印的虚拟化应用能够通知用于打印的管理组件其可用作目标用于打印功能。可将各种模型用于配准虚拟化应用与管理组件,以便在管理的数据交换中充当目标应用。在一些实施例中,虚拟化应用的配准可包括向管理组件通信虚拟化的应用和/或其所虚拟化的物理设备或服务的各种能力和/或要求。在步骤566中,过程支持(一个或多个)配准的应用的使用。这种使用通常如本文别处参照图5-9所描述的那样进行。在步骤568中,可以更新一个或多个配准的应用。这样的更新允许将应用的新的和/或不同的功能传递给管理组件,以使得管理组件能在提供给用户的体验(例如对话框)中包括新的选项和/或要求。在操作570中,可移除一个或多个配准的应用和/或将其从管理组件取消配准,以使得它们不再可用于参与由管理组件调解的双向交互。图6是用于调解应用之间的双向交互的示例配置的图。图6描绘了与图4的要素类似的要素,并且图4的描述大体上适用于图6。然而,图6稍微不同于图4,并且图6示出了第一应用602正在生成将由第二应用604处理和/或消费的数据和/或内容的实施例。这样的情况可适用于第一应用602为文字处理应用且生成一个或多个待打印文档的情形。在这样的实施例中,第二应用604可以是诸如第二设备606的物理打印设备的虚拟化,或者是用于诸如打印服务提供商的在线服务提供商608的前端/接口。虽然图6、7A和7B的描述采用打印功能作为示例,但实施例不限于此。实施例支持用户应用生成将由表示设备或服务提供商的第二应用消费的内容的其它情景。例如,该情景可支持生成多媒体内容的第一应用和消费多媒体内容以用于处理(例如,其中服务提供商608为视频后期完成和/或编辑服务)、显示(例如,其中第二设备606为视频监视器、电视机、录像设备等)或其它目的的第二应用。在另一示例情景中,第一应用可以是绘图程序,其生成将由导航设备消费的路标点、路线、和/或其它地理或位置信息。作为另一示例,第一应用可以是自动化程序,其生成一组指令以用于管理家庭、办公室或其它场景中的各种电子设备。这样,实施例实际上支持任何情景,在这些情景中,可以将交互描述为在源应用和虚拟化设备之间的特定格式数据·的交换,从而消除直接编程到设备的必要性。图7A和7B描绘了示例性过程700,其用于根据其中第一应用生成将由第二应用消费的数据和/或内容的实施例调解两个应用之间的双向交互。在一些实施例中,过程700作为(一个或多个)管理组件308的部分而执行。在框702中,选择可以被接收,该选择指示第二应用处理和/或消费由第一应用生成的内容。在一些实施例中,由第一应用的用户选择第二应用,并且通过使用控件、对话框或管理组件的其它用户界面要素而制作第二应用。例如,在与打印功能有关的一些实施例中,第一应用可以是文字处理、图像编辑或其它文档处理用户应用。用户可打开打印菜单或按下打印按钮以促使管理组件308呈现用户体验,用户可根据该用户体验经由选项列表选择第二应用,针对打印或处理文档的目标。这种选择可触发到OS和/或管理组件的通信以指示用户对打印目标的选择。在框704中,管理对象被实例化以便调解第一和第二应用之间的交互,如参照图5A所描述的。在一些实施例中,第二应用是可处理、消费或以其它方式使用第一应用生成的内容的目标设备的虚拟化。例如,第二应用可以是用于打印由文字处理应用生成的文档的打印设备、或用于显示由第一应用生成或从其流化的多媒体内容的显示设备、监视器、电视机的虚拟化。在其它实施例中,第二应用为用于诸如企业或其它实体的在线服务提供商的前端或接口,这些实体可通过以某种方式处理由第一应用生成的内容而提供服务。例如,这样的在线服务提供商可以是出版公司、打印服务提供商、图像处理公司、音频/视频处理公司或其他实体。在框706中,管理对象和/或管理组件询问第二应用以确定其能力和/或其要求。能力可包括限制、选项或与第二应用处理或消费第一应用生成的内容的能力有关的其它信息。例如,当第二应用虚拟化打印设备时,所确定的能力可包括打印设备的打印能力(例如,调色板的可用性、双面打印、纸张类型、输出尺寸、放大倍率、横向与纵向布局、页编号、水印等)。作为另一示例,当第二应用虚拟化显示设备或视频处理设备时,所确定的能力可包括支持的音频/视频格式、显示尺寸等。在一些实施例中,如上文参照图5B所描述的,可进一步询问第二应用以确定任何特别要求的第二应用的信息。
在框708中,基于所确定的第二应用的能力和/或要求来确定用于处理内容的一个或多个选项。在框710中,这些选项可作为对话框的部分呈现给用户。用户可采用对话框来选择一个或多个选项以用于处理内容和/或提供第二应用需要的任何信息。在一些实施例中,对话框可以是所有类型第二应用共同的。在其它实施例中,对话框可以是跨一种或多种特定类型的第二应用共同的(例如,虚拟化打印设备的应用通有的)。对话框用针对第二设备的能力和/或要求的选项来填充。如参照图5B所描述,对话框可以是用户体验的一部分,该用户体验是或者由管理组件生成的共同用户体验或者更针对第二应用且从第二应用生成的体验。在一些实施例中,可在框710中将第二对话框进一步呈现给用户。该第二对话框可为用户呈现用于处理内容的第二组选项。在一些实施例中,该第二组选项可特定于第二应用并可在框706中作为询问的一部分或作为在管理组件或对象和第二应用之间的单独通信的一部分从第二应用接收。 在第二应用虚拟化设备的实施例中,该第二组选项可表示除了对于该类设备共同的那些能力之外的设备的特别能力。例如,打印机设备可具有许多打印机可用的通常能力和/或选项,但可具有用于该打印机型号和/或制造商的附加能力,例如,更清晰图像的打印机、可使用更生动的调色板,等等。第二对话框(例如,伴随对话框)使特定设备制造商能够在第二对话框中包括针对设备的选项以及(可选地)针对该设备型号和/或制造商的品牌、营销和更多信息,以便创建特定于该设备的用户体验。这样的伴随对话框也可特别地有用于第二应用表示在线服务提供商或电子商务(例如,打印店)的情况。在这种情况下,伴随对话框可被配置成收集客户、支付和服务提供商为满足用户需求而需要的任何其它信息(例如,上述所需信息)。伴随对话框也可显示针对服务提供商的品牌、营销、联系人信息等。在一些实施例中,上述对话框从管理组件或在OS内运行的对象显示,而不是从第一应用显示。因此,本文所述实施例使得第一应用不必提供这种功能。通过从管理组件而不是应用提供对话框,可为用户提供公共且更富有特征的体验以与设备进行交互。继续到图7B,在框712中,将所选选项提供给第一应用。这些选项可包括由用户通过上述第一和/或第二对话框选择的那些选项,并且还可包括未被用户专门选择的一个或多个默认选项。在框714中,从第一应用接收输出流。该输出流可基于在框712中提供给第一应用的那些选项而为内容生成。例如,在打印情景中,选项可包括由用户选择的那些打印选项。当把那些选项提供给第一应用(例如,文字处理应用)时,应用可基于这些选项回流文档,并且基于选项生成对待打印的每一页的形式化描述。在一些实施例中,形式化描述采用诸如Adobe PostScript 或XML文件规格书(XPS)的文档交换格式,即用于描述页面上的信息的通用抽象格式。因此,在打印示例中,所接收的输出流可以是档案输出流。然而,实施例不限于特定类型的流。所接收的输出流可以是没有预定约束的流,例如,流化的视频流,只要摄像机或其它设备使内容(例如,实时、连续的数据流)流化。流也可以是用已知约束固定的流,例如,包含文本、图形、多媒体或其它类型数据的流化的数据文件。在不脱离本文所述实施例的精神或范围的情况下,可支持用于输出流的各种格式。此外,虽然为清楚起见而将输出流描述为流,但实施例支持包括数据包或包括流类型或文件类型两者的各种类型的对象的输出流。可选地,在框716中,可将输出流的预览呈现给用户。在打印示例中,预览可以是待打印的输出流的打印预览。从在OS内的管理组件提供这样的预览使应用不必提供这样的功能,并且可以允许提供更丰富的共同用户体验。虽然未示出,但预览也可使用户能够更改所选选项以便在将之发送至第二应用之前改变和微调输出流。在其它实施例中,呈现预览的任务留给管理组件,但用于预览的内容的实际生成仍然在应用的控制之下。在框718中,输出流被提供给第二应用以便由第二应用消费、处理或以其它方式使用。在第二应用为设备(例如,打印机)的虚拟化的实施例中,输出流可在框720中经由第二应用假脱机输入或以其它方式提供给设备。在第二应用为在线服务(例如,打印服务)的前端的实施例中,输出流被提交给在线服务(例如,作为将根据用户指定的选项完成的打印作业)。用于将输出流输送至最终目的地的方法不受实施例的限制,并且支持将输出流的内容传输至目的地的任何方法。
在一些实施例中,代替将内容直接发送给设备,经由服务器设备(例如,在打印情景中的打印服务器)来发送内容。此外,在目标设备或服务不直接支持流的内容的一些实施例中,可存在中间步骤,其中流被转化为设备所支持的格式(例如,在打印的情况中的PDL)。在一些情况下,这种转化可以在将流发送到设备或服务器之前进行。在将内容发送给随后将流转送至目标设备的服务器(例如,打印服务器)的实施例中,转化可在流被发送到服务器之后和流被发送到目标设备之前进行。在一些实施例中,转化由设备驱动程序(例如,打印机驱动程序)进行。图8是用于调解应用之间的双向交互的示例配置的示意图。图8描绘了与图4的要素类似的要素,并且图4的描述整体适用于图8。然而,图8稍微不同于图4,并且图8示出了其中第一应用802正在消费由第二应用804生成的数据和/或内容的实施例。这样的情况可适用于第一应用802为视频会议或视频聊天应用的情形,该应用使用由第二设备806 (例如,网络摄影机或其它摄像机)生成且通过充当第二设备806的虚拟化的第二应用804而提供的内容。虽然图8、9A和9B的描述采用摄像机功能作为示例,但实施例不限于此。实施例包括其中用户应用正在消费由虚拟化设备的第二应用生成的内容的其它情景。例如,在一种情景中,健身应用可从健身设备(例如,锻炼器械)、生物统计监视器(例如心律监视器)接收流化数据或其它数据。作为另一示例,第一应用可以是环境、气候或其它监视程序,其从测量温度、压力、湿度、风速、气载污染物的环境传感器接收实时、半实时、和/或历史数据、或其它数据。通常,由第一应用接收和/或发送的数据可为实时流或一个或多个分立文件的流的形式。图9A和9B描绘了示例性过程900,其用于根据其中第一应用消费由第二应用生成的数据的实施例调解两个应用之间的双向交互。在一些实施例中,过程900作为(一个或多个)管理组件308的部分而执行。在框902中,选择可以被接收,该选择指示第二应用提供将由第一应用消费的内容。在一些实施例中,由第一应用的用户选择第二应用,并且通过使用控件、对话框或管理组件的其它用户界面要素而制作第二应用。例如,在与摄像机有关的实施例中,第一应用可以是视频聊天或视频会议应用。用户可打开菜单或用于选择视频数据源以在会议会聊天会话中使用的其它用户界面要素,从而促使管理组件呈现用户体验以用于选择第二应用,第二应用可以是流化视频数据的设备(例如,网络摄影机或其它摄像机)的虚拟化。这种选择可触发到OS和/或管理组件的通信以指示用户对视频源的选择。在框904中,管理对象被实例化以便调解第一和第二应用之间的交互,如参照图5A所描述的。在框906中,管理对象和/或管理组件询问第二应用以便确定其能力和/或其要求以用于提供内容。例如,当第二应用虚拟化摄像设备时,所确定的能力可包括摄像机的视频或音频能力,包括但不限于设置亮度、色调、调色板、支持的视频格式和图像尺寸的能力、产生效果的能力、进行面部识别的能力,等等。在框908中,基于所确定的第二应用的能力和/或要求来确定用于提供内容的一个或多个选项。在框910中,这些选项可作为用户体验(例如,一个或多个对话框)的一部分来呈现。如本文所讨论的,在一些实施例中,对话框可从管理组件呈现。然而,在其它实施例中,对话框可从第二应用(例如,虚拟化应用)呈现。然后用户可采用对话框来选择一个或多个选项以便第二应用提供内容和/或提供第二应用需要的任何信息。如上所述,在一些实施例中,对话框可以是所有类型的第二应用共同的。在其它实施例中,对话框可以是 跨特定类别或类型的第二应用共同的(例如,虚拟化摄像设备的应用通有的)。对话框用与第二设备的能力和/或要求相关联的选项来填充。如参照图5B所描述,对话框可以是用户体验的一部分,该用户体验是或者由管理组件生成的共同用户体验或者更特定于第二应用且从第二应用生成的体验。此外,在一些实施例中,可在框910中将第二对话框进一步呈现给用户。该第二对话框可将特定于特定第二应用和/或其可虚拟化的设备的第二组选项呈现给用户,如上文参照图7A所描述的。继续到图9B,在框912中,将所选选项提供给第二应用。这些选项可包括由用户通过上述(一个或多个)对话框选择的那些选项,并且还可包括未被用户专门选择的一个或多个默认选项。第二应用可接着基于指定的选项生成所需内容。在框914中,从第二应用接收输出流,并且在框916中,将输出流提供给第一应用以由第一应用消费、处理或以其它方式使用。与此前的示例一样,第二应用可以是设备(例如,摄像机)的虚拟化。第二应用也可以是到在线服务(例如,提供安全视频馈送或其它内容的服务)的前端/接口。实施例可采用实际上用于接收输出流的任何方法和/或模型。结论
虽然已经用特定于结构特征和/或方法动作的语言描述了技术,但应当理解,所附权利要求未必局限于所描述的特定特征或动作。相反,特定特征和动作以实现这样的技术的示例性形式而公开。
权利要求
1.一种系统,包括 一个或多个处理器(302);和 管理组件(308),所述管理组件(308)由所述一个或多个处理器来执行且执行包括下列各项的动作 确定第二应用以处理由第一应用生成的内容(702); 确定用于处理所述内容的所述第二应用的一个或多个能力(706); 从所述第一应用接收基于一个或多个选项而为所述内容生成的输出流(714);以及 提供将由所述第二应用消费的所述输出流(718)。
2.根据权利要求I所述的系统,其中,所述第二应用为目标设备¢06)的虚拟化。
3.根据权利要求I所述的系统,其中,所述输出流为待打印(702)的文档,其中所述第二应用为打印机设备¢06)的虚拟化,并且其中消费所述输出流包括在所述打印机设备处打印所述输出流(720)。
4.根据权利要求I所述的系统,其中,所述输出流为待打印(702)的文档,其中所述第二应用为打印服务¢08),并且其中消费所述输出流包括将所述输出流在打印作业请求中提交给所述打印服务(722)。
5.根据权利要求I所述的系统,其中,所述动作还包括在提供将由所述第二应用消费的所述输出流之前呈现所述输出流的预览(716)。
6.根据权利要求I所述的系统,其中,所述动作还包括提供体验以使用户能够从一个或多个可用选项中选择所述一个或多个选项以用于生成所述输出流(510,710),并且其中所述一个或多个可用选项基于所述第二应用的所述一个或多个能力(708)。
7.根据权利要求6所述的系统,其中,所述体验由所述管理组件生成,并且其中所述体验是包括所述第二应用的一类应用共同的(536)。
8.根据权利要求6所述的系统,其中,所述体验由所述第二应用生成且特定于所述第二应用(534)。
9.一种由计算设备(300)实现的方法,所述方法包括 在执行于所述计算设备上的管理应用处,接收对第二应用消费由第一应用生成的内容的指示(702); 在所述管理应用处,询问所述第二应用以基于所述第二应用的一个或多个能力确定用于消费所述内容的第一组选项(706,708); 从所述管理应用提供第一对话框以实现从所述第一组选项中选择(710); 将来自所述管理应用的所选择的选项提供给所述第一应用(712); 在所述管理应用中,从所述第一应用接收根据所选择的选项而为所述内容生成的内容流(714);以及 将来自所述管理应用的所述内容流提供给所述第二应用(718)。
10.一种由计算设备实现的方法,所述方法包括 基于第二应用的选择(502),实例化管理对象以用于调解在第一应用和第二应用之间的交互(504); 从所述管理对象,确定所述第二应用的一个或多个能力(506); 从所述管理对象,提供用于从一组选项中选择的体验以用于所述交互(510),其中,基于所述第二应用的所述一个或多个能力而生成所述一组选项(508);以及 根据所述选择的选项启动所述第一应用和所述第二应用之间的所述交互(512)。
11.一个或多个存储指令的计算机可读存储介质,所述指令在被执行时指示计算设备执行如权利要求9或10所述的方法。
全文摘要
一个或多个管理组件调解应用之间的双向交互。该组件调解诸如文字处理、视频会议或多媒体应用的第一应用和第二应用之间的交互,第二应用为诸如打印机、摄像机或多媒体设备的物理设备的虚拟化。此外,实施例还支持为服务提供商、在线服务等提供接口的第二应用。(一个或多个)管理组件可充当操作系统(OS)的一部分,以允许OS调解交互,并且允许更大的灵活性和更丰富的用户体验,包括呈现用于交互的共同用户体验和/或充当中介以呈现从第二应用生成的体验。实施例还包括统一应用编程接口(API),以允许应用经由OS的(一个或多个)管理组件彼此交互。
文档编号G06F3/12GK102945142SQ20121033588
公开日2013年2月27日 申请日期2012年9月12日 优先权日2011年9月12日
发明者M.G.莫里斯, D.R.戴维斯, F.戈金伊 申请人:微软公司