專利名稱::主機不可知集成和互操作系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及主機不可知集成和互操作系統(tǒng)。
背景技術(shù):
:·企業(yè)通常出于不同的目的維護被存儲在不同地方的各種類型的文檔。在許多情況下,根據(jù)各種不同的軟件應(yīng)用和存儲系統(tǒng)來創(chuàng)建和存儲這些文檔。例如,可使用文字處理應(yīng)用、電子表格應(yīng)用、演示應(yīng)用、注釋應(yīng)用、圖形設(shè)計應(yīng)用、攝影應(yīng)用等來生成文檔。在歷史上,對特定類型文檔的有意義的訪問需要本地安裝支持該文檔類型的應(yīng)用,即便僅為了查看文檔也是如此。隨著移動計算和基于web的主機(諸如web郵件服務(wù)器和內(nèi)容服務(wù)器)的廣泛使用,從缺少支持應(yīng)用的本地安裝的計算設(shè)備訪問文檔的需要已經(jīng)變得越來越常見。作為響應(yīng),已經(jīng)做出了通過基于web的主機為所選擇的文檔類型提供支持以便避免支持應(yīng)用的本地安裝的嘗試。通常,這是用兩種方式之一來解決的。第一,某些基于web的主機本機地(natively)支持通過內(nèi)嵌應(yīng)用來查看廣泛使用的文檔類型。內(nèi)嵌應(yīng)用不提供包括文檔編輯在內(nèi)的完全支持。第二,已經(jīng)開發(fā)出被設(shè)計來與基于web的主機集成的外部應(yīng)用。外部應(yīng)用和主機的集成通常需要這兩個程序中的每一個都具有另一個程序的應(yīng)用編程接口的具體知識。為與特定主機集成而設(shè)計的外部應(yīng)用通常需要參與主機所使用的認證方案。而且,因為外部應(yīng)用通常被賦予對主機內(nèi)容的很寬的訪問權(quán),所以通常使用雙向證書交換來建立主機和外部應(yīng)用之間的信任關(guān)系。結(jié)果是,外部應(yīng)用不是可移植的(portable),或者不是對大量主機有用的。對外部應(yīng)用的使用被限于具體主機,而對各種文檔類型的支持被限于為特定主機設(shè)計的可用外部應(yīng)用。本發(fā)明正是對于這些和其它考慮事項而做出的。
發(fā)明內(nèi)容提供以下
發(fā)明內(nèi)容以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本
發(fā)明內(nèi)容并不旨在標識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。在各實施例中,該主機不可知集成和互操作系統(tǒng)包括開放平臺接口和相關(guān)聯(lián)的約定,所述開放平臺接口和相關(guān)聯(lián)的約定定義主機和運行在外部應(yīng)用服務(wù)器上的服務(wù)應(yīng)用的角色和它們之間的直接操作,并允許主機發(fā)現(xiàn)并集成由服務(wù)應(yīng)用所提供的功能。開放平臺接口利用有限數(shù)目的容易實現(xiàn)的語義方法,所述方法允許主機展示并集成使用來自標準用戶代理的服務(wù)應(yīng)用的主機支持的功能來查看、編輯、或以其他方式操縱文檔的能力。該主機不可知集成和互操作系統(tǒng)使用訪問令牌在主機處處理用戶認證,并且使用輕量但是安全的證據(jù)密鑰系統(tǒng)來建立主機和外部應(yīng)用服務(wù)器之間的信任關(guān)系。用戶經(jīng)由用戶代理從客戶端計算設(shè)備訪問主機。該外部應(yīng)用服務(wù)器運行一個或多個基于web的服務(wù)應(yīng)用,所述服務(wù)應(yīng)用使用戶能夠從客戶端計算設(shè)備通過網(wǎng)絡(luò)訪問、查看、編輯以及可選地執(zhí)行針對內(nèi)容(即,文件或文檔)的其他動作,并且執(zhí)行文件夾(即,目錄)管理,而不要求本地安裝與特定文檔類型一同工作所需的適當(dāng)?shù)膽?yīng)用。主機通過發(fā)現(xiàn)過程來了解并集成由該外部應(yīng)用服務(wù)器提供的功能。在完成發(fā)現(xiàn)過程之后,主機的行為基于外部應(yīng)用服務(wù)器的可用性和功能而改變。外部應(yīng)用服務(wù)器使用開放平臺接口來集成主機并與主機通信。通過服務(wù)應(yīng)用,外部應(yīng)用服務(wù)器提供與所選文件類型的文檔一同工作的必要動作和功能。開放平臺接口建立在已良好建立并且對大多數(shù)(即便不是全部)平臺和操作系統(tǒng)常見的基本通信機制之上。開放平臺接口為基本上所有通信所采用的基礎(chǔ)通信機制是一種基本的請求-響應(yīng)協(xié)議。事務(wù)是作為通過為認證而附加的主機生成的訪問令牌對統(tǒng)一資源定位符(URL)的標準HTTP或HTTPS請求而實現(xiàn)的。所有調(diào)用信息均被封包在該請求的URL、頭部、以及主體(在必要時)中。該開放平臺接口客戶端(即,外部應(yīng)用服務(wù)器)所發(fā)送的請求包括由該開放平臺接口用來驗證請求者的身份的證據(jù)頭部。所有回復(fù)信息均被包含在該響應(yīng)的URL、頭部、以及主體(body)(在必要時)中。請求或響應(yīng)的基本格式通常包括用于攜帶通用信息和/或方法專用信息的一個或多個請求頭部以及在需要時用于攜帶數(shù)據(jù)的可選的請求主體。此外,該響應(yīng)返回狀態(tài)代碼,該狀態(tài)代碼指示操作的成功或者指示可能若干個不同錯誤狀態(tài)中的一個。該請求,和與該請求相關(guān)聯(lián)的任何所需的和可選的參數(shù)一起,被寄送到主機或外部應(yīng)用服務(wù)器的接入點(entrypoint)或端點(endpoint)的地址。以下討論描述了開放平臺接口的一個示例性實施例。該示例不是為了以任何方式限制由該開放平臺接口所提供的特征和功能。開放平臺接口所使用的頭部包括標準請求頭部、標準響應(yīng)頭部、以及錯誤響應(yīng)頭部。此外,開放平臺接口包括用于所選方法的專用附加頭部。標準請求頭部、標準響應(yīng)頭部、以及錯誤頭部被用來處理診斷功能以及傳遞非該請求專用的接口級信息(即,通用信息)。錯誤響應(yīng)頭部與該響應(yīng)所返回的狀態(tài)碼結(jié)合使用。狀態(tài)碼提供由開放平臺接口定義的標準值,所述標準值指示請求是否成功,并且如果不成功,標識該請求所遇到的錯誤的類型。取決于請求,主體包含元數(shù)據(jù)或二進制數(shù)據(jù)或為空。調(diào)用者(即,外部應(yīng)用服務(wù)器或服務(wù)應(yīng)用)基于調(diào)用者所作出的請求來解釋響應(yīng)主體中的數(shù)據(jù)。基本數(shù)據(jù)互換或標記格式擔(dān)當(dāng)元數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)傳輸機制。外部應(yīng)用服務(wù)器和主機之間的通信被認為是受信的,因為主機總是代表用戶來發(fā)起事務(wù)。主機不可知接口和互操作性系統(tǒng)采用可選的證據(jù)系統(tǒng),該證據(jù)系統(tǒng)允許主機驗證請求者的身份并添加附加的信任層。證據(jù)系統(tǒng)使用攜帶調(diào)用者的身份的證據(jù)的請求(即,調(diào)用)。為了實現(xiàn)證據(jù)系統(tǒng),主機必須獲得該外部應(yīng)用服務(wù)器專用的密碼密鑰(即,證據(jù)密鑰)。該證據(jù)密鑰為主機提供一種機制,通過這種機制來驗證請求實際上是由該受信外部應(yīng)用服務(wù)器做出的。主機使用它的證據(jù)密鑰副本來證實密碼簽名是使用相應(yīng)的私鑰來生成的。開放平臺接口使用訪問令牌來唯一標識一事務(wù)。而且,訪問令牌為與該事務(wù)相關(guān)的通信提供認證機制,并且消除了外部應(yīng)用服務(wù)器(即,開放平臺接口客戶端)參與主機通常使用的特定認證方案的需要。訪問令牌是對用戶/文檔對來說唯一的令牌,主機端點使用該用戶/文檔對來認證用戶并授權(quán)對該文檔的訪問。在各個實施例中,訪問令牌是用戶標識符、時間戳和文檔標識符中的一個或多個的散列,并用該主機已知的秘密(secret)來加密該訪問令牌。主機發(fā)起的事務(wù)的使用允許主機不可知接口和互操作性系統(tǒng)依賴主機側(cè)認證并避免外部應(yīng)用服務(wù)器本機地認證用戶的需要。換言之,用戶總是在主機上做某個動作(例如,用戶界面動作或姿勢),所述動作指示用戶想要開始以特定方式與文檔交互(例如,編輯、移動查看等)。主機總是有機會同時生成綁定于用戶和文檔、具有相對短的壽命、并且隨后能被主機確認的訪問令牌。開放平臺接口不要求主機使用特定方案來生成訪問令牌,而主機可使用各種已知訪問令牌生成方案或新的方案中的任何一個來用于此目的。除了訪問令牌存在并且可選地與特定對象相關(guān)聯(lián)(即,它可能被綁定到特定用戶和文件)以外,服務(wù)應(yīng)用不需要知道關(guān)于該訪問令牌的任何事情。訪問令牌的實際內(nèi)容對服務(wù)應(yīng)用來說是完全不透明的。服務(wù)應(yīng)用僅包括與涉及相關(guān)聯(lián)事務(wù)的主機通信中的訪問令牌。因為主機不需要使訪問令牌對外部應(yīng)用服務(wù)器可理解(intelligible),所以主機能夠使用任何信息來將訪問令牌綁定到特定用戶和文件,并且確保訪問令牌不是無限期地有效。主機不可知接口和互操作系統(tǒng)所支持的方法由開放平臺接口和相關(guān)聯(lián)的約定來定義。使用被定向到與動詞相關(guān)聯(lián)的URL的HTTP請求來調(diào)用每個方法,并且每個方法包括唯一標識該方法的目標資源的資源標識符,并可選地包括訪問令牌作為請求參數(shù)。外部應(yīng)用服務(wù)器將方法的可用性以功能集列表的形式來公開(advertise)。每個功能集由串來聲明,并承諾實現(xiàn)開放平臺接口所支持的方法集合。進而,主機公開它所支持的功能集。相應(yīng)地,外部應(yīng)用服務(wù)器基于主機的能力來知道是否提供某個功能。更具體而言,如果主機不公開對具體功能的支持,則服務(wù)應(yīng)用抑制需要不受支持的功能的任意特征。功能集的聲明、實現(xiàn)和消費擔(dān)當(dāng)開放平臺接口的主要可擴展性機制。功能集是由描述該接口所支持的方法的一個或多個動詞構(gòu)成的。每個動詞為該接口的特定方法定義主機和外部應(yīng)用服務(wù)器之間的請求和響應(yīng)的格式和內(nèi)容。一般而言,每個動詞的定義描述請求的格式(即,URL結(jié)構(gòu))、請求頭部、所需要的或請求主體可選地包括的任何信息、狀態(tài)碼、錯誤響應(yīng)頭部、響應(yīng)頭部、以及響應(yīng)主體中包括的任何信息。主機不可知集成和互操作系統(tǒng)利用面向所選服務(wù)的體系結(jié)構(gòu)原理和方法,所述方法和原理有助于開放系統(tǒng)接口主機和客戶端所實現(xiàn)的開放平臺接口的各版本間的高等級的跨版本兼容性。主機不可知集成和互操作系統(tǒng)的各實施例遵循“忽略你原本不期望的”以及“對于你原本期望但是沒有得到的數(shù)據(jù)使用默認值”的面向服務(wù)的體系結(jié)構(gòu)原理。具體而言,元數(shù)據(jù)對象注釋是以對響應(yīng)主體而言可接受的方式來構(gòu)造的,以包括接收者沒有識別的對象。換言之,如果響應(yīng)主體包括比接收者原本期望的更多的數(shù)據(jù),則不期望的數(shù)據(jù)被忽略。替代地,如果響應(yīng)主體略去接收者期望的數(shù)據(jù),則為丟失的數(shù)據(jù)使用默認值。而且,開放平臺接口的某些實施例采用“默認值必須帶來可接受的行為”的語義。在此情況下,開放平臺接口將誤配置的、無效的、不可用的、或其他的無法發(fā)揮功能的默認值作為不期望的數(shù)據(jù)來對待并忽略它們。通過參考下面的具體實施方式、所附的權(quán)利要求書和附圖,本發(fā)明的進一步的特征、各方面和益處將變得更好理解,其中各元素不會縮放以更清晰地示出細節(jié),在若干視圖中,相同的附圖標記指示相同的元素,并且其中圖I示出企業(yè)網(wǎng)絡(luò)的框圖,該企業(yè)網(wǎng)絡(luò)采用開放平臺接口的一個實施例。圖2A到2E示出用于使用客戶端計算設(shè)備使用外部應(yīng)用服務(wù)器的功能來訪問主機所存儲的文檔的過程的一個實施例;圖3是可用其實踐本發(fā)明的各實施例的計算設(shè)備的簡化框圖;圖4A和4B是可用來實施本發(fā)明的各實施例的移動計算設(shè)備的簡化框圖;圖5是可在其中實施本發(fā)明的各實施例的分布式計算系統(tǒng)的簡化框圖。具體實施例方式本文描述了并在附圖中示出了主機不可知集成和互操作系統(tǒng)。該主機不可知集成和互操作系統(tǒng)包括開放平臺接口和相關(guān)聯(lián)的約定,所述開放平臺接口和相關(guān)聯(lián)的約定定義主機和運行在外部應(yīng)用服務(wù)器上的服務(wù)應(yīng)用的角色和它們之間的直接操作,并允許主機發(fā)現(xiàn)并集成由服務(wù)應(yīng)用所提供的功能。開放平臺接口利用有限數(shù)目的容易實現(xiàn)的語義方法,所述方法允許主機暴露并集成使用來自標準用戶代理的服務(wù)應(yīng)用的主機支持的功能來查看、編輯、或以其他方式操縱文檔的能力。該主機不可知集成和互操作系統(tǒng)使用訪問令牌在主機處處理用戶認證,并且使用輕量但是安全的證據(jù)密鑰系統(tǒng)來建立主機和外部應(yīng)用服務(wù)器之間的/[目任關(guān)系。圖I不出包括一個或多個主機102和一個或多個外部應(yīng)用服務(wù)器104的不例性企業(yè)網(wǎng)絡(luò)的一個實施例。用戶106從客戶端計算設(shè)備110經(jīng)由用戶代理108來訪問主機102。主機102最一般地是將文檔存儲在文檔存儲系統(tǒng)126中并管理對用戶106的許可的內(nèi)容服務(wù)器。一般而言,主機102運行主機應(yīng)用112,并且主機應(yīng)用112的普通功能是通過主機用戶接口114來處理的。主機應(yīng)用112的普通功能中的至少一些涉及向用戶提供對已存儲的文檔116的訪問,該文檔116被包含在內(nèi)容存儲126中并且旨在使用支持應(yīng)用來被查看和/或編輯。主機102還提供使外部應(yīng)用服務(wù)器104的服務(wù)對用戶106可用的通用平臺。換言之,主機102向外部應(yīng)用服務(wù)器104提供接入點并且提供門戶,用戶106和外部應(yīng)用服務(wù)器104通過所述門戶來交互。共享通信接口定義并指導(dǎo)主機102與外部應(yīng)用服務(wù)器104之間的文檔動作。主機102還實現(xiàn)從外部應(yīng)用服務(wù)器104接收通信的端點120。雖然主機102初始化包括外部應(yīng)用服務(wù)器104的服務(wù)的場景,但主機102不調(diào)用外部應(yīng)用服務(wù)器104。相反,外部應(yīng)用服務(wù)器104展示所支持的功能,以使用回調(diào)來針對所支持的文檔類型進行操作。外部應(yīng)用服務(wù)器104運行一個或多個基于web的服務(wù)應(yīng)用118,該服務(wù)應(yīng)用118使用戶106能夠從客戶端計算設(shè)備110通過網(wǎng)絡(luò)訪問、查看、編輯以及可選地執(zhí)行針對內(nèi)容(即,文件或文檔)的其他動作,并且執(zhí)行文件夾(即,目錄)管理,而不要求本地安裝與特定文檔類型一同工作所需的適當(dāng)?shù)膽?yīng)用。外部應(yīng)用服務(wù)器104的動作和輸出不是調(diào)用外部應(yīng)用服務(wù)器的功能的主機102所專用的。每個服務(wù)應(yīng)用118—般作為外部應(yīng)用服務(wù)器104上的服務(wù)來運行。外部應(yīng)用服務(wù)器104使用開放平臺接口來集成主機102并與主機102通信。通過服務(wù)應(yīng)用118,外部應(yīng)用服務(wù)器104提供與所選文件類型的文檔一同工作的必要動作和功能。處理各種文檔類型的服務(wù)應(yīng)用118的示例包括用于與文字處理文檔、電子表格、筆記和演示一起工作的標準(即,本地安裝的)應(yīng)用的基于web的伙伴。每個服務(wù)應(yīng)用118所提供的動作通常專用于所選文件類型或與文件夾管理有關(guān)。服務(wù)應(yīng)用118所提供的核心動作是查看和編輯文檔。在各實施例中,服務(wù)應(yīng)用118提供一個或多個附加動作,這些動作包括但不限于重新格式化文檔以在移動設(shè)備上查看、創(chuàng)建新文檔、轉(zhuǎn)換文檔、嵌入文檔、以及廣播文檔。主機102是能夠使用用戶代理108(諸如客戶端計算設(shè)備110的web瀏覽器)通過網(wǎng)絡(luò)來訪問的在線服務(wù)器應(yīng)用。外部應(yīng)用服務(wù)器104所提供的功能由主機102來消費,并且使其對用戶106可用。合適的主機系統(tǒng)的示例包括但不限于允許基于web的訪問的郵件系統(tǒng)(例如,MicrosoftExchangeServer)、統(tǒng)一通信系統(tǒng)(例如,IBMLotusSametime、MicrosoftLync和Unison)和內(nèi)容和/或文檔管理系統(tǒng)(例如,IBMLotusQuickr和MicrosoftSharePoint)作為內(nèi)容服務(wù)器,主機102存儲用戶的數(shù)據(jù)(B卩,文檔)并發(fā)起涉及外部應(yīng)用服務(wù)器104查看、編輯或以其他方式操縱用戶的數(shù)據(jù)的場景。在開放操作接口下,主機102按照外部應(yīng)用服務(wù)器104的請求來處理文件系統(tǒng)操作。主機102的其他責(zé)任通常包括在用戶級處理對文檔的訪問控制以及用于外部應(yīng)用服務(wù)器104的許可實施。主機102實現(xiàn)在客戶端計算設(shè)備110上的用戶代理中顯示的服務(wù)應(yīng)用包裝(wrapper>122ο服務(wù)應(yīng)用包裝122是由主機102生成的web頁和/或巾貞(例如,內(nèi)聯(lián)巾貞),所述web頁和/或幀擔(dān)當(dāng)服務(wù)應(yīng)用118的輸出的視口(S卩,基于web的用戶界面)。服務(wù)應(yīng)用包裝122可選地包括內(nèi)應(yīng)用幀124,所述內(nèi)應(yīng)用幀顯示服務(wù)應(yīng)用118的用戶界面頁,同時服務(wù)應(yīng)用包裝122可選地呈現(xiàn)主機色度(chrome)(即,主機提供的外觀和感覺)和導(dǎo)航控制。當(dāng)用戶106為特定文檔選擇動作時,該動作由請求調(diào)用,該請求是為支持該文檔類型的服務(wù)應(yīng)用對服務(wù)應(yīng)用入口URL(entryURL)做出的。該服務(wù)應(yīng)用入口URL指向外部應(yīng)用服務(wù)器104上的服務(wù)應(yīng)用的地址。服務(wù)應(yīng)用入口URL的基礎(chǔ)最典型地是外部應(yīng)用服務(wù)器104的地址。主機102通常通過服務(wù)應(yīng)用包裝122來生成與所選動作相關(guān)聯(lián)的參數(shù)并將所述參數(shù)附加到服務(wù)應(yīng)用入口URL。所述參數(shù)指定任務(wù)(例如,使用電子表格應(yīng)用的內(nèi)嵌編輯)和完成所請求的任務(wù)所需的數(shù)據(jù)。主機102還實現(xiàn)并展示用于從外部應(yīng)用服務(wù)器接收通信的主機端點120。主機端點120是web服務(wù),該web服務(wù)理解使用開放平臺接口所作的請求。開放平臺接口的某些實施例排他性地使用安全傳輸協(xié)議(例如,HTTPS)來進行與主機端點120的通信以保護訪問令牌和該文檔的內(nèi)容。在一個實施例中,主機端點120的URL是通過將主機端點web服務(wù)的位置附加到主機的域名來創(chuàng)建的。盡管人工配置主機102來與外部應(yīng)用服務(wù)器104集成是完全可能而且可接受的,然而開放平臺接口的各實施例提供了自動化的外部應(yīng)用服務(wù)器發(fā)現(xiàn)進程來完成此項任務(wù)。在開始外部應(yīng)用服務(wù)器發(fā)現(xiàn)進程之前,不要求主機102具有關(guān)于外部應(yīng)用服務(wù)器104的可用性或功能的任何知識。為了參與外部應(yīng)用服務(wù)器發(fā)現(xiàn)進程,主機102必須理解開放平臺接口和發(fā)現(xiàn)約定。在完成外部應(yīng)用服務(wù)器發(fā)現(xiàn)進程之后,主機102的行為基于外部應(yīng)用服務(wù)器104的可用性和功能而改變。在發(fā)現(xiàn)過程期間,主機102學(xué)習(xí)外部應(yīng)用服務(wù)器104所支持的文件格式和開放接口協(xié)議方法(即,動詞)。發(fā)現(xiàn)進程開始于主機102發(fā)出發(fā)現(xiàn)請求并且接收發(fā)現(xiàn)響應(yīng)消息,該發(fā)現(xiàn)響應(yīng)消息包含描述該外部應(yīng)用服務(wù)器所支持的功能的發(fā)現(xiàn)元數(shù)據(jù)(即,外部應(yīng)用服務(wù)器的屬性)。發(fā)現(xiàn)元數(shù)據(jù)根據(jù)開放接口協(xié)議的約定來格式化,并且包含由所述約定所指定的信息。在各個實施例中,發(fā)現(xiàn)元數(shù)據(jù)包含諸如外部應(yīng)用的標識符、對外部應(yīng)用的描述、文件擴展名、與該文件擴展名相關(guān)聯(lián)的動作、主機的任何開放接口協(xié)議實現(xiàn)要求(例如,功能集)、負責(zé)處理動作的外部應(yīng)用的位置、和/或與該文件擴展名相關(guān)聯(lián)的文檔的mime類型、以及參與安全方案的公共證據(jù)密鑰的副本等信息。在一個實施例中,支持應(yīng)用的人類和機器可讀標識符(例如,串值(stringvalue)與每一文件類型/動作對相關(guān)聯(lián)。主機102消費發(fā)現(xiàn)元數(shù)據(jù)并將外部應(yīng)用服務(wù)器104的功能作為主機配置的一部分注冊。每一動作由開放接口協(xié)議的約定來定義。主機102基于此時主機102所理解的開放協(xié)議接口的約定來選擇利用或忽略各個動作。在一個實施例中,主機102驗證了在注冊成對的文件類型和動作之前,它支持對動作的要求。如果主機102不支持該動作和/或滿足托管要求,則不注冊成對的文件類型和動作。具體而言,在一些實施例中,主機使用“要求”屬性,其指定用于濾除主機無法支持的動作的開放接口協(xié)議實現(xiàn)要求。換言之,如果主機不識別或不理解“要求”屬性值中列出的全部字段,或選擇不支持開放接口協(xié)議的約定,則主機不注冊(即實現(xiàn))成對的文件類型和動作,并且不向用戶提供該功能。由主機對開放平臺接口和相關(guān)聯(lián)的約定的配置、功能、以及實現(xiàn)等級確定外部應(yīng)用服務(wù)器對用戶106可用的有效功能。如果主機102沒有完全實現(xiàn)開放平臺接口或不滿足外部應(yīng)用服務(wù)器104的某個功能的要求,則該功能對用戶106不可用。更具體而言,如果主機102不公開對具體功能的支持,則外部應(yīng)用服務(wù)器104抑制主機不能支持的任何特征。例如,當(dāng)主機102不能保存文件的已更新副本時,外部應(yīng)用服務(wù)器104不應(yīng)當(dāng)允許用戶106編輯文檔。此外,發(fā)現(xiàn)元數(shù)據(jù)描述了在與每一動作相關(guān)聯(lián)的外部應(yīng)用入口URL中使用的參數(shù)。對于動作,服務(wù)應(yīng)用入口URL參數(shù)由開放接口協(xié)議中的約定來指定。某些參數(shù)是必要的,而其他參數(shù)是可選的。如果主機不理解一個必要的參數(shù),則主機不注冊動作。相反,如果不理解可選的參數(shù),則主機可以選擇注冊動作。在此情形中,與可選參數(shù)相關(guān)聯(lián)的功能被簡單地丟失,但是主機仍然能夠提供具有與主機理解的一樣多的功能的動作。用這種方式來處理動作和參數(shù)的發(fā)現(xiàn)提供了開放平臺接口所享用的穩(wěn)健跨版本兼容性的基礎(chǔ)。即便外部應(yīng)用服務(wù)器的升級提供了主機所不支持或理解的新功能,主機仍繼續(xù)與升級后外部應(yīng)用服務(wù)器一起工作。主機簡單地繼續(xù)提供對它理解的功能的支持,并忽略它不理解的任何功能。開放平臺接口建立在已良好建立并且對大多數(shù)(即便不是全部)平臺和操作系統(tǒng)常見的基礎(chǔ)通信機制之上。開放平臺接口為基本上所有通信所采用的基礎(chǔ)通信機制是一種基本的請求-響應(yīng)協(xié)議,諸如超文本傳輸協(xié)議(HTTP)或超文本傳輸協(xié)議安全(HTTPS)。事務(wù)通常是作為對具有為認證而附加的主機生成的訪問令牌的統(tǒng)一資源定位符(URL)的標準HTTP請求而實現(xiàn)的。所有調(diào)用信息均被包含在該請求的URL、頭部、以及主體(在必要時)中。換言之,該請求包裝一組信息,諸如要操作的對象、要執(zhí)行的操作、調(diào)用者所提供的可選證據(jù)、以及元數(shù)據(jù)的各種其他位。某些請求還包含主體,所述主體以與該操作相關(guān)聯(lián)的交換(exchange)格式封裝了數(shù)據(jù)。當(dāng)存在主體時,主體中的數(shù)據(jù)表示封裝中所描述的操作的有效載荷。相應(yīng)地,恰好攜帶有效載荷的請求必須繼續(xù)在請求-串/http頭部中呈現(xiàn)所需的封裝信息而不能使用該請求的主體作為替代傳輸機制。響應(yīng)同樣如此,盡管有更多有效載荷,因為將元數(shù)據(jù)有效載荷與不具有有效載荷和文件內(nèi)容的請求相匹配的某些響應(yīng)總作為響應(yīng)主體中的有效載荷被傳輸。該開放平臺接口客戶端(即,外部應(yīng)用服務(wù)器)所發(fā)送的請求可選地包括由該開放平臺接口主機用來驗證請求者的身份的證據(jù)頭部。所有回復(fù)信息均被包含在該響應(yīng)的URL、頭部、以及主體(在必要時)中。這消除了對某些現(xiàn)有技術(shù)接口曾經(jīng)需要的非常具體的元數(shù)據(jù)交換的需求。請求或響應(yīng)的基本格式通常包括用于攜帶通用信息和/或方法專用信息的一個或多個請求頭部以及在需要時用于攜帶數(shù)據(jù)的可選的請求主體。此外,響應(yīng)返回請求是否成功的狀態(tài)碼。該請求,和與該請求相關(guān)聯(lián)的任何所需的和可選的參數(shù)一起,被寄送到主機或外部應(yīng)用服務(wù)器的接入點或終止點的地址。以下討論描述了開放平臺接口的一個示例性實施例。該示例不是為了以任何方式限制由該開放平臺接口所提供的特征和功能。開放平臺接口所使用的頭部包括標準請求頭部、標準響應(yīng)頭部、以及錯誤響應(yīng)頭部。此外,開放平臺接口包括用于所選方法的專用附加頭部。標準請求頭部、標準響應(yīng)頭部、以及錯誤頭部被用來處理診斷功能以及傳遞非該請求專用的接口級信息(即,通用信息)。錯誤響應(yīng)頭部與該響應(yīng)所返回的狀態(tài)碼結(jié)合使用。狀態(tài)碼提供由開放平臺接口定義的標準值,所述標準值指示請求是否成功,并且如果不成功,標識該請求所遇到的錯誤的類型。標準請求頭部指定外部應(yīng)用服務(wù)器(S卩,調(diào)用者或接口客戶端)的接口版本、外部應(yīng)用服務(wù)器的機器名、以及用于為記錄和/或調(diào)試目的而將來自客戶端的日志與來自主機的日志同步并且允許外部應(yīng)用服務(wù)器請求來自主機(即,響應(yīng)者或接口服務(wù)器)的性能跟蹤的相關(guān)標識符。標準響應(yīng)頭部指定主機的接口版本、主機的機器名、以及性能跟蹤的輸出(如果被請求)。由開放平臺接口定義的響應(yīng)碼包括指示成功/無錯誤的代碼#200,指示文件是未知的或用戶是未授權(quán)的的代碼#404,指示資源鎖不匹配、資源被另一接口鎖定、或在PutRelativeFile(放入相對文件)請求中指定的文件名正被使用和覆蓋操作未被要求的代碼#409,指示文件大于最大預(yù)期大小的代碼#412,指示文件太大的代碼#413,指示服務(wù)器錯誤的代碼#500,以及指示動詞未被服務(wù)器/主機實現(xiàn)的代碼#501。響應(yīng)錯誤頭部包括當(dāng)代碼#500被返回時描述服務(wù)器錯誤的服務(wù)器錯誤頭部,以及當(dāng)代碼#409被返回時,或者是指定使用開放平臺接口所創(chuàng)建的鎖的唯一標識符的鎖頭部,或者是指示目標資源上的鎖不是使用開放平臺接口創(chuàng)建的由另一接口鎖定的標志(lockedbyanotherinterfaceflag)。開放平臺接口識別請求或響應(yīng)的主體中的兩個不同內(nèi)容類型。取決于請求,主體包含元數(shù)據(jù)或二進制數(shù)據(jù)。響應(yīng)主體的內(nèi)容類型取決于所作出的請求。調(diào)用者(即,外部應(yīng)用服務(wù)器或服務(wù)應(yīng)用)基于調(diào)用者所作出的請求來解釋響應(yīng)主體中的數(shù)據(jù)?;緮?shù)據(jù)互換或標記格式擔(dān)當(dāng)元數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)傳輸機制。在大多數(shù)實施例中,基本數(shù)據(jù)互換或標記格式既是機器可讀又是人類可讀的。開放平臺接口的各實施例用于數(shù)據(jù)傳輸機制所使用的一種適當(dāng)?shù)膶ο笞⑨尭袷绞荍avaScript對象注釋(JSON);然而,可使用其他對象注釋格式而不背離本發(fā)明的精神和范圍。主機通過針對服務(wù)應(yīng)用入口URL對服務(wù)應(yīng)用包裝做出HTTPGET請求來開始事務(wù)(即,調(diào)用一動作)。在發(fā)起一動作時,主機提供元數(shù)據(jù)URUS卩,回調(diào)URL或源URL)。該事務(wù)中的所有后續(xù)通信由該外部應(yīng)用服務(wù)器發(fā)起。元數(shù)據(jù)URL是對主機端點的引用,其是在做出對主機的HTTP請求時該服務(wù)應(yīng)用所使用的地址。HTTP請求被用于調(diào)用用于執(zhí)行資源相關(guān)功能的主機側(cè)方法。開放平臺接口定義用于執(zhí)行以下功能中的一些或全部的有限數(shù)量的容易實現(xiàn)的和廣泛支持的語義方法,這些功能包括但不限于獲得文件元數(shù)據(jù)(CheckFilelnfo),獲得文件夾元數(shù)據(jù)(CheckFolderInfo),獲得文件的二進制內(nèi)容(GetFile),保存文件的二進制內(nèi)容(PutFile),保存文件的二進制內(nèi)容的副本(PutRelativeFile),鎖定文件(Lock),解鎖文件(Unlock),續(xù)訂(renew)對文件的鎖(RefreshLock),解除鎖定并重新鎖定文件(UnlockAndRelock),執(zhí)行本地虛擬應(yīng)用(ExecuteCobaltRequest),執(zhí)行遠程虛擬應(yīng)用(ExecuteCobaltReIativeRequest),枚舉文件夾的內(nèi)容(EnumerateChildren),以及刪除文件(DeleteFile)。用于獲得與文檔相關(guān)聯(lián)的元數(shù)據(jù)的方法和用于獲得文檔內(nèi)容的方法被認為是該開放平臺接口的核心方法。每個方法使用針對元數(shù)據(jù)URL或另一主機端點URL的對服務(wù)應(yīng)用包裝(通常是內(nèi)幀)的HTTP請求來調(diào)用,并且包括唯一標識該方法的目標資源(例如,文件或文件夾)的資源標識符以及可選的作為請求參數(shù)的訪問令牌。在大多數(shù)情況下,回調(diào)URL或者是元數(shù)據(jù)URL,或者是用于目標資源類型的內(nèi)容URL。CheckFilelnfo請求是針對文件元數(shù)據(jù)URL做出的GET請求,并且支持標準請求頭部。CheckFilelnfo請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。CheckFilelnfo請求主體是空或被略去。所支持的CheckFilelnfo錯誤碼是代碼#200、代碼#404以及代碼#500οCheckFilelnfo響應(yīng)支持標準響應(yīng)頭部,而CheckFilelnfo響應(yīng)主體包含對象注釋格式的文件元數(shù)據(jù)。核心文件元數(shù)據(jù)包括但不限于指定在文件改變時改變的唯一且不重復(fù)的值的一個或多個文件版本,指定包括擴展名但不帶路徑的基本文件名、指定資源的所有者的唯一標識符的所有者標識符(用于扼流和一致散列化)、文件的當(dāng)前版本的文件大小、以及包含用于高速緩存管理的文檔內(nèi)容的Base64編碼的SHA256散列的文件散列碼(SHA256散列)。可選文件元數(shù)據(jù)包括但不限于以下的一個或多個指定外部應(yīng)用服務(wù)器用于訪問資源的地址的客戶端URL、指定觸發(fā)用戶代理的本機下載功能的地址的下載URL、指定資源被關(guān)閉時服務(wù)應(yīng)用包裝的目標地址的關(guān)閉URL、指定主機提供的全屏查看頁面的地址的全屏URL、指定主機提供的查看頁面的地址的主機查看URL、指定主機提供的編輯頁面的地址的主機編輯URL、指定用于該文檔類型的主機的內(nèi)嵌查看器的地址的主機內(nèi)嵌查看URL(如果不同于主機查看URL的話)、指定用于該文檔類型的主機的內(nèi)嵌編輯器的地址的主機內(nèi)嵌編輯URL(如果不同于主機編輯URL)、指示用戶是否具有對該資源的寫許可的寫許可標志、指定該資源是否對所有用戶只讀的只讀標志、指定該資源是否對所有用戶可訪問的公開標志、指定電子表格公式是否對用戶可見的隱藏公式標志、指定主機是否支持文件保存操作的更新支持標志、指示主機是否支持文件鎖定操作的鎖定支持標志、指示主機是否支持虛擬應(yīng)用(例如,Cobalt應(yīng)用)的虛擬應(yīng)用支持標志、指示主機是否支持文件系統(tǒng)操作(列出文件夾的內(nèi)容、刪除文件等)的容器支持標志、指定主機是否支持文件系統(tǒng)刪除操作的刪除標志、指示用于直接訪問文件的內(nèi)容(即,不使用主機端點內(nèi)容URL)的地址的文件URL、指定用于顯示主機的隱私策略的地址的隱私URL、以及指定顯示主機的使用條款的使用條款URL。CheckFolderInfo請求是針對文件夾元數(shù)據(jù)URL做出的GET請求,并且支持標準請求頭部。CheckFolderInfo請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。CheckFolderInfo請求主體是空或被略去。所支持的CheckFolderInfo錯誤碼是代碼#200、代碼#404、代碼#500以及代碼#501。CheckFolderInfo響應(yīng)支持標準響應(yīng)頭部,并且該響應(yīng)主體包含對象注釋格式的文件夾元數(shù)據(jù)。核心文件夾元數(shù)據(jù)包括但不限于以下中的一個或多個指定不帶路徑的文件夾名稱的文件夾名稱,以及所有者標識符??蛇x的文件元數(shù)據(jù)包括但不限于以下的一個或多個客戶端URL、關(guān)閉URL、指示文件夾是容器的文件分層結(jié)構(gòu)支持標志、刪除標志、用戶寫許可標志、公開標志、更新支持標志、鎖定支持標志、虛擬應(yīng)用支持標志、各器支持標志、王機查看URL、主機編輯URL、主機內(nèi)嵌查看URL、主機內(nèi)嵌編輯URL、隱私URL、以及使用條款URL。GetFile內(nèi)容請求是針對文件內(nèi)容URL做出的GET請求。GetFile內(nèi)容請求支持標準請求頭部和指定文件的預(yù)期最大大小的可選的擴展的請求頭部。GetFile內(nèi)容請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。GetFile內(nèi)容請求主體是空或被略去。所支持的GetFile錯誤碼是代碼#200、代碼#404、代碼#412以及代碼#500。GetFile響應(yīng)支持標準響應(yīng)頭部以及指定響應(yīng)中實際返回的文件的版本(以與由CheckFilelnfo返回的形式相同的形式)的擴展的響應(yīng)頭部。GetFile響應(yīng)主體包含二進制格式的文件內(nèi)容。PutFile請求是針對文件內(nèi)容URL做出的POST請求。PutFile請求支持標準請求·頭部和指定文件的大小(必需的)、區(qū)分對同一URL做出的各種POST操作的覆蓋標識符(例如,“PUT”)、以及可選的在保存操作中使用的文件鎖的唯一標識符的附加的頭部。PutFile請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。PutFile內(nèi)容請求主體包含二進制格式的文件內(nèi)容。所支持的PutFile錯誤碼是代碼#200、代碼#404、代碼#409、代碼#413、代碼#500以及代碼#501。PutFile響應(yīng)支持標準響應(yīng)頭部。PutFile響應(yīng)主體是空或被略去。PutRelativeFile請求是針對文件兀數(shù)據(jù)URL做出的POST請求。PutReIativeFiIe請求支持標準請求頭部以及指定文件的大小、覆蓋標識符(例如,“PUTRELATIVE”)、文件副本的文件名、以及是否準許蓋寫目標文件的附加的頭部。PutRelativeFile請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。PutRelativeFile請求主體包含二進制格式的文件內(nèi)容。所支持的PutRelativeFile錯誤碼是代碼#200、代碼#404、代碼#413、代碼#500、以及代碼#501。PutRelativeFile響應(yīng)支持標準響應(yīng)頭部。PutRelativeFile響應(yīng)主體包含對象注釋格式的副本的文件元數(shù)據(jù)。如果文件被成功創(chuàng)建,則文件元數(shù)據(jù)包括但不限于文件副本的文件元數(shù)據(jù)URL、文件副本的主機查看URL、以及可選的文件副本的主機編輯URL。如果文件沒有被成功創(chuàng)建,則文件元數(shù)據(jù)包括但不限于指定替代文件副本文件名的建議文件名、指示具有在PutRelativeFile請求中提供的文件副本文件名的文件是否已經(jīng)存在的文件存在標志、以及指示在PutRelativeFile請求中提供的文件副本文件名是否是合法文件名的非法文件名標志。LockFile請求是針對文件元數(shù)據(jù)URL做出的POST請求。LockFile請求支持標準請求頭部以及指定覆蓋標識符(例如,“LOCK”)和要創(chuàng)建的文件鎖的唯一標識符的附加頭部。LockFile請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。LockFile請求主體是空或被略去。LockFile錯誤碼是代碼#200、代碼#404、代碼#409、代碼#500、以及代碼#501。LockFile響應(yīng)支持標準響應(yīng)頭部以及指定存在的鎖的附加頭部。LockFile響應(yīng)主體是空或被略去。UnlockAndRelock請求是LockFile請求的變型,UnlockAndRelock請求僅包括指定要被移除的文件鎖的唯一標識符的附加參數(shù)。UnlockFile請求是針對文件元數(shù)據(jù)URL做出的POST請求。UnlockFile請求支持標準請求頭部以及指定覆蓋標識符(例如,“UNLOCK”)以及要移除的文件鎖的唯一標識符的附加頭部。UnlockFile請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。UnlockFile請求主體是空或被略去。UnlockFile錯誤碼是代碼#200、代碼#404、代碼#409、代碼#500、以及代碼#501。UnlockFile響應(yīng)支持標準響應(yīng)頭部。UnlockFile響應(yīng)主體是空或被略去。RefreshLock請求是針對文件元數(shù)據(jù)URL做出的POST請求。RefreshLock請求支持標準請求頭部以及指定覆蓋標識符(例如,“REFRESH_LOCK”)和要刷新的文件鎖的唯一標識符的附加頭部。RefieshLock請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。RefreshLock請求主體是空或被略去。RefreshLock錯誤碼是代碼#200、代碼#404、代碼#409、代碼#500、以及代碼#501。RefreshLock響應(yīng)支持標準響應(yīng)頭部。RefreshLock響應(yīng)主體是空或被略去。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求是針對文件兀數(shù)據(jù)URL做出的POST請求。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求支持標準請求頭部和指定文件內(nèi)容的大小以及覆蓋標識符(例如,“COBALT”)的附加頭部。在ExecuteCobaltRelativeRequest請求的情況下,支持指定相對目標的附加頭部。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求主體攜帶Cobalt格式的文件內(nèi)容。所支持的ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求的錯誤碼是代碼#200、代碼#409、代碼#500以及代碼#501。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest響應(yīng)支持標準響應(yīng)頭部。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest響應(yīng)主體攜帶二進制格式的虛擬應(yīng)用的輸出。ExecuteCobaltRequest和ExecuteCobaltRelativeRequest請求不出了開放平臺接口如何包括封裝功能,該封裝功能允許根據(jù)需要將任意數(shù)據(jù)協(xié)議結(jié)合到開放平臺接口中。開放平臺接口標識對象并提供對該對象的訪問,但是允許該對象利用客戶端和主機兩者均理解的任意數(shù)據(jù)交換格式。不要求開放平臺接口理解任意數(shù)據(jù)交換格式。所封裝的對象僅利用不同的覆蓋頭部并將其自身聲明為在Check(檢查)中可用。EnumerateChildren請求是針對文件夾元數(shù)據(jù)URL做出的POST請求。EnumerateChildren請求支持標準請求頭部,并且支持將訪問令牌作為可選參數(shù)包括在內(nèi)。EnumerateChildren請求主體是空或被略去。所支持的EnumerateChildren錯誤碼是代碼#200、代碼#404、代碼#500以及代碼#501。EnumerateChildren響應(yīng)支持標準響應(yīng)頭部。EnumerateChildren響應(yīng)主體包含對象注釋格式的資源元數(shù)據(jù)的集合。資源元數(shù)據(jù)包括但不限于該資源的元數(shù)據(jù)URL、基本文件名或文件夾名、以及資源(如果是文件的話)的版本。DeleteFile請求是對文件元數(shù)據(jù)URL做出的POST請求。DeleteFile請求支持標準請求頭部和指定覆蓋標識符(例如,“DELETE”)的附加的頭部。DeleteFile請求支持將訪問令牌作為可選參數(shù)而包括在內(nèi)。DeleteFile請求主體是空或被略去。DeleteFile錯誤碼是代碼#200、代碼#404、代碼#409、代碼#500、以及代碼#501。DeleteFile響應(yīng)支持標準響應(yīng)頭部。DeleteFile響應(yīng)主體是空或被略去。開放平臺接口將信息權(quán)限管理(IRM)合并到外部服務(wù)應(yīng)用中以僅供查看,以允許用戶通過使用訪問令牌和證據(jù)系統(tǒng)在信息權(quán)限管理限制的情況下打開文檔。一個容易理解的場景關(guān)注向大的組發(fā)送公司機密信息。在此場景中,發(fā)送者需要將敏感信息傳送到他或她的組織的員工,但是想要確保他們不轉(zhuǎn)發(fā)該文檔。外部服務(wù)應(yīng)用擔(dān)當(dāng)這種場景的極佳的查看選項,因為用戶不需要下載文檔來打開它。此外,外部服務(wù)應(yīng)用中的高速緩存機制將使此操作很快。然而,在沒有信息權(quán)限管理支持的情況下,該場景被打破,而用戶將要接收到錯誤對話框。開放平臺接口允許用戶從主機檢索(retrieve)受保護的文檔。推薦客戶端、主機和外部服務(wù)應(yīng)用之間的所有通信是通過密碼通信協(xié)議(諸如SSL或TLS)的,以防止攻擊者獲得用戶的授權(quán)令牌。為了支持外部服務(wù)應(yīng)用中的信息權(quán)限管理,CheckFilelnfo合并三個附加參數(shù)指示給定文件需要在瀏覽器中被保護的受保護文件標志、以及指定顯示給用戶的模板的名稱以及描述的可選的IRM模板標識符。為了防止用戶檢索用戶具有訪問權(quán)的文檔的未加密的副本,請求包括用只有外部服務(wù)應(yīng)用知道的私鑰簽名的部分,而主機可選擇拒絕沒有按照期望提供證據(jù)的任何請求。在發(fā)現(xiàn)時證據(jù)密鑰的提供是外部應(yīng)用服務(wù)器對所有請求進行簽名的承諾。主機可選擇不發(fā)起與在發(fā)現(xiàn)時不提供證據(jù)的外部應(yīng)用服務(wù)器的IRM會話。外部服務(wù)應(yīng)用用當(dāng)前私鑰和舊私鑰兩者對請求簽名。只有在可用其對外部服務(wù)應(yīng)用的當(dāng)前私鑰或舊私鑰的副本來證實這兩個簽名之一時,主機才接受該請求。主機不可知集成和互操作系統(tǒng)利用面向所選服務(wù)的體系結(jié)構(gòu)原理和方法,所述方法和原理有助于開放系統(tǒng)接口主機和客戶端所實現(xiàn)的開放平臺接口的版本間的高等級的跨版本兼容性。主機不可知集成和互操作系統(tǒng)的各實施例遵循“忽略你不期望的”以及“對于你期望但是沒有得到的數(shù)據(jù)使用默認值”的面向服務(wù)的體系結(jié)構(gòu)原理。具體而言,元數(shù)據(jù)對象注釋是以對響應(yīng)主體而言可接受的方式來構(gòu)造的,以包括接收者沒有識別的對象。換言之,如果響應(yīng)主體包括比接收者原本期望的更多的數(shù)據(jù),則不期望的數(shù)據(jù)被忽略。替代地,如果響應(yīng)主體略去接收者期望的數(shù)據(jù),則為丟失的數(shù)據(jù)使用默認值。例如,布爾值默認為“假”,而所有串值默認為“空”,而整數(shù)值默認為O。具有清楚的默認值的任何其他數(shù)據(jù)類型可被約定引入。而且,開放平臺接口的某些實施例采用“默認值必須帶來可接受的行為”的語義。外部應(yīng)用服務(wù)器和主機之間的通信被認為是受信的,因為主機總是代表主機不可知接口和互操作性系統(tǒng)中的用戶來發(fā)起事務(wù)。而且,請求都是主機會允許用戶進行的動作。當(dāng)動作不是用戶應(yīng)當(dāng)能夠進行的時(即,獲得受保護文件),主機不可知接口和互操作性系統(tǒng)應(yīng)當(dāng)請求證據(jù)密鑰。主機不可知接口和互操作性系統(tǒng)采用可選的證據(jù)系統(tǒng),該證據(jù)系統(tǒng)允許主機驗證請求者的身份并將附加的信任層添加到該事務(wù)中。證據(jù)系統(tǒng)使用攜帶調(diào)用者的身份的證據(jù)的請求(即,調(diào)用)。為了實現(xiàn)證據(jù)系統(tǒng),主機必須獲得該外部應(yīng)用服務(wù)器專用的密碼密鑰(即,證據(jù)密鑰)。該證據(jù)密鑰為主機提供一種機制,通過這種機制來驗證請求實際上是由該受信外部應(yīng)用服務(wù)器做出的。在各實施例中,主機通過HTTPS連接獲得密碼密鑰來確保主機正與主機期望與其通信的外部應(yīng)用服務(wù)器通信。在依賴于公鑰密碼系統(tǒng)(諸如RSA)的一個實施例中,證據(jù)密鑰是與外部應(yīng)用服務(wù)器所保持的私鑰相對應(yīng)的公鑰。外部應(yīng)用使用與該公鑰相對應(yīng)的私鑰對后續(xù)通信的部分簽名以創(chuàng)建密碼簽名。在各實施例中,被簽名的部分包括時間戳、URL、訪問令牌、以及這些信息片段中的一個或多個的散列。更具體而言,時間戳被添加到頭部并被包括在簽名中,并且指向發(fā)起該請求的外部應(yīng)用服務(wù)器的URL被包括在該簽名中。在各實施例中,來自外部應(yīng)用服務(wù)器的請求包括攜帶該密碼簽名的證據(jù)頭部。主機使用該證據(jù)密鑰來證實密碼簽名是使用對應(yīng)的私鑰來生成的。在某些實施例中,主機使用時間戳來驗證密碼簽名在可接受時間限制內(nèi)。盡管許多應(yīng)用將受益于證據(jù)系統(tǒng)所提供的附加的信任層,該證據(jù)系統(tǒng)是該主機不可知接口和互操作性系統(tǒng)的可選組件。該主機具有實施或要求身份的證據(jù)的選項。如果在主機要求證據(jù)頭部時該服務(wù)應(yīng)用不提供該證據(jù)頭部,則該主機簡單地忽略該請求,或者替代地返回指示該請求未被授權(quán)的錯誤消息。在某些實施例中,主機公開對該外部應(yīng)用服務(wù)器要求證據(jù)頭部,以便該服務(wù)應(yīng)用將知道在所有請求中包括該證據(jù)頭部。當(dāng)不要求身份的證據(jù)時,主機可選擇忽略請求中的證據(jù)頭部。在主機不可知接口和互操作性系統(tǒng)中,主機發(fā)起與外部應(yīng)用服務(wù)器的關(guān)系并在該時刻從該外部應(yīng)用服務(wù)器獲得證據(jù)密鑰。在各實施例中,將證據(jù)密鑰作為在發(fā)現(xiàn)進程期間返回的發(fā)現(xiàn)元數(shù)據(jù)的一部分或作為對主機的初始回調(diào)的一部分提供給主機。該主機還期望將來的通信來自外部應(yīng)用服務(wù)器。因為外部應(yīng)用服務(wù)器在主機發(fā)起信任關(guān)系時提供證據(jù)密鑰,所以主機可依賴于以下事實使用證據(jù)密鑰證實的密碼簽名是由原始提供該證據(jù)密鑰的相同外部應(yīng)用服務(wù)器生成的,而沒有被第三方欺詐。開放平臺接口使用訪問令牌來唯一標識一事務(wù)。而且,訪問令牌為與該事務(wù)相關(guān)的通信提供認證機制,并且消除了外部應(yīng)用服務(wù)器(即,開放平臺接口客戶端)參與主機通常使用的特定認證方案的需要。訪問令牌是對用戶/文檔對來說唯一的令牌,主機端點120使用該用戶/對象對來認證用戶106并授權(quán)對該文檔的訪問。在各個實施例中,訪問令牌包括用戶標識符、時間戳和文檔標識符中的一個或多個的散列,并用該主機已知的秘密(secret)來加密該訪問令牌。主機發(fā)起的事務(wù)的使用允許主機不可知接口和互操作性系統(tǒng)依賴主機側(cè)認證并避免外部應(yīng)用服務(wù)器本機地認證用戶的需要。換言之,用戶總是在主機上做某個動作(例如,用戶界面動作或姿勢),所述動作指示用戶想要以特定方式開始與文檔交互(例如,編輯、移動查看等)。主機總是有機會同時生成可選地綁定于用戶和文檔、具有相對短的壽命、并且隨后能被主機確認的訪問令牌。開放平臺接口不要求主機使用特定方案來生成訪問令牌,而主機可使用各種已知訪問令牌生成方案或新的方案中的任何一個來用于此目的。除了訪問令牌存在并且與特定事務(wù)相關(guān)聯(lián)(即,它標識特定用戶和文件)以外,服務(wù)應(yīng)用不需要知道關(guān)于該訪問令牌的任何事情。訪問令牌的實際內(nèi)容對服務(wù)應(yīng)用來說是完全不透明的。服務(wù)應(yīng)用僅包括與涉及相關(guān)聯(lián)事務(wù)的主機通信中的訪問令牌。因為主機不需要使訪問令牌對外部應(yīng)用服務(wù)器可理解(intelligible),所以主機能夠使用任何信息來保證訪問令牌被綁定到特定用戶和文件,并且保證訪問令牌不是無限期地有效的。作為推薦安全實踐的一部分,開放平臺接口的約定強烈鼓勵主機將訪問令牌鏈接到具體用戶和具體資源(例如,具體文件或文檔)。當(dāng)如此鏈接時,即便訪問令牌被危及,攻擊者將只獲得對具體文件的訪問,并且僅具有授予該具體用戶的權(quán)限,而不是為該用戶在給定系統(tǒng)中可能做的所有事的一般性許可。由于嵌入到開放平臺接口所使用的URL中的信息的類型和量(例如,訪問令牌或文檔內(nèi)容),推薦在該開放平臺接口的所有入站和出站調(diào)用中使用安全通道(例如,HTTPS),盡管這不是必需的。元數(shù)據(jù)URL參考文件,而訪問令牌參考該文件的具體用戶的具體訪問時間。例如,如果兩個用戶正在同一時間編輯同一文檔,則這兩個用戶均被給予相同的元數(shù)據(jù)URL,但是每個用戶將具有不同的訪問令牌,從而允許主機和/或服務(wù)應(yīng)用分開地跟蹤每個用戶的動作(即,事務(wù))。然而,不要求服務(wù)應(yīng)用標識或區(qū)分這兩個用戶。服務(wù)應(yīng)用的所有所需要的僅是在請求中包括訪問令牌,從而主機可標識用戶并執(zhí)行該請求的任何必要用戶等級認證。如果該事務(wù)需要服務(wù)應(yīng)用了解附加資源,則開放平臺接口的約定指定主機應(yīng)當(dāng)為每個附加的資源提供新的訪問令牌。換言之,每當(dāng)外部應(yīng)用在該開放平臺接口下做出調(diào)用來了解不同資源時,主機提供該資源的元數(shù)據(jù)URL和訪問令牌,從而該服務(wù)應(yīng)用可代表該用戶與該資源交互。如果該服務(wù)應(yīng)用需要知道關(guān)于該用戶的任何事情(例如,用戶的名稱或者該用戶對一文件具有什么許可),該主機在服務(wù)應(yīng)用對該主機做出首次調(diào)用時提供該信息。該服務(wù)應(yīng)用接受訪問令牌作為執(zhí)行該事務(wù)的標識和授權(quán),而不需要獨立地且本機地在該主機所使用的任何認證方案下認證該用戶。換言之,訪問令牌允許服務(wù)應(yīng)用完全信任主機來處理各事項的用戶側(cè)。因為該服務(wù)應(yīng)用完全依賴訪問令牌并且不以任何方式、形狀或形式認證用戶,所以該開放平臺接口允許應(yīng)用(例如,主機應(yīng)用)提供編程功能以發(fā)起對服務(wù)應(yīng)用的請求。該主機使用該開放接口協(xié)議直接向服務(wù)應(yīng)用包裝做出針對適當(dāng)服務(wù)應(yīng)用入口URL的HTTPGET請求,而從該外部應(yīng)用服務(wù)器到該主機的響應(yīng)的主體僅包含指示該任務(wù)的結(jié)果的數(shù)據(jù)。通過使用訪問令牌使此功能成為可能,訪問令牌消除了用戶代理直接導(dǎo)航到外部應(yīng)用服務(wù)器來獲得認證信息的需要,并且這在需要用戶的本機認證的現(xiàn)有技術(shù)中是不可用的。例如,主機可請求文檔轉(zhuǎn)換而不需要用戶的交互。在這種情況下,主機直接向外部應(yīng)用發(fā)送請求,該請求發(fā)起轉(zhuǎn)換動作并指定目標文件和訪問令牌。作為響應(yīng),服務(wù)應(yīng)用調(diào)用主機端點,獲得文件,執(zhí)行轉(zhuǎn)換,并且將轉(zhuǎn)換后的文檔直接返回到主機。在另一示例中,外部應(yīng)用提供切取器(teaser)服務(wù),該服務(wù)采用一文檔(例如,字處理文檔或演示文稿文檔)并提取所選的信息位(例如,突出顯示的部分)。所提取的信息隨后可在新聞訂閱源或其他出口中示出。因為該開放平臺接口允許主機直接獲得該數(shù)據(jù)而不需要使用戶必需在該時刻參與該過程?;旧希鳈C僅醒來并請求外部應(yīng)用服務(wù)器提供文檔的切取器。當(dāng)主機做出該請求時不要求該用戶在場。而且,該服務(wù)應(yīng)用直接開始該調(diào)用(編程地),而不是將代碼加載到網(wǎng)頁中。只要該調(diào)用提供所需的信息(例如,文件標識符和訪問令牌),該外部應(yīng)用就執(zhí)行該請求并且將所請求的數(shù)據(jù)直接返回到該主機,而不是將該數(shù)據(jù)發(fā)送到瀏覽器實例。除了兩個核心方法(S卩,獲得元數(shù)據(jù)和獲得二進制數(shù)據(jù))之外,該開放平臺接口的各實施例定義了更多的方法。這些更多的方法由該開放平臺接口和相關(guān)聯(lián)的約定來定義。外部應(yīng)用服務(wù)器將這些更多的方法的可用性以功能集列表的形式來公開。每個功能集由串(例如,Cobalt、Locking(鎖定)、Update(更新))來聲明,并承諾實現(xiàn)開放平臺接口所支持的方法集合。進而,主機公開它所支持的功能集。相應(yīng)地,外部應(yīng)用服務(wù)器基于主機的能力來知道是否提供某個功能。更具體而言,如果主機不公開對具體功能的支持,則服務(wù)應(yīng)用抑制需要不受支持的功能的任意特征。例如,當(dāng)主機不能保存文件的已更新副本時,服務(wù)應(yīng)用不應(yīng)當(dāng)允許用戶編輯文檔。功能集的聲明、實現(xiàn)和消費擔(dān)當(dāng)開放平臺接口的主要可擴展性機制。該開放平臺接口不允許通用的(即,完全開放的)元數(shù)據(jù)交換機制(諸如簡單對象訪問協(xié)議(SOAP)所使用的)來描述可用功能。換言之,主機可用于實現(xiàn)的功能集限于該開放平臺接口和相關(guān)聯(lián)的約定所提供的那些。通過將可用功能集綁定到約定,免除了該開放協(xié)議接口嘗試完全描述該功能的負擔(dān)。相反,每個約定被簡單地聲明,并且僅在兩側(cè)均相信它們知道該約定意味著什么時使用。約定阻擋動作的唯一的時刻是在該服務(wù)應(yīng)用聲明要求約定而主機不理解該要求時。功能集是由描述該接口所支持的方法的一個或多個動詞構(gòu)成的。每個動詞為該接口的特定方法定義主機和外部應(yīng)用服務(wù)器之間的請求和響應(yīng)的格式和內(nèi)容。一般而言,每個動詞的定義描述請求的格式(即,URL結(jié)構(gòu))、與該請求相關(guān)聯(lián)的所支持的頭部、所需要的或可選地包括在請求主體中的任何信息、所支持的錯誤碼、提供關(guān)于錯誤碼的附加信息的任何所支持的頭部、與響應(yīng)相關(guān)聯(lián)的所支持的頭部、以及響應(yīng)主體中包括的任何信息。以下討論描述了該接口的一個示例性實施例。該示例不是為了以任何方式限制由該接口所提供的特征和功能。圖2A到2E示出使用開放接口協(xié)議來用服務(wù)應(yīng)用118提供的功能訪問主機102處理的文檔的過程的一個實施例。存在使用該過程的事務(wù)的一個具體示例,其中用戶106想要查看作為電子郵件的附件接收的字處理文檔。本示例性事務(wù)不應(yīng)當(dāng)被解釋為以任何方式限制主機不可知集成和交互系統(tǒng)100。在本示例中,主機102已經(jīng)發(fā)現(xiàn)了外部應(yīng)用服務(wù)器104并知曉在哪里尋找外部應(yīng)用服務(wù)器104、知曉如何生成服務(wù)應(yīng)用入口URL來調(diào)用服務(wù)應(yīng)用、以及處理外部應(yīng)用服務(wù)器104所提供的公鑰。用戶106經(jīng)由客戶端計算設(shè)備110上的用戶代理訪問主機102并從主機102請求(步驟202)內(nèi)容。主機102識別(步驟204)所請求的內(nèi)容包括對所存儲的文檔的引用。在該示例性實施例中,該內(nèi)容是包含所附字處理文檔的電子郵件消息。主機102咨詢(步驟206)發(fā)現(xiàn)元數(shù)據(jù)來確定是否支持該文檔類型。對于外部應(yīng)用服務(wù)器104所支持的類型的文檔,主機102確定(步驟208)外部應(yīng)用服務(wù)器104所支持的與該文檔類型相關(guān)聯(lián)的動作。主機102選擇性地生成(步驟210)外部應(yīng)用服務(wù)器104所支持的每個動作的動作鏈接并將該動作鏈接與該文檔相關(guān)聯(lián)。主機102隨后提供(步驟212)該文檔和相關(guān)聯(lián)的動作鏈接。用戶代理顯示(步驟214)由該主機提供的內(nèi)容,包括該動作鏈接。傳送(步驟216)主機提供的內(nèi)容中的動作鏈接指示用戶106期望對主機提供的內(nèi)容中所引用的相關(guān)聯(lián)的文檔執(zhí)行所選擇的動作。在此場景中,用戶106點擊電子郵件消息中該附件的查看鏈接以查看該文檔內(nèi)容。如同前面提到的,主機102管理該文檔的用戶訪問權(quán)限以及外部應(yīng)用服務(wù)器所提供的每個支持的服務(wù)應(yīng)用的許可證。在向用戶提供功能或允許用戶調(diào)用動作以前,該主機可選地考慮用戶等級許可,外部應(yīng)用服務(wù)器/服務(wù)應(yīng)用許可、管理性限制、以及在文檔訪問過程的各點處的基于上下文的約束。在各實施例中,該選擇性考慮是否應(yīng)當(dāng)由于以下內(nèi)容而限制訪問對文檔的期望訪問的不充分的用戶許可/訪問權(quán)限、缺少使用相關(guān)聯(lián)的服務(wù)應(yīng)用/外部應(yīng)用服務(wù)器的有效許可證、主機配置中的防止主機檢索或保存所選擇的文檔類型的管理性限制、和/或在正被遞送的該內(nèi)容的上下文中該動作是不適當(dāng)?shù)?例如,在文檔被附加到進入的電子郵件時主機可能限制對該文檔的編輯,而在其他上下文中卻允許用戶編輯該文檔)。在其他實施例中可以使用其他準則而不背離本發(fā)明的范圍和精神。在所示實施例中,當(dāng)用戶106點擊動作鏈接時,主機102驗證(步驟218)用戶106具有訪問該文檔的許可和/或具有使用支持服務(wù)應(yīng)用/外部應(yīng)用服務(wù)器104的必須的許可證。當(dāng)主機102確定該動作被限制時,主機102不調(diào)用(步驟220)被限制的動作。如果該動作不被限制,則主機102聯(lián)系外部應(yīng)用服務(wù)器104來調(diào)用該動作。一旦已調(diào)用一動作,主機打開(動作222)服務(wù)應(yīng)用包裝而用戶代理顯示(步驟224)該應(yīng)用服務(wù)包裝,該包裝包含外部應(yīng)用服務(wù)器104的服務(wù)應(yīng)用用戶接口(即,輸出)。主機102生成用于調(diào)用外部應(yīng)用服務(wù)器104和調(diào)用所選擇的動作的服務(wù)應(yīng)用入口URL。主機102咨詢(步驟226)所選擇動作和文檔類型的發(fā)現(xiàn)元數(shù)據(jù)以獲得服務(wù)應(yīng)用入口URL的參數(shù)和格式。服務(wù)應(yīng)用入口URL的基礎(chǔ)(base)是附加有適當(dāng)服務(wù)應(yīng)用的附加路徑信息和任何必要或可選的參數(shù)的外部應(yīng)用服務(wù)器的地址。這些參數(shù)包括但不限于指向主機端點內(nèi)的地址的URL、作為所選擇的動作的目標的資源的標識符或定位符、以及可選的基于主機所使用的認證方案的用戶106的訪問令牌?;谥鳈C102所使用的認證方案,主機102已經(jīng)知道用戶106的身份,并且已經(jīng)知道該文檔的身份,因為主機102正在提供該文檔。在各實施例中,將資源標識符與主機端點URL內(nèi)的所選擇的地址相組合以創(chuàng)建該文檔的元數(shù)據(jù)URL。在開放平臺接口下,元數(shù)據(jù)URL被用來操縱該資源的資源元數(shù)據(jù)或?qū)傩?例如,鎖定該文件或標識該文件的所有者)。通過約定,元數(shù)據(jù)URL具有所定義的結(jié)構(gòu),而開放平臺接口從該元數(shù)據(jù)URL得出開放平臺接口所使用的其他URL。在各實施例中,通過在元數(shù)據(jù)URL中進行替換或向元數(shù)據(jù)URL附加路徑,獲得另外的動作的URL。在一個實施例中,元數(shù)據(jù)URL路徑具有如下形式\\〈hostaddress>\wopi\<collectiontype>\<resourceID>(\\〈主機地址>\wopi\<集合類型>\<資源ID>),其中〈hostaddress〉(<主機地址>)是主機的域名,〈collectiontype〉(〈集合類型>)是指資源的類型(例如,文件、文件夾),而〈resourceID>(〈資源ID>)標識集合內(nèi)的該目標資源。接下來,主機102生成(步驟228)訪問令牌,該訪問令牌將用戶106和該文檔相關(guān)聯(lián)。主機將這些參數(shù)與外部應(yīng)用服務(wù)器104的基礎(chǔ)URL相關(guān)聯(lián)(步驟230)以構(gòu)造服務(wù)應(yīng)用入口URL。在某些實施例中,服務(wù)應(yīng)用包裝負責(zé)生成這些參數(shù)以及構(gòu)造服務(wù)應(yīng)用入口URL。主機102隨后指導(dǎo)用戶代理108來導(dǎo)航(步驟232)到在服務(wù)應(yīng)用入口URL處運行的服務(wù)應(yīng)用118。外部應(yīng)用服務(wù)器104解析(步驟234)服務(wù)應(yīng)用入口URL并提取元數(shù)據(jù)URL和訪問令牌。外部應(yīng)用服務(wù)器104還將服務(wù)應(yīng)用用戶接口(其包含服務(wù)應(yīng)用用戶接口和文檔內(nèi)容)寄送(步驟236)到服務(wù)應(yīng)用包裝。服務(wù)應(yīng)用用戶接口是經(jīng)由客戶端計算設(shè)備110上的用戶代理可查看的(步驟238)。一旦針對一文檔的動作已經(jīng)被主機102調(diào)用,則外部應(yīng)用服務(wù)器104通過發(fā)送到主機端點120的請求來發(fā)起與主機104的所有進一步的通信(例如,訪問存儲在主機上的文檔或執(zhí)行其他文件系統(tǒng)動作)。在所示實施例中,從主機102獲得文檔在多個步驟中進行。外部應(yīng)用服務(wù)器104向主機端點120的元數(shù)據(jù)URL發(fā)送(步驟240)文檔元數(shù)據(jù)請求(該請求包括訪問令牌和文件標識符)以了解該文檔(即,獲得文檔元數(shù)據(jù)/屬性)。在某些實施例中,文檔元數(shù)據(jù)請求包括證據(jù)頭部,該證據(jù)頭部包括密碼簽名,而主機在將關(guān)于文檔的信息返回給服務(wù)應(yīng)用118之前檢查(步驟242)該密碼簽名。在返回文檔元數(shù)據(jù)之前,主機102可選地確認訪問令牌(步驟244)。如果主機102不能使用證據(jù)密鑰來驗證該密碼簽名或者確認該訪問令牌,則主機拒絕(步驟246)該文檔元數(shù)據(jù)請求。否則,主機將與該請求相關(guān)的文檔元數(shù)據(jù)在響應(yīng)的主體中返回(步驟248)給外部應(yīng)用服務(wù)器,該元數(shù)據(jù)由外部應(yīng)用服務(wù)器104來消費(步驟250)。接下來,外部應(yīng)用服務(wù)器向文件訪問URL發(fā)送(步驟252)第二請求來獲得文檔的二進制內(nèi)容,該第二請求也包括訪問令牌和文件標識符。在各實施例中,文件訪問URL是根據(jù)通過開放平臺接口的約定所建立的公式或?qū)@傻男薷陌娴脑獢?shù)據(jù)URL,并且不需要在文檔元數(shù)據(jù)中提供。在一個實施例中,文件訪問URL是通過向元數(shù)據(jù)URL附加“\conent”(“\內(nèi)容”)來生成的(即,通過添加子路徑/文件夾/目錄)。正如文檔元數(shù)據(jù)請求的情況,文檔內(nèi)容請求的某些實施例包括證據(jù)頭部,該證據(jù)頭部包括密碼簽名,而主機在將該文檔內(nèi)容返回給服務(wù)應(yīng)用118之前可選地檢查(步驟254)該密碼簽名。在返回該文檔的二進制內(nèi)容之前,主機102也可選地確認訪問令牌(步驟256)。如果主機102不能使用證據(jù)密鑰來驗證該密碼簽名或者確認該訪問令牌,則主機忽略或拒絕(步驟258)該文檔內(nèi)容請求。否則,該主機在該文檔內(nèi)容響應(yīng)的主體中返回(步驟260)文檔內(nèi)容,該文檔內(nèi)容由外部應(yīng)用服務(wù)器104消費(步驟262)。替代地,在文檔元數(shù)據(jù)中提供的文件訪問URL是直接訪問URL,該直接訪問URL是指向該文檔內(nèi)容的直接鏈接。當(dāng)內(nèi)容存儲系統(tǒng)(即,主機)在一組服務(wù)器上維護文檔元數(shù)據(jù)而在一組不同服務(wù)器上維護實際文檔內(nèi)容時,使用直接訪問URL是有益的。使用直接訪問URL消除了主機擔(dān)當(dāng)中間人來獲得存儲在分開的服務(wù)器上的文檔內(nèi)容的需要。在若干實施例中,對直接訪問URL的請求不使用證據(jù)系統(tǒng),并且不用普通開放平臺接口頭部來裝飾。當(dāng)接收到文檔內(nèi)容時,外部應(yīng)用服務(wù)器104更新(步驟264)該服務(wù)應(yīng)用用戶接口來包括該文檔內(nèi)容,這允許用戶106訪問該文檔。主機102所提供的服務(wù)應(yīng)用包裝122顯示(步驟266)更新后的服務(wù)應(yīng)用用戶接口。用戶106經(jīng)由用戶代理來與該服務(wù)應(yīng)用用戶接口交互(268)以操縱該文檔。外部應(yīng)用服務(wù)器104處理(步驟270)用戶106的交互并根據(jù)需要操縱該文檔內(nèi)容。更新(步驟264)、顯示(步驟266)、交互(步驟268)、以及處理(步驟270)服務(wù)應(yīng)用用戶接口的步驟根據(jù)需要重復(fù),直到服務(wù)應(yīng)用確定(步驟272)完成用戶106與文檔的交互為止。在與該文檔的所有交互結(jié)束后,外部應(yīng)用服務(wù)器104請求(步驟274)主機102提交對該文檔做出的任何改變并且關(guān)閉(步驟276)該服務(wù)應(yīng)用會話。主機102通過在必要時保存該文檔(步驟278)以及關(guān)閉該文檔(步驟280)來做出響應(yīng)。如同先前指示的,圖2A到2E表示該過程的一個實施例并且不應(yīng)當(dāng)被解釋為將該過程限制于任何特定的步驟集合或步驟序列。該過程的其他實施例可包括另外的步驟、省略步驟、組合步驟、以及改變各步驟的次序。下面描述了該過程的替代實施例的示例。在某些實施例中,在生成用于訪問外部應(yīng)用服務(wù)器所提供的功能的動作鏈接或動態(tài)用戶接口控件(例如,上下文菜單)之前或之時,主機還檢查約束(restriction)。如果針對該文檔類型約束了該動作,則主機不生成/顯示動作鏈接或動態(tài)用戶接口控件中的命令。這種初步驗證防止了提供給用戶106執(zhí)行僅在選擇動作鏈接之后被拒絕的動作的機會。在另一實施例中,主機102預(yù)先確定在主機咨詢發(fā)現(xiàn)元數(shù)據(jù)時該服務(wù)應(yīng)用入口URL的格式,以確定外部應(yīng)用服務(wù)器104所支持的對文檔的動作,從而有效地將步驟206和步驟226相組合。如此處所述,提供一種開放平臺接口系統(tǒng),該系統(tǒng)允許使用常見協(xié)議的主機和外部應(yīng)用服務(wù)器之間的主機不可知集成。在該開放平臺接口系統(tǒng)下,認證、安全、和文件系統(tǒng)操作僅是主機的責(zé)任。該外部應(yīng)用服務(wù)器不包括與網(wǎng)絡(luò)訪問相關(guān)聯(lián)的復(fù)雜度和開銷、用戶認證、文件存儲、網(wǎng)絡(luò)和文件安全、以及通常由網(wǎng)絡(luò)中的其他服務(wù)器來處理且通常專用于特定企業(yè)的其他管理任務(wù)。忽略這些特征并使外部應(yīng)用服務(wù)器聚焦于通過開放接口協(xié)議來處理文檔動作允許外部應(yīng)用服務(wù)器用于各種各樣的企業(yè)網(wǎng)絡(luò)場景。應(yīng)當(dāng)理解,如此處所描述的執(zhí)行并且承擔(dān)通常由企業(yè)網(wǎng)絡(luò)上的其他服務(wù)器來處理的額外角色和責(zé)任的外部應(yīng)用服務(wù)器落入本發(fā)明的范圍和精神。本文描述的實施例和功能可經(jīng)由許多計算系統(tǒng)來操作,諸如上面參考圖I所描述的主機、和外部應(yīng)用服務(wù)器104、和客戶端計算設(shè)備110,包括有線和無線計算系統(tǒng)、移動計算系統(tǒng)(如移動電話、圖形輸入板或平板型計算機、膝上型計算機等)。此外,本文所述的實施例和功能可在分布式系統(tǒng)上操作(如基于云的計算系統(tǒng)),其中應(yīng)用功能、存儲器、數(shù)據(jù)存儲和檢索、以及各種處理功能可在諸如因特網(wǎng)或內(nèi)聯(lián)網(wǎng)之類的分布式計算網(wǎng)絡(luò)上彼此遠程地操作。各種類型的用戶界面和信息可經(jīng)板載計算設(shè)備顯示器或經(jīng)與一個或多個計算設(shè)備相關(guān)聯(lián)的遠程顯示單元被顯示。例如,各種類型的用戶界面和信息可在墻壁表面上被顯示和交互,各種類型的用戶界面和信息被投射在墻壁表面上。與可用于實施本發(fā)明的各實施例的許多計算系統(tǒng)的交互包括鍵擊輸入、觸摸屏輸入、語音或其他音頻輸入、姿勢輸入(其中相關(guān)聯(lián)的計算設(shè)備配備有用于捕捉和解釋用于控制計算設(shè)備的功能的用戶姿勢的檢測(如相機)功能)等。圖3到5以及相關(guān)描述提供了其中可實施本發(fā)明的各實施例的各種操作環(huán)境的討論。然而,關(guān)于圖3到5所示出和討論的設(shè)備和系統(tǒng)是用于示例的目的,而非對可被用于實施本文所述的本發(fā)明的各實施例的大量計算設(shè)備配置的限制。圖3是示出可用來實施本發(fā)明的各實施例的計算設(shè)備300的示例物理組件的框圖。下面描述的計算設(shè)備組件可適合于上面描述的計算設(shè)備,例如主機102、外部應(yīng)用服務(wù)器104、和客戶端計算設(shè)備110。在基本配置中,計算設(shè)備300可包括至少一個處理單元302和系統(tǒng)存儲器304。取決于計算設(shè)備的配置和類型,系統(tǒng)存儲器304可包括,但不限于,易失性存儲(例如,隨機存取存儲器(RAM))、非易失性存儲(例如,只讀存儲器(ROM))、閃存、或任何組合。系統(tǒng)存儲器304可包括操作系統(tǒng)305和一個或多個編程模塊306,該編程模塊306適合于運行諸如客戶端應(yīng)用(例如,用戶代理/web瀏覽器108)或服務(wù)器應(yīng)用(例如,主機應(yīng)用112或服務(wù)應(yīng)用118)的應(yīng)用320。操作系統(tǒng)305例如可適合于控制計算設(shè)備300的操作。此外,本發(fā)明的實施例可結(jié)合圖形庫、其他操作系統(tǒng)、或任何其他應(yīng)用程序來實踐,并且不限于任何特定應(yīng)用或系統(tǒng)。該基本配置在圖3中由虛線308內(nèi)的那些組件示出。計算設(shè)備300可具有附加特征或功能。例如,計算設(shè)備300還可包括附加數(shù)據(jù)存儲設(shè)備(可移動和/或不可移動),例如磁盤、光盤或磁帶。這些附加存儲在圖3中由可移動存儲設(shè)備309和不可移動存儲設(shè)備310示出。如上所述,可在系統(tǒng)存儲器304中存儲多個程序模塊和數(shù)據(jù)文件。當(dāng)在處理單元302上執(zhí)行時,編程模塊306(諸如用戶代理108、主機應(yīng)用112、或服務(wù)應(yīng)用118)可執(zhí)行過程,所述過程包括例如圖2A到2E中示出的方法的各階段中的一個或多個。上述過程是一示例,且處理單元302可執(zhí)行其他過程。根據(jù)本發(fā)明的實施例可使用的其他編程模塊可包括電子郵件和聯(lián)系人應(yīng)用、文字處理應(yīng)用、電子表格應(yīng)用、數(shù)據(jù)庫應(yīng)用、幻燈片演示應(yīng)用、繪圖或計算機輔助應(yīng)用等。一般而言,根據(jù)本發(fā)明的實施例,程序模塊可包括可執(zhí)行特定任務(wù)或可實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其他類型的結(jié)構(gòu)。此外,本發(fā)明的實施例可用其他計算機系統(tǒng)配置來實踐,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)或可編程消費電子產(chǎn)品、小型機、大型計算機等。本發(fā)明的實施例還可在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實踐。在分布式計算環(huán)境中,程序模塊可位于本地和遠程存儲器存儲設(shè)備兩者中。此外,本發(fā)明的實施例可在包括分立電子元件的電路、包含邏輯門的封裝或集成電子芯片、利用微處理器的電路、或在包含電子元件或微處理器的單個芯片上實踐。例如,可以通過片上系統(tǒng)(SOC)來實施本發(fā)明的各實施例,其中,可以將圖3中示出的每個或許多組件集成到單個集成電路上。這樣的SOC設(shè)備可包括一個或多個處理單元、圖形單元、通信單元、系統(tǒng)虛擬化單元以及各種應(yīng)用功能,所有這些都被集成到(或“燒錄到”)芯片基板上作為單個集成電路。當(dāng)通過SOC操作時,在此所述的關(guān)于用戶代理108、主機應(yīng)用112、或服務(wù)應(yīng)用118的功能可以通過在單個集成電路(芯片)上與計算設(shè)備300的其它組件集成在一起的專用邏輯來操作。本發(fā)明的實施例還可使用能夠執(zhí)行諸如例如,AND(與)、0R(或)和NOT(非)的邏輯運算的其他技術(shù)來實踐,包括但不限于,機械、光學(xué)、流體和量子技術(shù)。另外,本發(fā)明的實施例可在通用計算機或任何其他電路或系統(tǒng)中實踐。例如,本發(fā)明的實施例可被實現(xiàn)為計算機過程(方法)、計算系統(tǒng)、或諸如計算機程序產(chǎn)品或計算機可讀介質(zhì)之類的制品。計算機程序產(chǎn)品可以是計算機系統(tǒng)可讀并對用于執(zhí)行計算機過程的指令的計算機程序編碼的計算機存儲介質(zhì)。本文所使用的術(shù)語計算機可讀介質(zhì)可包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器304、可移動存儲設(shè)備309和不可移動存儲設(shè)備310都是計算機存儲介質(zhì)(即,存儲器存儲)的示例。計算機存儲介質(zhì)可以包括,但不限于,RAM,ROM,電可擦除只讀存儲器(EEPR0M)、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或可用于存儲信息且可以由計算設(shè)備300訪問的任何其它介質(zhì)。任何這樣的計算機存儲介質(zhì)都可以是計算設(shè)備300的一部分。計算設(shè)備300還可具有一個或多個輸入設(shè)備312,諸如鍵盤、鼠標、筆、聲音輸入設(shè)備、觸摸輸入設(shè)備等。還可包括輸出設(shè)備314,諸如顯示器、揚聲器、打印機等。上述設(shè)備是示例,并且可使用其他設(shè)備。本文所使用的術(shù)語計算機可讀介質(zhì)還可包括通信介質(zhì)。通信媒介可由諸如載波或其他傳輸機制的已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)來體現(xiàn),并且包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”可以描述以對該信號中的信息進行編碼的方式設(shè)定或者改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及諸如聲學(xué)、射頻(RF)、紅外線和其他無線介質(zhì)等無線介質(zhì)。計算設(shè)備300可包括允許與其他計算設(shè)備318進行通信的一個或多個通信連接316。合適的通信連接316的示例包括但不限于RF發(fā)射機、接收機和/或收發(fā)機電路;通用串行總線(USB)、并行或串行端口、以及適用于與適用的計算機可讀介質(zhì)一起使用的其他連接。圖4A和4B示出可用來實施本發(fā)明的各實施例的移動計算環(huán)境400,例如移動電話、智能電話、平板個人計算機、膝上型計算機等。參考圖4A,示出了用于實現(xiàn)各實施例的示例性移動計算設(shè)備400。在一基本配置中,移動計算設(shè)備400是具有輸入元件和輸出元件兩者的手持式計算機。移動計算設(shè)備400通常包括顯示器405以及允許用戶將信息輸入到移動計算設(shè)備400中的一個或多個輸入按鈕410。移動計算設(shè)備400的顯示器405也可充當(dāng)輸入設(shè)備(如觸摸屏顯示器)。如果包括,則可任選的側(cè)輸入元件415允許進一步的用戶輸入。側(cè)輸入元件415可以是旋轉(zhuǎn)開關(guān)、按鈕、或任何其他類型的手動輸入元件。在替代實施例中,移動計算設(shè)備400可結(jié)合更多或更少的輸入元件。例如,在某些實施例中,顯示器405可以不是觸摸屏。在又一替代實施例中,移動計算設(shè)備400是諸如蜂窩電話之類的便攜式電話系統(tǒng)。移動計算設(shè)備400還可包括可選的小鍵盤435。可選的小鍵盤435可以是物理小鍵盤或者在觸摸屏顯示器上生成的“軟”小鍵盤。在各種實施例中,輸出元件包括用于示出圖形用戶界面(⑶I)的顯示器405、可視指示器420(如發(fā)光二極管)、和/或音頻換能器425(如揚聲器)。在某些實施例中,移動計算設(shè)備400結(jié)合振動換能器來向用戶提供觸覺反饋。在又一實施例中,移動計算設(shè)備400結(jié)合諸如音頻輸入(如麥克風(fēng)插孔)、音頻輸出(如耳機插孔)、以及視頻輸出(如HDMI端口)之類的輸入和/或輸出端口,用于將信號發(fā)送到外部設(shè)備或從外部設(shè)備接收信號。盡管此處組合移動計算設(shè)備400來描述,但在替代實施例中,本發(fā)明還可組合任何數(shù)量的計算機系統(tǒng)來被使用,如在臺式環(huán)境、膝上型或筆記本計算機系統(tǒng)、多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計算機、大型計算機等。本發(fā)明的實施例也可在分布式計算環(huán)境中實踐,其中任務(wù)由分布式計算環(huán)境中通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備來執(zhí)行;程序可位于本機和遠程存儲器存儲設(shè)備中??偠灾?,具有多個環(huán)境傳感器、向用戶提供通知的多個輸出元件和多個通知事件類型的任何計算機系統(tǒng)可結(jié)合本發(fā)明的實施例。圖4B是示出移動計算設(shè)備的一個實施例的架構(gòu)的框圖。S卩,移動計算設(shè)備400可結(jié)合系統(tǒng)(即架構(gòu))402以實現(xiàn)某些實施例。在一個實施例中,系統(tǒng)402被實現(xiàn)為能夠運行一個或多個應(yīng)用(如瀏覽器、電子郵件、日歷、聯(lián)系人管理器、消息收發(fā)客戶端、游戲、以及媒體客戶端/播放器)的“智能電話”。在某些實施例中,系統(tǒng)402被集成為計算設(shè)備,諸如集成的個人數(shù)字助理(PDA)和無線電話。一個或多個應(yīng)用程序466可被加載到存儲器462中并在操作系統(tǒng)464上或與操作系統(tǒng)464相關(guān)聯(lián)地運行。應(yīng)用程序的示例包括電話撥號程序、電子郵件程序、個人信息管理(ΡΠΟ程序、文字處理程序、電子表格程序、因特網(wǎng)瀏覽器程序、消息通信程序等等。系統(tǒng)402還包括存儲器462內(nèi)的非易失性存儲區(qū)468。非易失性存儲區(qū)468可被用于存儲在系統(tǒng)402斷電時不會丟失的持久信息。應(yīng)用程序466可使用信息并將信息存儲在非易失性存儲區(qū)468中,如電子郵件應(yīng)用使用的電子郵件或其他消息等。同步應(yīng)用(未示出)也駐留于系統(tǒng)402上且被編程為與駐留在主機計算機上的對應(yīng)的同步應(yīng)用交互,以保持非易失性存儲區(qū)468中存儲的信息與主機計算機處存儲的相應(yīng)信息同步。如應(yīng)理解的,其他應(yīng)用可被加載到存儲器462中并在移動計算設(shè)備400上運行,包括此處所述的用戶代理108、主機應(yīng)用112、或服務(wù)應(yīng)用118。系統(tǒng)402具有可被實現(xiàn)為一個或多個電池的電源470。電源470還可包括外部功率源,如補充電池或?qū)﹄姵刂匦鲁潆姷腁C適配器或加電對接托架。系統(tǒng)402還可包括執(zhí)行發(fā)射和接收無線電頻率通信的功能的無線電472。無線電472通過通信運營商或服務(wù)供應(yīng)商方便了系統(tǒng)402與“外部世界”之間的無線連接。來往無線電472的傳輸是在操作系統(tǒng)464的控制下進行的。換言之,無線電472接收的通信可通過操作系統(tǒng)464傳播到應(yīng)用程序466,反之亦然。無線電472允許系統(tǒng)402例如通過網(wǎng)絡(luò)與其他計算設(shè)備通信。無線電472是通信介質(zhì)的一個示例。通信介質(zhì)通常由諸如載波或其他傳輸機制之類的已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)來體現(xiàn),并且包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”是指具有以在信號中編碼信息的方式被設(shè)定或改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。如此處所使用的術(shù)語“計算機可讀介質(zhì)”包括存儲介質(zhì)和通信介質(zhì)兩者。系統(tǒng)402的該實施例使用可用于提供可視通知的可視指示器420和/或通過音頻換能器425來產(chǎn)生音頻通知的音頻接口474來提供通知。在所示實施例中,可視指示器420是發(fā)光二極管(LED),而音頻換能器425是揚聲器。這些設(shè)備可直接耦合到電源470,使得當(dāng)被激活時,即使為了節(jié)省電池功率而可能關(guān)閉處理器460和其它組件,它們也保留一段由通知機制指示的保持通電時間。LED可被編程為無限地保持通電,直到用戶采取動作指示該設(shè)備的通電狀態(tài)。音頻接口474用于向用戶提供聽覺信號并從用戶接受聽覺信號。例如,除了被耦合到音頻換能器425之外,音頻接口474還可被耦合到話筒來接收可聽輸入,例如便于電話通話。根據(jù)各本發(fā)明的各實施例,話筒也可充當(dāng)音頻傳感器來便于對通知的控制,如下文將描述的。系統(tǒng)402可進一步包括允許板載相機430的操作來記錄靜止圖像、視頻流等的視頻接口476。實現(xiàn)系統(tǒng)400的移動計算設(shè)備402可具有附加特征或功能。例如,移動計算設(shè)備400還可包括附加數(shù)據(jù)存儲設(shè)備(可移動和/或不可移動),例如磁盤、光盤或磁帶。這種附加存儲設(shè)備在圖4B中用非易失性存儲區(qū)468示出。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。移動計算設(shè)備400生成或捕捉的且經(jīng)系統(tǒng)402存儲的數(shù)據(jù)/信息可如上所述本地存儲在移動計算設(shè)備400上,或數(shù)據(jù)可被存儲在可由設(shè)備通過無線電472或通過移動計算設(shè)備400和與移動計算設(shè)備400相關(guān)聯(lián)的一分開的計算設(shè)備之間的有線連接訪問的任何數(shù)量的存儲介質(zhì)上,該計算設(shè)備如例如因特網(wǎng)之類的分布式計算網(wǎng)絡(luò)中的服務(wù)器計算機。如應(yīng)理解的,此類數(shù)據(jù)/信息可經(jīng)移動計算設(shè)備400、經(jīng)無線電472或經(jīng)分布式計算網(wǎng)絡(luò)來被訪問。類似地,這些數(shù)據(jù)/信息可根據(jù)已知的數(shù)據(jù)/信息傳送和存儲手段來容易地在計算設(shè)備之間傳送以供存儲和使用,這些手段包括電子郵件和協(xié)作數(shù)據(jù)/信息共享系統(tǒng)。圖5示出用于向一個或多個客戶端設(shè)備提供如上所述的用戶代理108、主機應(yīng)用112、和/或服務(wù)應(yīng)用118的系統(tǒng)的體系結(jié)構(gòu)的一個實施例。與主機應(yīng)用112和/或服務(wù)應(yīng)用118相關(guān)聯(lián)地開發(fā)、交互或編輯的內(nèi)容可被存儲在不同通信信道或其他存儲類型中。例如,各種文檔可使用目錄服務(wù)522、web門戶524、郵箱服務(wù)526、即時消息存儲528或社交網(wǎng)站530來存儲。如在此所述,主機應(yīng)用112和/或服務(wù)應(yīng)用118可使用用于允許數(shù)據(jù)利用的這些類型的系統(tǒng)等中的任一個。服務(wù)器520可為客戶端提供主機應(yīng)用112和/或服務(wù)應(yīng)用118。作為一個示例,服務(wù)器520可以是通過web來提供主機應(yīng)用112和/或服務(wù)應(yīng)用118的web服務(wù)器。服務(wù)器520可通過網(wǎng)絡(luò)515向客戶端提供web上的主機應(yīng)用112和/或服務(wù)應(yīng)用118。作為示例,客戶端計算設(shè)備110可被實現(xiàn)為計算設(shè)備300并被具體化在個人計算機110a、平板計算設(shè)備IlOb和/或移動計算設(shè)備IlOc(如智能電話)中??蛻舳擞嬎阍O(shè)備110的這些實施例中的任一個可從存儲516獲得內(nèi)容。以上參考例如根據(jù)本發(fā)明的實施例的方法、系統(tǒng)和計算機程序產(chǎn)品的框圖和/或操作示圖描述了本發(fā)明的實施例??蛑兴⒚鞯母鞴δ?動作可按不同于任何流程圖所示的次序出現(xiàn)。例如,取決于所涉及的功能/動作,連續(xù)示出的兩個框?qū)嶋H上可基本同時執(zhí)行,或者這些框有時可按相反的次序執(zhí)行。盡管已描述了本發(fā)明的特定實施例,但也可能存在其他實施例。此外,雖然本發(fā)明的實施例被描述為與存儲在存儲器和其他存儲介質(zhì)中的數(shù)據(jù)相關(guān)聯(lián),但是數(shù)據(jù)還可被存儲在其他類型的計算機可讀介質(zhì)上或從其讀取,諸如輔助存儲設(shè)備(像硬盤、軟盤、或CD-ROM)、來自因特網(wǎng)的載波、或其他形式的RAM或ROM。此外,所公開的方法的各步驟可以任何方式修改,包括通過對各步驟重新排序和/或插入或刪除階段,而不背離本發(fā)明。在各種實施例中,用于在構(gòu)成本發(fā)明的計算設(shè)備之間進行通信的網(wǎng)絡(luò)的類型包括但不限于互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、以及虛擬專用網(wǎng)絡(luò)(VPN)。在本申請中,網(wǎng)絡(luò)包括企業(yè)網(wǎng)絡(luò)和客戶端計算設(shè)備用來訪問企業(yè)網(wǎng)絡(luò)的網(wǎng)絡(luò)(即客戶端網(wǎng)絡(luò))。在一個實施例中,客戶端網(wǎng)絡(luò)是企業(yè)網(wǎng)絡(luò)的一部分。在另一實施例中,客戶端網(wǎng)絡(luò)是通過外部可用的接入點(如網(wǎng)關(guān)、遠程訪問協(xié)議、或公共或?qū)S没ヂ?lián)網(wǎng)地址)來訪問企業(yè)網(wǎng)絡(luò)的一分開的網(wǎng)絡(luò)。本申請中提供的一個或多個實施例的描述和說明不旨在以任何方式限制或約束如權(quán)利要求所要求保護的發(fā)明范圍。本申請中提供的實施例、示例和細節(jié)被認為是足以傳達所有權(quán),且使得他人能夠制作并使用所要求保護的發(fā)明的最佳模式。所要求保護的發(fā)明不應(yīng)被理解為限制于本申請中所提供的任何實施例、示例或細節(jié)。不管是以組合的方式還是分開的方式示出和描述,各種特征(結(jié)構(gòu)上的和方法邏輯上的)旨在被選擇性地包括或忽略,以產(chǎn)生具有特定的特征集的實施例。在被提供本申請的描述和說明的情況下,本領(lǐng)域的技術(shù)人員能夠想象到落在所要求保護的發(fā)明的更寬泛方面以及本申請中所具體化的一般發(fā)明概念的精神內(nèi)的替代實施例并不背離該更寬泛的范圍。權(quán)利要求1.一種用于在主機和在所選外部應(yīng)用服務(wù)器上運行的服務(wù)應(yīng)用之間安全通信以允許所述服務(wù)應(yīng)用訪問所述主機所維護的文檔的方法,所述方法包含以下步驟通過發(fā)出針對與所述服務(wù)應(yīng)用相關(guān)聯(lián)的接入點地址的動作請求來發(fā)起與所選外部應(yīng)用服務(wù)器的事務(wù);向所述所選外部應(yīng)用服務(wù)器提供訪問令牌和文檔標識符以供在完成所述動作請求時使用;接收元數(shù)據(jù)請求,所述元數(shù)據(jù)請求包括所述訪問令牌和所述文檔標識符;在對所述元數(shù)據(jù)請求進行響應(yīng)之前確認所述訪問令牌;當(dāng)所述訪問令牌有效時基于所述動作請求發(fā)送元數(shù)據(jù)響應(yīng),所述元數(shù)據(jù)響應(yīng)包括所選擇的元數(shù)據(jù);接收內(nèi)容請求,所述內(nèi)容請求包括所述訪問令牌和所述文檔標識符;在對所述內(nèi)容請求進行響應(yīng)之前確認所述訪問令牌;以及當(dāng)所述訪問令牌有效時發(fā)送內(nèi)容響應(yīng),所述內(nèi)容響應(yīng)包括來自所述文檔標識符所標識的文檔的內(nèi)容。2.如權(quán)利要求I所述的方法,其特征在于,還包括以下步驟發(fā)起與所述所選外部應(yīng)用服務(wù)器的通信以獲得證據(jù)密鑰,所述證據(jù)密鑰適于確認所述所選外部應(yīng)用服務(wù)器所生成的證據(jù)簽名,所述證據(jù)簽名唯一標識所述所選外部應(yīng)用服務(wù)器;以及響應(yīng)于所述通信接收所述證據(jù)密鑰。3.如權(quán)利要求2所述的方法,其特征在于,還包括以下步驟在對所述元數(shù)據(jù)請求進行響應(yīng)之前驗證所述元數(shù)據(jù)請求是從所述所選外部應(yīng)用服務(wù)器發(fā)送的;以及在對所述內(nèi)容請求進行響應(yīng)之前驗證所述內(nèi)容請求是從所述所選外部應(yīng)用服務(wù)器發(fā)送的。4.如權(quán)利要求I所述的方法,其特征在于,發(fā)起與所述所選外部應(yīng)用服務(wù)器的事務(wù)的所述步驟是響應(yīng)于編程地指示所述主機發(fā)起所述事務(wù)而不將用戶代理導(dǎo)航到所述主機上的端點地址的步驟而發(fā)生。5.—種包含計算機可執(zhí)行指令的計算機可讀介質(zhì),所述計算機可執(zhí)行指令在被計算機平臺執(zhí)行時執(zhí)行一種在主機和在所選外部應(yīng)用服務(wù)器上運行的服務(wù)應(yīng)用之間安全通信以允許所述服務(wù)應(yīng)用訪問所述主機所維護的文檔的方法,所述方法包含以下步驟響應(yīng)于來自主機的發(fā)現(xiàn)請求而向所述主機提供唯一標識外部應(yīng)用服務(wù)器的證據(jù)密鑰;在所述外部應(yīng)用服務(wù)器處接收動作、訪問令牌、元數(shù)據(jù)地址、以及文檔標識符;響應(yīng)于所述動作的接收,調(diào)用所述外部應(yīng)用服務(wù)器上的所述服務(wù)應(yīng)用;向所述元數(shù)據(jù)地址發(fā)送元數(shù)據(jù)請求,所述元數(shù)據(jù)請求包括使用所述證據(jù)密鑰、所述訪問令牌、以及所述文檔標識符生成的證據(jù)簽名;接收元數(shù)據(jù)響應(yīng),所述元數(shù)據(jù)響應(yīng)包括與所述文檔標識符所標識的文檔相關(guān)的信息,所述信息是基于所述動作來選擇的;向文檔訪問地址發(fā)送文檔內(nèi)容請求,所述文檔內(nèi)容請求包括所述證據(jù)簽名、所述訪問令牌、以及所述文檔標識符;以及接收內(nèi)容響應(yīng),所述內(nèi)容響應(yīng)包括所述文檔的內(nèi)容。6.一種用于在主機和在外部應(yīng)用服務(wù)器上運行的服務(wù)應(yīng)用之間安全通信以允許所述服務(wù)應(yīng)用訪問所述主機所維護的文檔的方法,所述方法包含以下步驟發(fā)起與所選外部應(yīng)用服務(wù)器的通信以獲得唯一標識所選外部應(yīng)用服務(wù)器的證據(jù)密鑰,所述證據(jù)密鑰適于確認所述所選外部應(yīng)用服務(wù)器生成的證據(jù)簽名;從所述所選外部應(yīng)用服務(wù)器接收所述證據(jù)密鑰;通過發(fā)出針對與所述服務(wù)應(yīng)用相關(guān)聯(lián)的接入點的動作請求來發(fā)起與所述外部應(yīng)用服務(wù)器的事務(wù);向所述所選外部應(yīng)用服務(wù)器提供訪問令牌和文檔標識符以供在完成所述動作請求時使用;在向所述所選外部應(yīng)用服務(wù)器提供所述訪問令牌和文檔標識符的所述步驟之前,生成所述訪問令牌;接收元數(shù)據(jù)請求,所述元數(shù)據(jù)請求包括證據(jù)簽名、所述訪問令牌、以及所述文檔標識符,所述證據(jù)簽名被設(shè)計成使用所述證據(jù)密鑰來確認;在對所述元數(shù)據(jù)請求進行響應(yīng)之前,使用所述證據(jù)密鑰來確認所述證據(jù)簽名;在對所述元數(shù)據(jù)請求進行響應(yīng)之前確認所述訪問令牌;當(dāng)所述證據(jù)簽名和所述訪問令牌有效時基于所述動作請求發(fā)送元數(shù)據(jù)響應(yīng),所述元數(shù)據(jù)響應(yīng)包括所選擇的元數(shù)據(jù);接收內(nèi)容請求,所述內(nèi)容請求包括所述證據(jù)簽名、所述訪問令牌和所述文檔標識符;在對所述內(nèi)容請求進行響應(yīng)之前確認所述證據(jù)簽名;在對所述內(nèi)容請求進行響應(yīng)之前確認所述訪問令牌;以及當(dāng)所述證據(jù)簽名和所述訪問令牌有效時發(fā)送內(nèi)容響應(yīng),所述內(nèi)容響應(yīng)包括來自所述文檔標識符所標識的文檔的內(nèi)容。7.如權(quán)利要求6所述的方法,其特征在于,還包括消費一組方法調(diào)用的聲明的步驟,每一方法調(diào)用是使用接口的約定來聲明的,所述一組方法調(diào)用包括用于獲得關(guān)于所述文檔的元數(shù)據(jù)的方法調(diào)用以及用于獲得所述文檔的內(nèi)容的方法調(diào)用。8.如權(quán)利要求7所述的方法,其特征在于,所述一組方法調(diào)用還包括從一個方法調(diào)用分組中選擇的一個或多個方法調(diào)用,所述方法調(diào)用分組由用于獲得關(guān)于文件夾的元數(shù)據(jù)、保存所述文檔、保存所述文檔的副本、枚舉文件夾的內(nèi)容、刪除文件、鎖定文件、解鎖文件、續(xù)訂對文件的鎖定、解鎖并重新鎖定文件、執(zhí)行本地虛擬應(yīng)用、以及執(zhí)行遠程虛擬應(yīng)用的方法調(diào)用構(gòu)成。9.如權(quán)利要求7所述的方法,其特征在于,對用于獲得關(guān)于所述文檔的元數(shù)據(jù)的所述方法調(diào)用的所述元數(shù)據(jù)響應(yīng)包括從由文件版本標識符、基本文件名、所有者標識符、文件大小值以及文件散列碼構(gòu)成的分組中選擇的元數(shù)據(jù)。10.如權(quán)利要求9所述的方法,其特征在于,對用于獲得關(guān)于所述文檔的元數(shù)據(jù)的所述方法調(diào)用的所述元數(shù)據(jù)響應(yīng)還包括從以下各項構(gòu)成的分組中選擇的元數(shù)據(jù)用于訪問所述主機所提供的文檔的客戶端URL、用于觸發(fā)用戶代理的本機下載功能的下載URL、在關(guān)閉文檔時使用的關(guān)閉URL、用于訪問所述主機所提供的查看頁面的主機查看URL、用于訪問所述主機提供的編輯頁面的主機編輯URL、用戶寫許可標志、只讀標志、公開標志、隱藏公式標志、更新支持標志、鎖定支持標志、虛擬應(yīng)用支持標志、各器支持標志、用于直接訪問文檔的文件URL、隱私URL、以及使用條款URL。全文摘要本發(fā)明涉及主機不可知集成和互操作系統(tǒng)。主機不可知集成和互操作系統(tǒng)。該主機不可知集成和互操作系統(tǒng)包括開放平臺接口和相關(guān)聯(lián)的約定,所述開放平臺接口和相關(guān)聯(lián)的約定定義主機和運行在外部應(yīng)用服務(wù)器上的服務(wù)應(yīng)用的角色和它們之間的直接操作,并允許主機發(fā)現(xiàn)并集成由服務(wù)應(yīng)用所提供的功能。開放平臺接口利用有限數(shù)量的容易實現(xiàn)的語義方法,所述方法允許主機暴露并集成使用來自標準用戶代理的服務(wù)應(yīng)用的主機支持的功能來查看、編輯、或以其他方式操縱文檔的能力。該主機不可知集成和互操作系統(tǒng)使用訪問令牌在主機處處理用戶認證,并且使用輕量但是安全的證據(jù)密鑰系統(tǒng)來建立主機和外部應(yīng)用服務(wù)器之間的信任關(guān)系。文檔編號H04L29/06GK102902934SQ20121036418公開日2013年1月30日申請日期2012年9月26日優(yōu)先權(quán)日2011年9月27日發(fā)明者M·J·魯倫,K·J·小尤哈斯,M·T·菲爾茲,M·阿巴迪,N·M·西蒙斯,M·C·拉姆塞,R·A·馬雷諾,T·克拉夫特,C·布勞薩德,D·明,A·V·沃匹洛夫,C·V·漢森,Y·彭,C·D·肖,S·S·卡珀申請人:微軟公司