專利名稱:呈現設備作為應用的制作方法
呈現設備作為應用
背景技術:
從對大多數用戶有利的角度來看,應用與設備的交互是簡單的。例如,當文字處理程序的用戶想要打印文檔時,用戶只需要按下按鈕(或與對話框交互),然后在打印機處取走打印好的紙張。然而,在軟件和硬件級處的場景的背后,該過程可能涉及若干系統服務的復雜集成,導致打印的紙張停留在打印機托盤中。在許·多情況下,這種復雜性產生可抑制應用與設備之間的交互的靈活性的緊密結合。設備通常經由設備驅動程序呈現給計算設備。設備驅動程序是強類型化組件,其使得應用和/或系統服務能夠直接和與驅動程序相關聯的設備交互。典型的設備驅動程序主要負責使主機計算設備和其所附連到的設備之間能夠通信。這種通信可經由與中央處理器(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.戈金伊 申請人:微軟公司