專利名稱:用于在應用程序的預定數(shù)量的執(zhí)行方法之間選擇的方法
技術領域:
本發(fā)明涉及用于執(zhí)行應用程序的方法,具體而言,涉及用于在應用程序的預定數(shù)量的執(zhí)行方法之間進行選擇的方法。
背景技術:
現(xiàn)代企業(yè)環(huán)境的管理員在提供對應用程序的訪問時可能面對很多挑戰(zhàn)。其中的一項挑戰(zhàn)涉及向最終執(zhí)行應用的環(huán)境提供并維護(即更新)應用的問題,因為大量的機器具有不同的執(zhí)行環(huán)境,所述的不同的執(zhí)行環(huán)境又具有對多個公司網(wǎng)的不同類型的訪問。第二項挑戰(zhàn)涉及在目標機上提供某種環(huán)境,從而在不干擾其他可能存在抵觸要求的應用程序的情況下實現(xiàn)應用程序的執(zhí)行,或者使應用程序能夠在并非被設計為運行所述應用程序的環(huán)境下得到執(zhí)行(即,使單用戶應用在多用戶操作系統(tǒng)中隔離運行)。大量應用程序的提供和更新給信息技術(IT)部門帶來了很多困擾。一種困擾包括怎樣為不同的執(zhí)行環(huán)境提供應用,所述執(zhí)行環(huán)境包括個人計算機(執(zhí)行很多種不同類型的操作系統(tǒng))、服務器、刀片機或虛擬機。另一種困擾包括如何更新已經(jīng)交付的應用。對于更新頻繁的企業(yè)應用而言,在不同類型的目標機上安裝應用的升級版本可能即昂貴又耗時。另一項挑戰(zhàn)是針對訪問請求進行集中開發(fā)和應用的企業(yè)策略。典型的企業(yè)環(huán)境中的另一項困擾是在采用了大量的具有不同要求的應用的環(huán)境中應用之間的兼容性。IT部門在向支持不同執(zhí)行環(huán)境的目標機部署應用程序時,以及在每一應用程序具有不同的、可能存在抵觸的安裝要求的情況下執(zhí)行可用應用程序的不同子集時可能面臨很多挑戰(zhàn)。確保與各種企業(yè)策略的順應性又給典型企業(yè)環(huán)境的管理員帶來了更多的困擾。針對各個應用,對目標機上的具體應用程序進行評估和授權可能是不切實際的。我們希望能夠獲得一種集中式系統(tǒng),其能夠在安裝或執(zhí)行具體的應用程序之前實現(xiàn)目標機的自動評估,以判斷與(例如)安全策略或?qū)@褂迷S可的順應性。還希望獲得這樣一種方法,其能將應用一次性安裝到代表性目標機上,并且夠響應于具體目標機的應用訪問請求將應用交付給各種目標環(huán)境。我們還希望使策略的集中應用能夠提供對應用的水平不一的訪問,包括響應于應用程序的要求或本地機的特征來選擇執(zhí)行應用的不同方法。
發(fā)明內(nèi)容
本發(fā)明涉及一種用于在應用程序的預定數(shù)量執(zhí)行方法之間進行選擇的方法。在一個方面中,本發(fā)明涉及一種通過遠程機進行選擇的方法,一種執(zhí)行應用程序的方法。接收與本地機關聯(lián)的信任狀(credential)。響應于所接收的信任狀提供本地機可用的多個應用的枚舉。接收請求以執(zhí)行被枚舉的應用。響應于策略選擇執(zhí)行被枚舉的應用的預定數(shù)量的方法之一,所述預定數(shù)量的方法包括用于所述被枚舉的應用的應用流傳輸?shù)姆椒?。在一個實施例中,所述方法包括選擇將所述被枚舉的應用流傳輸?shù)剿霰镜貦C的方法。在另一個實施例中,所述方法包括選擇用于將被枚舉的應用流傳輸?shù)竭h程機的方法,在遠程機上執(zhí)行被枚舉的應用以及向本地機提供在遠程機上執(zhí)行被枚舉的應用而產(chǎn)生的應用輸出數(shù)據(jù)。在另一個方面中,用于在本地對文件元數(shù)據(jù)請求做出響應而無須從遠程位置下載文件的方法包括:從遠程機接收表示所述遠程機存儲的應用程序的目錄結構以及與包括所存儲應用程序的每個文件相關聯(lián)的元數(shù)據(jù)。存儲所述目錄和元數(shù)據(jù)。接收至少一個訪問與目錄結構中特定文件相關聯(lián)的元數(shù)據(jù)的請求。使用所存儲的元數(shù)據(jù)以對至少一個請求做出響應。在一個實施例中,接收枚舉與本地應用程序相關聯(lián)的目錄結構的請求。用所存儲的目錄結構對枚舉請求做出響應。在另一個實施例中,元數(shù)據(jù)包括文件的文件名和文件的別名(alternate name)之間的映射。在另一個實施例中,利用所接收的元數(shù)據(jù)滿足標識目錄結構中的根節(jié)點的請求。在又一個實施例中,接收確定本地是否有包括所存儲的應用程序的文件拷貝的請求。訪問所存儲的元數(shù)據(jù)并給出偽裝指示,表示本地沒有文件拷貝。 在又一個方面中,用于在本地對文件元數(shù)據(jù)請求做出響應而無須從遠程位置下載文件的系統(tǒng)包括目錄結構、高速緩沖存儲器元件和文件系統(tǒng)過濾器驅(qū)動程序。目錄結構標識與至少一個應用程序相關聯(lián)的多個文件并包括與所述多個文件中的至少一個相關聯(lián)的文件元數(shù)據(jù),所述多個文件中的至少一個駐留在遠程機上。高速緩沖存儲器元件存儲目錄結構。文件系統(tǒng)過濾器驅(qū)動程序攔截訪問與至少一個遠程存儲的文件相關聯(lián)的元數(shù)據(jù)的請求,訪問高速緩沖存儲器元件并利用所存儲的目錄結構對至少一個請求做出響應。在一個實施例中,所述目錄結構包括與至少一個應用程序相關聯(lián)的多個文件,所述多個文件駐留在遠程機上。在另一個實施例中,文件元數(shù)據(jù)包括用于對標識目錄結構中的根節(jié)點的請求做出響應的信息。在又一個方面中,用于訪問與應用相關聯(lián)的目錄結構中的文件的方法包括攔截應用訪問文件的請求的步驟。將該請求重定向到第一隔離環(huán)境。做出第一隔離環(huán)境中不存在所請求文件的判斷。響應于在包括駐留在遠程機上的多個應用文件的目錄結構枚舉中標識該文件的判斷,將所述請求重定向到第二隔離環(huán)境。響應于所述第二隔離環(huán)境不含所述文件且在枚舉中標識該文件的判斷,從文件服務器檢索所請求的文件。在一個實施例中,請求訪問文件的應用是能夠接收流傳輸?shù)膽梦募膽?。在另一個實施例中,請求訪問文件的應用是本地機的用戶所請求的應用。在又一個實施例中,在第一隔離環(huán)境中存儲所請求的文件。在又一個實施例中,在第二隔離環(huán)境中存儲所請求的文件。在一些實施例中,攔截應用訪問可執(zhí)行文件的請求。在其他實施例中,攔截應用訪問文件的請求,在本地機上執(zhí)行所述應用的一部分。在一個實施例中,攔截由第三隔離環(huán)境中執(zhí)行的另一應用提出的請求。響應于在所述枚舉中枚舉該文件且所述第二隔離環(huán)境不含所述文件的判斷,將所述請求重定向到所述第二隔離環(huán)境。第二隔離環(huán)境為應用提供對文件的訪問。在另一個實施例中,該文件為可執(zhí)行文件。在一些實施例中,多個應用文件包括第二應用。在其他實施例中,該應用是應用流傳輸客戶端。在其他實施例中,應用流傳輸客戶端請求并執(zhí)行可執(zhí)行文件以在本地機上執(zhí)行第二應用的實例。
在一個方面中,一種用于訪問與應用相關聯(lián)的目錄結構中的文件的系統(tǒng)包括第一隔離環(huán)境、第二隔離環(huán)境、過濾器驅(qū)動程序和收發(fā)器。在第一隔離環(huán)境中,應用執(zhí)行并請求訪問文件。第二隔離環(huán)境存儲與安裝在遠程機上的多個應用文件相關聯(lián)的目錄結構的枚舉。過濾器驅(qū)動程序響應于在目錄結構枚舉中標識該文件的判斷,攔截訪問文件的請求,將該請求重定向到第一隔離環(huán)境,判定所請求的文件不存在于第一隔離環(huán)境中并將該請求重定向到第二隔離環(huán)境。與所述過濾器驅(qū)動程序通信的收發(fā)器,所述收發(fā)器響應于所述過濾器驅(qū)動程序做出的所述第二隔離環(huán)境不含所述文件且在所述枚舉中標識該文件的判斷,向文件服務器發(fā)送所述重定向的請求并響應于所述請求接收包括所請求的文件的流。在一個方面中,一種用于由本地機訪問包括應用程序的多個文件的方法包括本地機接收包括訪問信息的文件的步驟,該訪問信息用于訪問多個應用文件并執(zhí)行能夠接收應用流的第一客戶端。響應于所述文件檢索所述多個應用文件的標識。響應于所述文件檢索執(zhí)行所述多個應用所需的至少一個特征。做出本地機是否包括至少一個特征的判斷。響應于所述本地機缺少所述至少一個特征的判斷執(zhí)行第二客戶端,所述第二客戶端請求在遠程機上執(zhí)行所述多個應用文件。在一個實施例中,響應于所檢索的多個應用文件的標識檢索至少一個特征。在另一個實施例中,響應于對本地機的評估做出本地機是否包括至少一個特征的判斷。在又一個實施例中,本地機評估本地機。在又一個實施例中,響應于被評估的本地機缺少接收多個應用文件以在本地執(zhí)行的授權這一判斷,做出決定,執(zhí)行第二客戶端而非第一客戶端。在另一個方面中,一種用于訪問包括應用程序的多個文件的系統(tǒng)包括文件、第一客戶端和第二客戶端。該文件包括用于訪問多個應用文件的訪問信息。能夠接收應用流的第一客戶端接收所述文件、響應于所述文件檢索多個應用文件的標識和執(zhí)行所述多個應用文件所需的至少一個特征,并判斷所述本地機是否包括所述至少一個特征。第二客戶端響應于所述第一客戶端做出的所述本地機缺少所述至少一個特征的判斷從第一客戶端接收該文件并請求在遠程機上執(zhí)行所述多個應用文件。在一個實施例中,第一客戶端評估本地機以判斷本地機是否包括至少一個特征。在另一個實施例中,第一客戶端向本地機采用策略以做出判斷。在又一個實施例中,第二客戶端接收在遠程機上執(zhí)行多個應用文件所產(chǎn)生的應用輸出數(shù)據(jù)。在又一個實施例中,第二客戶端包括在本地機上顯示從遠程機接收的應用輸出數(shù)據(jù)的功能。
通過下文的詳細說明和附圖,本發(fā)明的這些和其他方面將變得顯而易見,其中,所述附圖的作用在于對本發(fā)明進行舉例說明,而不是限制本發(fā)明,其中:
圖1A是示出了適于實現(xiàn)本發(fā)明的示范性實施例的環(huán)境的方框 圖1B和IC是示出了可以結合本發(fā)明使用的計算機的實施例的方框 圖1D是示出了利用本發(fā)明的服務器農(nóng)場(server farm)的實施例的方框 圖1E是示出了用于通過在web服務目錄中公布⑶I來提供可以為本地機所使用的多個應用程序的系統(tǒng)的一個實施例的方框 圖2是示出了選擇應用程序的執(zhí)行方法所采用的步驟的一個實施例的流程 圖3A是示出了本地機通過萬維網(wǎng)(World Wide Web)啟動執(zhí)行程序鄰域應用的一個實施例的方框 圖3B是示出了本地機利用web服務目錄訪問枚舉的應用程序所采取的步驟的一個實施例的流程 圖4A是為本地機提供對應用程序的基于策略的訪問的網(wǎng)絡實施例的方框 圖4B是示出了策略引擎更詳細實施例的方框 圖4C是示出了策略引擎基于所接收到的關于本地機的信息做出訪問控制決定所采取的步驟的一個實施例的流程 圖4D是示出了其中提供對多個應用會話的授權遠程訪問的計算機網(wǎng)絡實施例的方框
圖4E是示出了會話服務器將本地機與其相關應用會話連接起來所采取的步驟的一個實施例的流程 圖5是示出了會話服務器將客戶端節(jié)點與其相關應用會話連接起來所采取的步驟的一個實施例的流程 圖6是示出了包括管理服務、提供應用枚舉的遠程機的一個實施例的方框 圖7是示出了訪問包括應用程序的多個文件所采取的步驟的一個實施例的流程 圖8A是示出了在操作系統(tǒng)控制下運行的計算機的一個實施例的方框圖,該操作系統(tǒng)具有應用兼容性和應用交際性降低的問題;
圖8B是示出了具有應用兼容性和應用交際性降低的問題的多用戶計算機的方框圖;圖8C是示出了用于將過程與隔離范圍相關聯(lián)的方法中所采取的步驟的一個實施例的流程 圖9是示出了在執(zhí)行應用程序的方法中采取的步驟的一個實施例的流程 圖10是示出了駐留在遠程機上的多個應用文件的一個實施例的流程 圖11是示出了對與遠程存儲的文件相關的文件元數(shù)據(jù)的請求在本地做出響應的方法中采取的步驟的一個實施例的流程 圖12是示出了對與遠程存儲的文件相關的文件元數(shù)據(jù)的請求在本地做出響應的系統(tǒng)的一個實施例的方框 圖13是示出了用于訪問目錄結構中與本地執(zhí)行的應用程序相關的遠程文件的方法中采取的步驟的一個實施例的流程 圖14是示出了用于訪問與應用相關的目錄結構中的文件的系統(tǒng)的一個實施例的方框
圖15是包括許可管理子系統(tǒng)的遠程機的一個實施例的方框 圖16是示出了遠程機上的管理服務中的部件的一個實施例的方框 圖17是示出了從遠程機請求和維持許可所采取的步驟的一個實施例的流程 圖18是示出了可能與管理服務監(jiān)測的會話相關的狀態(tài)的一個實施例的方框 圖19是示出了包括兩個目標的程序包(package)的方框圖,每個目標包括多個包括應用的應用文件;
圖20是示出了用于無須重新引導操作系統(tǒng)來安裝應用程序的基于策略的方法中采取的步驟的一個實施例的流程 圖21是示出了用于無須重新引導操作系統(tǒng)來安裝應用程序的基于策略的方法中采取的步驟的一個實施例的流程 圖22是示出了枚舉腳本以在本地機上執(zhí)行的一個實施例的屏幕快照;
圖23是示出了包括打包機構(packaging mechanism)的系統(tǒng)實施例的方框圖,該打包機構將安裝程序執(zhí)行到隔離環(huán)境中;
圖24是示出了其中執(zhí)行安裝程序需要重新引導操作系統(tǒng)的環(huán)境中采取的步驟的一個實施例的流程 圖25是示出了打包機構向其上安裝應用程序的遠程機的一個實施例的方框圖;以及 圖26是示出了在應用隔離環(huán)境中安裝應用所采取的步驟的一個實施例的流程圖。
具體實施例方式本發(fā)明的示范性實施例適用于分布式連網(wǎng)環(huán)境,其中,本地機的用戶請求訪問存儲在遠程機上的應用。在討論本發(fā)明的細節(jié)之前,首先來討論一下可以采用本發(fā)明的示范性實施例的一些網(wǎng)絡環(huán)境。圖1A是示出了適于實現(xiàn)本發(fā)明的示范性實施例的環(huán)境的方框圖。本地機10或20的用戶能夠連接至遠程機,例如遠程機30、30’、30〃或30’’’(下文統(tǒng)稱為遠程機30)。盡管圖1A所示的實施例中僅示出了兩個本地機10和20,以及四個遠程機30,但是應當理解,對于這些部件中的任何一種或每一種,所述系統(tǒng)都可以提供多個。例如,在一個實施例中,所述系統(tǒng)可以包括多個邏輯分組的遠程機30,可以采用其中的一個或多個代表本地機10、20執(zhí)行應用。在這些實施例中,可以將遠程機的邏輯組稱為“服務器農(nóng)場(server farm)”,在圖1A中將其表示為農(nóng)場38。在一些實施例中,遠程機30在地理上可以是分散的??梢詫⑥r(nóng)場38作為一個整體進行管理。每一農(nóng)場38中的遠程機30可以是不同種類的。也就是說,遠程機30中的一個或多個可以按照某種類型的操作系統(tǒng)平臺(例如,由華盛頓雷德蒙的微軟公司制造的WINDOWSNT)工作,而其他遠程機30中的一個或多個可以根據(jù)另一種類型的操作系統(tǒng)平臺(例如,Unix或Linux)工作。構成每一農(nóng)場38的遠程機30沒有必要在其農(nóng)場38內(nèi)彼此實際相鄰。因而,可以利用廣域網(wǎng)(WAN)連接或中等區(qū)域網(wǎng)(MAN)連接使在邏輯上組合成農(nóng)場38的由遠程機30構成的組互連。例如,農(nóng)場38可以包括實際上處于不同的州、城市、學?;蚍块g的遠程機30。如果利用局域網(wǎng)(LAN)連接或某種形式的直接連接來連接遠程機30,那么可以提高農(nóng)場38內(nèi)的遠程機30之間的數(shù)據(jù)傳輸速度??梢詫⑦h程機30稱為服務器、文件服務器、應用服務器或遠程機。在一些實施例中,遠程機30可以具有起著應用服務器或主應用服務器的作用的能力。在一個實施例中,遠程機30可以包括現(xiàn)用目錄(Active Directory)。也可以將本地機10、20稱為客戶端節(jié)點或端點。在一些實施例中,本地機10、20所具有的能力既能夠使其充當尋求對應用的訪問的客戶端節(jié)點,又能夠使其充當為其他本地機提供對其持有的(hosted)應用的訪問的應用服務器。在一個實施例中,本地機10與農(nóng)場38中的遠程機30之一直接通信。在另一實施例中,本地機10通過執(zhí)行程序鄰域(neighborhood)應用與農(nóng)場38中的遠程機30通信。在另一實施例中,遠程機30提供主節(jié)點的功能性。在一些實施例中,本地機10通過通信鏈路與農(nóng)場38中的遠程機30通信。本地機10可以通過通信線路150 (例如)請求執(zhí)行農(nóng)場38中的遠程機30、30’、30"和30"’所持有的各種應用,并接收所述應用的執(zhí)行結果的輸出,以供顯示。通信鏈路150可以是同步或非同步的,并且其可以是LAN連接、MAN (中等區(qū)域網(wǎng))連接或WAN連接。此外,通信鏈路150可以是無線鏈路,例如紅外信道或衛(wèi)星頻帶。在一些實施例中,只有主節(jié)點提供識別和提供與持有所請求的應用的遠程機30’相關的地址信息所需的功能。在一些實施例中,本地機10與遠程機30’ 〃通信。在這些實施例之一中,遠程機30’ 〃提供web服務器的功能。在這些實施例的另一個當中,遠程機30’ 〃接收來自本地機10的請求,將所述請求發(fā)送至遠程機30,并采用來自遠程機30的對所述請求的響應來回應所述的本地機10的請求。在這些實施例的另一個當中,遠程機30獲取本地機10可用的應用的枚舉和與持有所述應用枚舉所標識的應用的遠程機30’相關的地址信息。在這些實施例的另一個當中,遠程機30’ 〃利用web接口向本地機10提供對所述請求的響應。在一個實施例中,本地機10與遠程機30’直接通信,以訪問所標識的應用。在另一實施例中,本地機10接收來自遠程機30’ 〃的應用輸出數(shù)據(jù),所述應用輸出數(shù)據(jù)是通過執(zhí)行遠程機30’上的所標識的應用而得到的。在多個實施例中,將遠程機30以及本地機10和20設為個人計算機或計算機服務器,其可以具有加利福尼亞庫佩蒂諾的蘋果計算機公司、紐約白原市的IBM公司、加利福尼亞帕洛阿爾托的惠普公司或者得克薩斯州Round Rock的戴爾公司制造的類型。在一些實施例中,遠程機30可以是運行于諸如刀片服務器的服務器上的虛擬機。在這些實施例中,單個實際的服務器可以提供兩個或更多的應用服務器。圖1B和IC示出了在這些實施例中可以被用作遠程機30或本地機10、20的典型計算機100的方框圖。如圖1B和IC所示,每一計算機100包括中央處理單元102和主存儲器104。每一計算機100還可以包括其他任選元件,例如,一個或多個輸入/輸出裝置130a-130n (統(tǒng)一采用附圖標記130表示)和與中央處理單元102通信的高速緩沖存儲器140。中央處理單元102是對從主存儲器104中取出的指令作出響應并處理所述指令的任何邏輯電路。在多個實施例中,通過微處理器單元提供所述中央處理單元,其中,所述微處理器單元可以是加利福尼亞芒廷維尤的Intel公司、伊利諾斯州紹姆堡的摩托羅拉公司、紐約白原市的IBM公司或者加利福尼亞桑尼維爾的AMD公司制造的。主存儲器104可以是能夠存儲數(shù)據(jù)并且允許通過微處理器102直接訪問任何存儲位置的一個或多個存儲芯片,例如,其可以是靜態(tài)隨機存取存儲器(SRAM)、脈沖串(burst)SRAM或同步脈沖串SRAM (BSRAM)、動態(tài)隨機存取存儲器(DRAM)、快速頁面式DRAM (FPMDRAM)、增強型DRAM(EDRAM)、擴展數(shù)據(jù)輸出RAM(ED0 RAM)、擴展數(shù)據(jù)輸出DRAM(ED0 DRAM)、脈沖串擴展數(shù)據(jù)輸出 DRAM (BEDO DRAM)、擴展 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDECSRAM.PC100 SDRAM、雙數(shù)據(jù)率 SDRAM (DDR SDRAM)、增強型 SDRAM (ESDRAM)、同步鏈接 DRAM(SLDRAM)、直接存儲器總線 DRAM (DRDRAM)或鐵電 RAM (FRAM)0在圖1B所示的實施例中,處理器102通過系統(tǒng)總線120 (在下文中將對其給出更為詳細的說明)與主存儲器104通信。圖1C示出了計算機系統(tǒng)100的實施例,其中,處理器通過存儲器端口與主存儲器104直接通信。例如,在圖1C中,主存儲器104可以是DRDRAM。圖1B和圖1C示出了主處理器102通過次級總線與高速緩沖存儲器140直接通信,其中有時將次級總線稱為“后側”總線。在其他實施例中,主處理器102利用系統(tǒng)總線120與高速緩沖存儲器140通信。高速緩沖存儲器140通常具有比主存儲器104更快的響應時間,并且通常通過SRAM、BSRAM或EDRAM實現(xiàn)。在圖1B所示的實施例中,處理器102通過局部系統(tǒng)總線120與各種I/O裝置130通信。可以采用各種總線將中央處理單元102連接至所述I/O裝置130,所述總線包括VESAVL總線、ISA總線、EISA總線、微信道架構(MCA)總線、PCI總線、PC1-X總線、PC1-Express總線或NuBus。對于所述I/O裝置為視頻顯示器的實施例而言,處理器102可以采用加速圖形接口(AGP)與顯示器通信。圖1C示出了計算機系統(tǒng)100的實施例,其中,主處理器102通過 HyperTransport、Rap id I/O 或 Inf iniBand 與 I/O 裝置 130b 直接通信。圖1C 還示出了混合了局域總線和直接通信的實施例:處理器102在與I/O裝置130b直接通信的同時利用局域互連總線與I/O裝置130a通信。在計算機系統(tǒng)100中可以存在各種各樣的I/O裝置130。輸入裝置包括鍵盤、鼠標、跟蹤板、跟蹤球、傳聲器和圖形輸入板。輸出裝置包體視頻顯示器、揚聲器、噴墨打印機、激光打印機和染料升華打印機。所述I/o裝置還可以為計算機系統(tǒng)100提供大容量存儲器,例如硬盤驅(qū)動器、用于接收諸如3.5寸盤、5.25寸盤或ZIP盤的軟盤的軟盤驅(qū)動器、⑶-ROM驅(qū)動器、⑶-R/RW驅(qū)動器、DVD-ROM驅(qū)動器、各種格式的磁帶驅(qū)動器和USB存儲裝置,例如,所述USB存儲裝置可以是加利福尼亞Los Alamitos的Twintech Industry公司制造的裝置的USB Flash Drive線或加利福尼亞庫佩蒂諾的蘋果計算機公司制造的裝置的iPod Shuffle線。在其他實施例中,I/O裝置130可以是系統(tǒng)總線120和外部通信總線之間的橋梁,例如,所述外部通信總線可以是USB總線、Apple Desktop總線、RS-232串聯(lián)、SCSI總線、FireWire總線、FireWire 800總線、以太網(wǎng)總線、AppleTalk總線、吉比特以太網(wǎng)總線、異步傳輸模式總線、HIPPI總線、超級HIPPI總線、SerialPlus總線、SCI/LAMP總線、FibreChanne I總線或者串行附加小型計算機系統(tǒng)接口總線。具有圖1B和圖1C所示的類型的通用臺式計算機通常在操作系統(tǒng)的控制下工作,其中,操作系統(tǒng)控制著任務進程和對系統(tǒng)資源的訪問。典型的操作系統(tǒng)包括:華盛頓雷德蒙的微軟公司制造的MICROSOFT WINDOWS、加利福尼亞庫佩蒂諾的蘋果計算機公司制造的MacOS、紐約Armonk的IBM公司制造的OS/2以及猶他州鹽湖城的Caldera公司免費發(fā)布的操作系統(tǒng)Linux,等等。本地機10和20可以是任何個人計算機(例如Macintosh計算機或者基于處理器的計算機,例如,所述處理器可以是286、386、486、Pentium、Pentium I1、Pentium II1、Pentium IV、Pentium M、Celeron或Xeon處理器,所有的這些處理器都是由加利福尼亞芒廷維尤的Intel公司制造的)、基于Windows的終端、網(wǎng)絡計算機、無線裝置、信息設備、RISC.Power PC、X裝置、工作站、小型計算機、主機計算機、個人數(shù)字助理或者其他具有基于Windows的桌面和足夠的用于執(zhí)行小的直觀顯示程序的持久存儲器(persistent store)的計算裝置。直觀顯示程序利用通過通信信道發(fā)送給它的命令和數(shù)據(jù)實現(xiàn)圖形顯示。本地機10和20所支持的面向Windows的平臺可以包括但不限于:ffindows 3.x、Windows 95、Windows 98、Windows NT 3.51 > Windows NT 4.0、Windows 2000、Windows 2003、WindowsCE、Windows XP、Windows vista、MAC/OS、Java、Linux 和 UNIX。本地機 10 和 20 可以包括視覺顯示裝置(例如,計算機監(jiān)視器)、數(shù)據(jù)輸入裝置(例如,鍵盤)、用于存儲下載的應用程序的持久或易失存儲器(例如,計算機存儲器)、處理器和鼠標。小的直觀顯示程序的執(zhí)行允許本地機10和20參與分布式計算機系統(tǒng)模型(即,基于服務器的計算模型)。對于本地機10或20是移動裝置的實施例而言,所述裝置可以是能夠?qū)崿F(xiàn)JAVA的蜂窩電話,例如,由伊利諾斯州紹姆堡的摩托羅拉公司、日本京都的Kyocera、韓國漢城的三星電子公司制造的蜂窩電話。在本地機10或20可移動的其他實施例中,其可以是在PalmOS操作系統(tǒng)的控制下工作的個人數(shù)字助理(PDA),例如,其可以是由加利福尼亞米爾皮塔斯的palmOne公司制造的裝置。在其他實施例中,本地機10或20可以是在PocketPC操作系統(tǒng)的控制下工作的個人數(shù)字助理(PDA),例如,由加利福尼亞帕洛阿爾托的惠普公司制造的iPAQ裝置、加利福尼亞Walnut的ViewSonic制造的裝置或者紐約的美國東芝公司制造的裝置。在另一些實施例中,客戶端節(jié)點是PDA/電話裝置的組合,例如,由加利福尼亞米爾皮塔斯的palmOne公司制造的Treo裝置。在另一些實施例中,本地機10或20是在PocketPC操作系統(tǒng)的控制下工作的蜂窩電話,例如,由摩托羅拉公司制造的蜂窩電話。在一個實施例中,本地機10與農(nóng)場38中的遠程機30之一直接通信。在一些實施例中,本地機10通過通信鏈路150與農(nóng)場38中的遠程機30通信。本地機10可以通過通信線路150 (例如)請求執(zhí)行農(nóng)場38中的遠程機30、30’、30〃和30〃’所持有的各種應用,并接收所述應用的執(zhí)行結果的輸出,以供顯示。通信鏈路150可以是同步或非同步的,并且其可以是LAN連接、MAN (中等區(qū)域網(wǎng))連接或WAN連接。此外,通信鏈路150可以是無線鏈路,例如紅外信道或衛(wèi)星頻帶。 在一些實施例中,本地機10與遠程機30通信。在這些實施例的一個當中,遠程機30為本地機10提供本地機10能夠執(zhí)行的應用的枚舉。在這些實施例的另一個當中,遠程機30為本地機10提供與持有所述應用枚舉所標識的應用的遠程機30’相關的地址信息。在這些實施例的另一個當中,本地機10與遠程機30’通信,以訪問所標識的應用。在一個實施例中,本地機10通過執(zhí)行程序鄰域應用與遠程機30和30’通信。在一些實施例中,每一遠程機30提供識別和提供與持有所請求的應用的遠程機30’相關的地址信息所需的功倉泛。在一些實施例中,本地機10與遠程機30’ 〃通信。在這些實施例中的一個當中,遠程機30’ "提供web服務器或文件服務器的功能。在所述的實施例的另一個當中,遠程機30’ 〃接收來自本地機10的請求,將所述請求發(fā)送至遠程機30,并采用來自遠程機30的對所述請求的響應來回應所述的本地機10的請求。在這些實施例的另一個當中,遠程機30獲取本地機10可用的應用的枚舉和與提供對所述應用枚舉所標識的應用程序的訪問的遠程機30’相關的地址信息。在這些實施例的另一個當中,遠程機30’〃利用web接口向本地機10提供對所述請求的響應。在一個實施例中,本地機10與遠程機30’直接通信,以訪問所標識的應用。在另一實施例中,本地機10接收來自遠程機30’ "的應用輸出數(shù)據(jù),所述應用輸出數(shù)據(jù)是通過執(zhí)行遠程機30’上的所標識的應用而得到的?,F(xiàn)在參考圖1D,構成農(nóng)場38的遠程機30均包括網(wǎng)絡端接口 202和農(nóng)場端接口204。遠程機30的網(wǎng)絡端接口可以與一個或多個本地機10、20或與網(wǎng)絡210通信。網(wǎng)絡210可以是WAN、LAN或者諸如因特網(wǎng)或萬維網(wǎng)的國際網(wǎng)。本地機10、20可以利用210與遠程機30建立連接。
遠程機30的農(nóng)場端接口 204通過通信鏈路相互連接,從而使遠程機30能夠相互通信。在每一遠程機30上,農(nóng)場端接口 204與網(wǎng)絡端接口 202通信。農(nóng)場端接口 204還與持久存儲器230,以及一些實施例中的動態(tài)存儲器240通信(由箭頭220表示)。將遠程機
30、持久存儲器230和動態(tài)存儲器240(在提供時)的組合統(tǒng)稱為農(nóng)場38。在一些實施例中,遠程機30與持久存儲器230通信,另一遠程機30’與遠程機30通信,以訪問存儲在所述持久存儲器內(nèi)的信息。實際上,可以將所述持久存儲器230實現(xiàn)到磁盤、特大容量磁盤、廉價磁盤冗余陣列、可寫光盤或者任何其他允許數(shù)據(jù)讀寫并且在存儲裝置斷電后能夠保持寫入的數(shù)據(jù)的裝置上。單個實際裝置可以提供實現(xiàn)多個持久存儲器的存儲器,即,可以采用單個實際裝置為一個以上的農(nóng)場38提供持久存儲器230。持久存儲器230保持與農(nóng)場38中的每一遠程機30相關的靜態(tài)數(shù)據(jù)和農(nóng)場38內(nèi)的所有遠程機30采用的全局數(shù)據(jù)。在一個實施例中,持久存儲器230可以按照低權(Lightweight)目錄訪問協(xié)議(LDAP)數(shù)據(jù)模型保持遠程機數(shù)據(jù)。在其他實施例中,持久存儲器230將遠程機數(shù)據(jù)存儲到順應ODBC的數(shù)據(jù)庫中。出于本說明書的目的,“靜態(tài)數(shù)據(jù)”是指不發(fā)生頻繁改變的額數(shù)據(jù),即,僅在小時、天或周的基礎上發(fā)生變化的數(shù)據(jù)或者根本不發(fā)生變化的數(shù)據(jù)。每一遠程機采用持久存儲器子系統(tǒng)從持久存儲器230讀取數(shù)據(jù)或向其內(nèi)寫入數(shù)據(jù)。出于在物理或邏輯上的可靠性的目的,可以復制持久存儲器230所存儲的數(shù)據(jù)。例如,可以采用一組冗余的鏡像盤提供物理冗余,其中,每一冗余鏡像盤提供一個數(shù)據(jù)副本。在其他實施例中,可以采用標準數(shù)據(jù)庫技術復制數(shù)據(jù)庫自身,從而提供對所述數(shù)據(jù)庫的多重復制。在其他實施例中,可以同時采用物理和邏輯復制??梢酝ㄟ^各種方式實現(xiàn)動態(tài)存儲器240 (即,所有記錄表格的集合)。在一個實施例中,動態(tài)存儲器240是集中式的;也就是說,將所有的運行時間數(shù)據(jù)存儲到農(nóng)場38中的一個遠程機30的存儲器內(nèi)。所述遠程機起著主網(wǎng)絡節(jié)點的作用,農(nóng)場38中的所有其他遠程機30在尋求對所述運行時間數(shù)據(jù)的訪問時都要與所述主網(wǎng)絡節(jié)點通信。在另一實施例中,農(nóng)場38中的每一遠程機30保持動態(tài)存儲器240的整個副本。這里,每一遠程機30與每一其他遠程機30通信,從而使它的動態(tài)存儲器240的副本保持更新。在另一實施例中,每一遠程機30保持其自身的運行時間數(shù)據(jù),并在試圖獲得來自每一其他遠程機30的運行時間數(shù)據(jù)時與它們通信。因而,例如,試圖找到本地機10所請求的應用程序的遠程機30可以直接與農(nóng)場38中的每一其他遠程機30通信,從而找到持有所請求的應用的一個或多個遠程機。對于具有大量遠程機30的農(nóng)場38而言,由這些實施例產(chǎn)生的網(wǎng)絡流量可能變得非常沉重。其中的一個實施例通過將農(nóng)場38中的遠程機30的子集(通常具有兩個或更多的遠程機)指定為“收集點”來緩解沉重的網(wǎng)絡流量。通常,收集點是指收集運行時間數(shù)據(jù)的遠程機。每一收集點存儲從農(nóng)場38中的某一其他遠程機30收集的運行時間數(shù)據(jù)。農(nóng)場38中的每一遠程機30均能夠作為收集點工作,因而均能夠被指定為收集點。在一個實施例中,每一收集點存儲整個動態(tài)存儲器240的副本。在另一實施例中,每一收集點存儲動態(tài)存儲器240的一部分,即,其保持具有特定數(shù)據(jù)類型的運行時間數(shù)據(jù)??梢愿鶕?jù)一種或多種標準預先確定遠程機30存儲的數(shù)據(jù)類型。例如,遠程機30可以基于其引導程序順序存儲不同類型的數(shù)據(jù)。或者,可以由管理員利用管理工具140設置遠程機30存儲的數(shù)據(jù)的類型。在這些實施例中,動態(tài)存儲器240分布在農(nóng)場38中的兩個或更多遠程機30當中。未被指定為收集點的遠程機30知曉農(nóng)場38中被指定為收集點的遠程機30。未被指定為收集點的遠程機180在發(fā)出和請求運行時間數(shù)據(jù)時可以與特定收集點通信。因而,收集點減輕了網(wǎng)絡流量,因為農(nóng)場38中的每一遠程機30在尋求對運行時間數(shù)據(jù)的訪問時都與單個收集點遠程機30通信,而不是與每一其他遠程機30通信。每一遠程機30可以作為針對一種以上的數(shù)據(jù)類型的收集點工作。例如,遠程機30"可以作為針對許可信息和針對加載信息的收集點工作。在這些實施例中,每一收集點可以收集不同類型的運行時間數(shù)據(jù)。例如,為了對這種情況舉例說明,遠程機30’ 〃可以收集許可信息,而遠程機30"可以收集加載信息。在一些實施例中,每一收集點存儲在農(nóng)場38中的所有遠程機30之間共享的數(shù)據(jù)。在這些實施例中,每一特定類型的數(shù)據(jù)的收集點與農(nóng)場38中的針對該種類型的數(shù)據(jù)的每一其他收集點交換該收集點收集的數(shù)據(jù)。因而,在完成了所述數(shù)據(jù)的交換的同時,每一收集點30〃和30都擁有了相同的數(shù)據(jù)。而且,在這些實施例中,每一收集點30和30〃還能夠使每一其他收集點始終跟上對所述運行時間數(shù)據(jù)的更新。瀏覽(browsing)能夠使本地機10查看農(nóng)場38、遠程機30和農(nóng)場38中的應用,并訪問可用信息,例如整個農(nóng)場38中的會話。每一遠程機30包括ICA瀏覽子系統(tǒng)260,從而為本地機10提供瀏覽功能。在本地機10建立與遠程機30中的任何一個的ICA瀏覽器子系統(tǒng)260的連接之后,所述瀏覽器子系統(tǒng)將支持各種本地機請求。所述本地機請求包括:(I)枚舉農(nóng)場中的遠程機的名稱,(2)枚舉農(nóng)場中公布的應用的名稱,(3)將遠程機名稱和/或應用名稱解析成本地機10可用的遠程機地址。ICA瀏覽器子系統(tǒng)260還支持由運行程序鄰域應用的本地機10所發(fā)出的請求,其根據(jù)請求為所述本地機10提供對該用戶得到了授權的農(nóng)場38中的應用的查看。ICA瀏覽器子系統(tǒng)260將所有的上述本地機請求發(fā)送給遠程機30中的適當?shù)淖酉到y(tǒng)。在一個實施例中,農(nóng)場38中的每一具有程序鄰域子系統(tǒng)的遠程機30可以為本地機10的用戶提供對農(nóng)場38中的應用的查看。所述程序鄰域子系統(tǒng)270可以限制對那些所述本地機10的用戶得到了訪問授權的應用的查看。典型地,這一程序鄰域服務將應用作為列表或圖符組提供給用戶。程序鄰域子系統(tǒng)270所提供的功能可以為兩種類型的本地機所使用:(I)能夠直接從本地機桌面訪問功能的能夠啟用程序鄰域的本地機,(2)能夠通過運行遠程機上的能夠啟用程序鄰域的桌面來訪問所述功能的不能啟用程序鄰域的本地機(例如,遺留本地機(legacy local machine))??梢栽诮⒂贗CA虛擬信道的頂部的專用虛擬信道上進行能夠啟用程序鄰域的本地機和程序鄰域子系統(tǒng)270之間的通信。在其他實施例中,可以利用XML服務實施所述通信。在這些實施例的一個當中,能夠啟用程序鄰域的本地機與XML子系統(tǒng)通信,例如,所述XML子系統(tǒng)可以是下文結合圖6說明的XML服務516,其提供了遠程機30上的程序鄰域功能。在一個實施例中,能夠啟用程序鄰域的本地機不具有與帶有程序鄰域子系統(tǒng)270的遠程機的連接。對于這一實施例而言,本地機10向ICA瀏覽器子系統(tǒng)260發(fā)送請求,以建立與遠程機30的ICA連接,從而識別出本地機10可用的應用。之后,本地機10運行獲取用戶的信任狀的客戶端側對話。所述信任狀被ICA瀏覽器子系統(tǒng)260接收,并被發(fā)送至程序鄰域子系統(tǒng)270。在一個實施例中,程序鄰域子系統(tǒng)270向用戶管理子系統(tǒng)發(fā)送所述信任狀,以實現(xiàn)對其的鑒定。用戶管理子系統(tǒng)可以返回一組存在區(qū)分的名稱,其表示所述用戶所屬的帳戶的列表。在鑒定的同時,程序鄰域子系統(tǒng)270建立程序鄰域虛擬信道。這一信道一直保持打開狀態(tài),直到完成應用過濾為止。之后,程序鄰域子系統(tǒng)270從與這些帳戶相關的公共應用子系統(tǒng)524請求程序鄰域信息。公共應用子系統(tǒng)524從持久存儲器230獲得程序鄰域信息。在接收到所述程序鄰域信息的同時,程序鄰域子系統(tǒng)270為所述程序鄰域信息設置格式并將其通過所述程序鄰域虛擬信道返回給所述本地機。之后關閉部分ICA連接。對于能夠啟用程序鄰域的本地機建立了與遠程機的局部ICA連接的另一個例子而言,考慮選擇了農(nóng)場38的本地機10的用戶。對農(nóng)場38的選擇將來自本地機10的請求發(fā)送至ICA瀏覽器子系統(tǒng)260,從而建立起與所選的農(nóng)場38的遠程機30中的一個的ICA連接。ICA瀏覽器子系統(tǒng)260向程序鄰域子系統(tǒng)270發(fā)送選擇農(nóng)場38中的遠程機30的請求。通過ICA瀏覽器子系統(tǒng)260識別與遠程機30相關的地址信息,并將其返回給本地機10。接下來,可以將本地機10連接至對應于所接收到的地址信息的遠程機30。在另一實施例中,能夠啟用程序鄰域的本地機10建立ICA連接,在所述ICA連接上建立程序鄰域虛擬信道,只要所述ICA連接存在就使所述程序虛擬信道保持暢通。通過這一程序鄰域虛擬信道,程序鄰域子系統(tǒng)270將程序鄰域信息更新發(fā)送給本地機10。為了獲得更新,程序鄰域子系統(tǒng)270預訂來自公共應用子系統(tǒng)524的事件,從而允許程序鄰域子系統(tǒng)270檢測到所公布的應用的變化。參考圖1E,其示出了用于通過在web服務目錄中公布⑶I來提供可以為本地機所使用的多個應用程序的系統(tǒng)架構的另一個實施例的方框圖。所述系統(tǒng)包括本地機10和多個遠程機30。一個遠程機30起著內(nèi)容服務器的作用。遠程機30’提供web服務器功能。遠程機30"提供用于提供對應用文件的訪問的功能,并且起著應用服務器或文件服務器的作用。本地機10能夠通過網(wǎng)絡155從內(nèi)容服務器30、web服務器30’和應用服務器30〃上下載內(nèi)容。在一個實施例中,本地機10能夠通過客戶端一應用服務器通信信道150從應用服務器30"下載內(nèi)容(例如,應用)。在一個實施例中,本地機10上的web瀏覽器11采用加密套接字協(xié)議層(SSL)支持來實現(xiàn)與內(nèi)容服務器30和/或web服務器30’的通信。SSL是由加利福尼亞芒廷維尤的Netscape通信公司開發(fā)的安全協(xié)議,現(xiàn)在已經(jīng)成為了因特網(wǎng)工程任務組頒布的標準。或者,可以利用其他安全協(xié)議將網(wǎng)瀏覽程序11連接至內(nèi)容服務器30和/或web服務器30’,例如,所述安全協(xié)議可以是但不限于由加利福尼亞州的洛斯阿爾托斯的Terisa Systems開發(fā)的加密超級文本傳輸協(xié)議(SHTTP)、HTTP over SSL (HTTPS)、由華盛頓雷德蒙的微軟公司開發(fā)的專用通信技術(PCT)和IETF頒布的傳送級安全(TLS)標準。在其他實施例中,web瀏覽器11利用不存在加密的通信協(xié)議,例如超級文本傳輸協(xié)議(HTTP)與服務器30通信。此外,本地機10包括用于通過客戶端一應用服務器通信信道150與應用服務器30〃建立和交換通信的應用客戶端13。在一個實施例中,應用客戶端13為GUI應用。在一些實施例中,應用客戶端13是由佛羅里達州Fort Lauderdale的Citrix Systems公司開發(fā)的獨立計算架構(ICA)客戶端,在下文中又將其稱為ICA客戶端13。應用客戶端13的其他實施例包括由華盛頓雷德蒙的微軟公司開發(fā)的遠程顯示協(xié)議(RDP)客戶端、X-Windows客戶端13、能夠執(zhí)行多媒體應用、email、Java或.NET代碼的客戶端側播放器、解釋器或模擬器。此外,在一個實施例中,可以通過ICA客戶端13在本地機10上顯示在應用服務器30〃上執(zhí)行的應用的輸出。在一些實施例中,應用客戶端13是諸如應用流動客戶端552的應用客戶端,在下文中將參考圖5更詳細地說明應用流動客戶端552。本地機10通過搜索web服務目錄160來尋找web服務。在一個實施例中,所述搜索是人工搜索?;蛘?,所述搜索是自動搜索。所述web服務目錄160還可以提供基于服務的視圖,例如,白頁或黃頁,從而在web服務目錄中搜索web服務。在另一實施例中,web服務目錄160支持基于GUI應用的結構化服務名和服務種類的分級瀏覽。在一個實施例中,web服務目錄160在獨立于內(nèi)容服務器30的遠程機上,例如,在目錄服務器上運行。在其他實施例中,所述web服務目錄160在多個服務器上運行。在一些實施例中,內(nèi)容服務器30能夠通過在web服務目錄160中提供信息或分析使本地機10能夠基于所述的額外的分析或信息選擇web服務。所述web服務目錄160所能列舉的服務信息的例子包括但不限于提供服務的商家的名稱、服務類型、服務的文字描述、一個或多個訪問點(SAP )、網(wǎng)絡類型、使用路徑(例如,TCP或HTTPS )和服務質(zhì)量(QoS )信息。此外,所述服務信息可以是客戶端裝置類型或用戶(例如職責)的詳細說明。因而,服務選擇可以以一個或多個上述屬性為基礎。在一個實施例中,服務類型表示本地機10必須用來訪問所述web服務的編程接口。例如,所述服務類型可以表明通過接口描述語言對所述服務進行了編碼,例如所述接口描述語言可以是web服務描述語言(WSDL)。所述服務訪問點或SAP是應用的唯一地址。所述SAP能夠使計算機系統(tǒng)在本地機10和每一遠程機30上支持多個應用。例如,應用服務器30〃可以支持電子郵件(即,e-mai I)應用、文件傳輸應用和/或GUI應用。在一個實施例中,這些應用均具有SAP,其在應用服務器30〃內(nèi)是唯一的。在一個實施例中,所述SAP是web或因特網(wǎng)地址(例如,域名系統(tǒng)(DNS)名、IP/端口或資源定位碼(URL))。因而,在一個實施例中,SAP將web服務器30’的地址識別成存儲在web服務器30’上的應用的地址的一部分。在一些實施例中,SAP將公布服務器插件程序165的地址識別成存儲在web服務器30’上的應用的地址的一部分,如下文所述。在一個實施例中,所述SAP是來自UDDI注冊的“接入點(accessPoint)”。為了準備用于在web服務目錄160中公布的項目,內(nèi)容服務器30包括web公布工具170。在一個實施例中,web公布工具170是一種軟件模塊?;蛘?,web發(fā)布工具170是另一種服務器,其可以位于內(nèi)容服務器30的外部或內(nèi)部。在一個實施例中,網(wǎng)絡服務器30’向本地機10提交web頁。Web服務器30’可以是能夠向本地機105提供web頁的任何遠程機30。在另一實施例中,web服務器30’是企業(yè)信息門戶(例如,企業(yè)內(nèi)聯(lián)網(wǎng)或加密的企業(yè)對企業(yè)外聯(lián)網(wǎng))。企業(yè)門戶是公司的網(wǎng)站,其匯集了各種應用、數(shù)據(jù)和內(nèi)容,使其個性化并將其提供給用戶,同時提供用于更為有效地組織和使用信息的管理工具。在一些公司內(nèi),其門戶已經(jīng)采用對虛擬工作位置的基于瀏覽器的訪問替代了常規(guī)的桌面軟件。Web服務器30’還包括用于實現(xiàn)圖形用戶界面(⑶I)應用的公布的公布服務器插件程序165。更準確地說,所述公布服務器插件程序165將新的web服務項URL轉(zhuǎn)換為GUI應用服務,從而能夠通過web服務目錄160訪問GUI。在一個實施例中,公布服務器插件程序165是公共網(wǎng)關接口(CGI)腳本,這是一種被設計為接受和返回符合CGI規(guī)約的數(shù)據(jù)的程序。可以通過任何程序設計語言,例如C、Perl、Java或Visual Basic編寫所述程序。在另一實施例中,所述公布服務器插件程序165是Java服務器頁(JSP)。利用公布服務器插件程序165促進遠程⑶I應用的公布,本地機10能夠由此通過整個⑶I接口,例如,Citrix的ICA或Microsoft的RDP而并非通過編程接口或web頁訪問web服務。應用服務器30〃持有一個或多個本地機10可用的應用。所述應用的例子包括由雷德蒙的微軟公司制造的諸如MICROSOFT WORD的字處理程序和諸如MICROSOFT EXCEL的電子表格程序、財務報表程序、客戶注冊程序、提供技術支持信息的程序、客戶數(shù)據(jù)庫程序或應用集管理程序。在一些實施例中,在不同的網(wǎng)絡上建立一個或多個通信鏈路150。例如,客戶端一內(nèi)容服務器通信信道150’可以屬于第一網(wǎng)絡(例如,萬維網(wǎng)),客戶端一 web服務器通信信道150〃可以屬于第二網(wǎng)絡(例如,加密外聯(lián)網(wǎng)或虛擬專用網(wǎng)(VPN))。在一個實施例中,web公布工具170存儲與web公布工具170在持久大容量存儲器225中的web服務目錄160內(nèi)公布的應用有關的信息。在一個實施例中,所述信息是動態(tài)公布服務器插件程序165的URL。持久大容量存儲器225可以是磁盤或磁光驅(qū)動器。在一個實施例中,所述持久大容量存儲器225為數(shù)據(jù)庫服務器,其將與所公布的應用相關的數(shù)據(jù)存儲到一個或多個局部服務數(shù)據(jù)庫內(nèi)。所述持久大容量存儲器225可以是處于任何或所有遠程機30之內(nèi)或之外的部件。在其他實施例中,內(nèi)容服務器30或web服務器30’與農(nóng)場38中的遠程機通信,以檢索應用列表。在這些實施例之一中,內(nèi)容服務器30或web服務器30’與農(nóng)場38通信,而不是和持久大容量存儲器225通信?,F(xiàn)在參考圖2,流程圖示出了選擇應用程序的執(zhí)行方法所采取的步驟的一個實施例。簡而言之,接收與本地機相關聯(lián)或與本地機的用戶相關聯(lián)的信任狀,請求枚舉可以由本地機執(zhí)行的應用(步驟202)。響應于所接收的信任狀提供對本地機可用的多個應用程序的枚舉(步驟204)。接收請求以執(zhí)行被枚舉的應用(步驟206)。響應于策略選擇執(zhí)行被枚舉的應用的預定數(shù)量的方法之一,所述預定數(shù)量的方法包括用于被枚舉的應用的應用流傳輸?shù)姆椒?步驟208)。接收與本地機相關聯(lián)或與本地機的用戶相關聯(lián)的信任狀,請求枚舉可以由本地機執(zhí)行的應用(步驟202)。在一個實施例中,遠程機利用信任狀從本地機10接收枚舉可用應用的請求。在另一個實施例中,遠程機30上的XML服務接收請求和信任狀并將請求和信任狀傳輸?shù)竭h程機30上的管理服務。在一些實施例中,起到web服務器功能的遠程機30從本地機10接收通信并將通信轉(zhuǎn)發(fā)到遠程機30’。在這些實施例之一中,Web服務器將通信轉(zhuǎn)發(fā)到遠程機30’上的XML服務。在這些實施例的另一個中,Web服務器位于本地機上。在由web服務器將來自本地機10的通信路由到遠程機30’的其他實施例中,可以響應于本地機10的網(wǎng)際協(xié)議(IP)地址選擇遠程機30。在一些實施例中,本地機10請求訪問遠程機30上駐留的應用。在這些實施例之一中,本地機10請求由遠程機30執(zhí)行駐留在遠程機30上的應用。在這些實施例的另一個中,本地機10請求檢索包括應用的多個應用文件。在一些實施例中,用戶經(jīng)由遠程機30提供給本地機10的圖形用戶界面向遠程機30提供信任狀。在其他實施例中,具有web服務器功能的遠程機30’ ’ ’向本地機10提供圖形用戶界面。在其他實施例中,由遠程機30發(fā)送給本地機10的收集代理收集來自本地機10的信任狀。在一個實施例中,信任狀是指用戶名和口令。在另一個實施例中,信任狀不限于用戶名和口令,而是包括,但不限于本地機10的機器ID、操作系統(tǒng)類型、操作系統(tǒng)補丁的存在、已安裝網(wǎng)卡的MAC地址、客戶端裝置上的數(shù)字水印、活動目錄中的成員身份、病毒掃描器的存在、個人防火墻的存在、HTTP報頭、瀏覽器類型、裝置類型、諸如網(wǎng)際協(xié)議地址或地址范圍的網(wǎng)絡連接信息、遠程機30的機器ID、包括改變時區(qū)的調(diào)節(jié)的訪問請求的日期或時間以及授權信任狀。在一些實施例中,與本地機相關聯(lián)的信任狀是與本地機的用戶相關聯(lián)的。在這些實施例之一中,信任狀是用戶所有的信息。在這些實施例的另一個中,信任狀是用戶身份驗證信息。在其他實施例中,與本地機相關聯(lián)的信任狀是與網(wǎng)絡相關聯(lián)的。在這些實施例之一中,信任狀是與本地機可以連接到的網(wǎng)絡相關聯(lián)的信息。在這些實施例的另一個中,信任狀是與收集本地機信息的網(wǎng)絡相關的信息。在其他實施例中,與本地機相關聯(lián)的信任狀是本地機的特征。響應于所接收的信任狀提供對本地機可用的多個應用程序的枚舉(步驟204)。在一個實施例中,本地機10的用戶可能知道網(wǎng)絡40中的遠程機30所持有的應用程序的可用性,但不知道在哪里找到這種應用,并沒有鏈接到這種應用所需的技術信息。這些可用的應用程序構成用戶的“程序鄰域”。用于為本地機判斷程序鄰域的系統(tǒng)包括應用程序(下文稱為“程序鄰域”應用)、用于存儲應用程序部件的存儲器以及用于執(zhí)行應用程序的處理器。如下所述,可以在本地機10和/或遠程機30的存儲器中安裝程序鄰域(PN)應用。根據(jù)程序鄰域應用而運行的遠程機30從農(nóng)場38中的每臺遠程機30收集與應用相關的信息。用于每個所持有的應用的與應用相關的信息可以是各種信息,例如包括持有應用的遠程機地址、應用名稱、被授權使用應用的用戶或用戶組以及在建立連接之前為了運行應用本地機10所需的最低能力。例如,應用可能對視頻數(shù)據(jù)進行流傳輸,因此所需的最低能力可以是本地機支持視頻數(shù)據(jù)。其他實例為本地機支持音頻數(shù)據(jù)或具有處理加密數(shù)據(jù)的能力。與應用相關的信息可以存儲在數(shù)據(jù)庫中。當本地機10連接到網(wǎng)絡40時,本地機10的用戶提供用戶信任狀。用戶信任狀可以包括本地機10的用戶的用戶名、用戶的口令以及用戶被授權的域名。或者,可以從智能卡、時基令牌、社會保障號碼、用戶口令、個人身份(PIN)號碼、基于對稱密鑰或橢圓曲線密碼術的數(shù)字證書、用戶的計量生物學特征或任何通過其能夠獲得本地機10的用戶身份并提交進行驗證的其他方式獲得用戶信任狀。對本地機10響應的遠程機30可以基于用戶信任狀對用戶進行認證??梢栽趫?zhí)行程序鄰域應用的任何地方存儲用戶信任狀。對于本地機10執(zhí)行程序鄰域應用的實施例而言,可以在本地機10上存儲用戶信任狀。對于遠程機30執(zhí)行程序鄰域的實施例而言,可以在該遠程機30上存儲用戶信任狀。遠程機30從用戶信任狀和與應用相關的信息還可以判斷出遠程機30所持有的哪些應用程序是可以由本地機10的用戶使用的。遠程機30向本地機10發(fā)送表明可用應用程序的信息。該過程消除了本地機10的用戶建立應用連接的必要。此外,遠程機30的管理員可以在本地機10的多個用戶之間控制對應用的訪問。在一些實施例中,遠程機30執(zhí)行的用戶認證可以足以授權使用提供給本地機10的每個所持有應用程序,盡管這樣的應用可能駐留在另一遠程機30上。因此,當本地機10啟動(即開始執(zhí)行)所持有應用之一時,可以不必認證本地機10再次輸入的用戶信任狀來認證應用的使用。于是,單獨一項用戶信任狀可以用于判斷可用應用并授權啟動這種應用,而無須用戶進行額外的人工登錄認證過程。本地機10或遠程機30的任一個都可以啟動程序鄰域應用。在本地機10、20的顯示屏12、22上顯示結果。在基于圖形窗口的實現(xiàn)中,可以在程序鄰域圖形窗口中顯示結果,并可以在該窗口中用圖形符號表示每個授權的應用程序。在一個實施例中,程序鄰域應用濾除掉未授權本地機10執(zhí)行的應用程序,僅顯示授權的(即可用的)程序。在其他實施例中,程序鄰域應用可以顯示授權和未授權的應用。在不濾除未授權應用而加以顯示的時候,可以提供通知,表明這種應用是不可用的?;蛘撸绦蜞徲驊每梢韵虮镜貦C10、20的用戶報告遠程機30所持有的所有應用,而不標明授權或未授權本地機10、20執(zhí)行哪些應用。隨后可以在本地機10、20試圖運行這些應用之一時決定授權情況。本地機10可以請求從遠程機30進行應用枚舉。應用枚舉使本地機10的用戶能夠看到每個發(fā)布的應用的名稱。在一個實施例中,無論用戶是否有執(zhí)行應用的授權,本地機10的用戶都可以看到應用名稱。在另一個實施例中,用戶僅看到授權用戶執(zhí)行的那些應用的名稱。根據(jù)本地機10運行的具體過程,應用枚舉請求傳送到ICA瀏覽器子系統(tǒng)260、到程序鄰域子系統(tǒng)270或到公共應用子系統(tǒng)524。例如,當本地機10在運行程序鄰域應用時,將應用枚舉請求發(fā)送到遠程機30上的程序鄰域子系統(tǒng)270。當本地機10通過網(wǎng)頁提出枚舉請求時,該請求傳送到公共訪問點子系統(tǒng)524。對這些實施例而言,在本地機10希望枚舉應用時,公共應用子系統(tǒng)524充當著程序鄰域子系統(tǒng)270、ICA瀏覽器子系統(tǒng)260和公共應用子系統(tǒng)的初始訪問點。在一些實施例中,當本地機10通過網(wǎng)頁提出枚舉請求時,托管web服務器的中間遠程機30接收該請求并將請求轉(zhuǎn)發(fā)到遠程機30’。在接收到枚舉請求時,公共應用子系統(tǒng)524向持久存儲器230查詢所有應用的列表。對于從程序鄰域子系統(tǒng)270和公共訪問點645子系統(tǒng)接收的請求,根據(jù)本地機10的用戶的信任狀對這一應用列表進行過濾(即用戶僅看到用戶被授權的那些應用)。本地機10還可以請求遠程機枚舉。遠程機枚舉使本地機10的用戶能夠看到農(nóng)場38中的遠程機列表。在一個實施例中,可以根據(jù)遠程機類型對遠程機列表進行過濾,這是由該遠程機上的專用遠程機子系統(tǒng)決定的。根據(jù)本地機120運行的具體過程,將遠程機枚舉請求傳送到ICA瀏覽器子系統(tǒng)260或公共訪問點子系統(tǒng)645。例如,當本地機120通過網(wǎng)頁提出遠程機枚舉請求時,該請求傳送到公共訪問點子系統(tǒng)645。對這些實施例而言,公共遠程機子系統(tǒng)300充當著ICA瀏覽器子系統(tǒng)260和公共訪問點645子系統(tǒng)的初始訪問點。在接收到遠程機枚舉請求時,公共遠程機子系統(tǒng)從持久存儲器230查詢所有遠程機列表。任選地,根據(jù)遠程機類型過濾該遠程機列表。圖3A是示出了本地機10啟動執(zhí)行程序鄰域應用的過程的另一實施例的方框圖,在該實例中是通過萬維網(wǎng)啟動的。本地機10執(zhí)行網(wǎng)絡瀏覽器應用80,例如由加利福尼亞Mountain View 的 NETSCAPE Communications, Inc.制造的 NETSCAPE NAVIGATOR,或者由華盛頓 Redmond 的 Microsoft Corporation 制造的 MICROSOFT INTERNET EXPLORER,或者由加利福尼亞Mountain View的Mozilla Foundation制造的FIREFOX,或者由挪威奧斯陸的 OPERA Software ASA 制造的 OPERA,或者由加利福尼亞 Cupertino 的 Apple Computer,Inc.制造的 SAFARI。本地機10通過網(wǎng)絡瀏覽器80發(fā)出請求82,希望訪問對應于遠程機30上駐留的HTML頁面的統(tǒng)一資源定位符(URL)地址。在一些實施例中,由遠程機30向本地機10返回的第一個HTML頁面84是視圖識別本地機10的認證頁面。仍然參考圖3A,一旦本地機10獲得遠程機30的認證,遠程機30準備并向本地機10發(fā)送HTML頁面88,該頁面包括程序鄰域窗口 58,該窗口中給出了表明本地機10已經(jīng)訪問過的應用程序的圖形符號57、57’。本地機10的用戶通過點擊該圖符57來啟用圖符57表示的應用的執(zhí)行。在一些實施例中,遠程機30代表本地機10的用戶執(zhí)行程序鄰域應用。在這些實施例之一中,遠程機30是位于本地機10和遠程機30’之間的中間遠程機。參考圖3B,流程圖示出了通過在web服務目錄中的⑶I發(fā)布提供本地機可用的多個應用程序所采取的步驟的一個實施例。Web發(fā)布工具170接收要發(fā)布的應用(例如GUI應用)的web服務描述和訪問信息(步驟300)。在一個實施例中,Web服務描述包括上述服務信息(例如,提供web服務的單位名稱、服務類型、服務的文本描述和SAP)。訪問信息例如可以包括發(fā)布的應用名稱、傳輸控制協(xié)議(TCP)瀏覽服務器農(nóng)場地址和MetaFrame服務器IP地址。在一些實施例中,訪問信息指定穿過網(wǎng)絡或安全網(wǎng)關或網(wǎng)橋裝置所用的地址和權證。然后web發(fā)布工具170 構建服務發(fā)布請求以請求發(fā)布web服務(例如⑶I應用)(步驟305)。在一個實施例中,服務發(fā)布請求包括SAP。在一些實施例中,SAP是一種包括web服務器30’的web地址和發(fā)布服務器插件165的URL。此外,web地址可以是通用資源標識符(URI),這是引用web上目標的名稱和地址類型的通用術語。URL是一種URI。URI的實例為web服務器30’的名稱(例如“web-server”)和用于發(fā)布服務器插件165的CGI腳本名稱(例如 “dynamic-component”)。Web發(fā)布工具170在持久大容量存儲器225中存儲與SAP相關聯(lián)的SAP項(步驟310)。在一些實施例中,Web發(fā)布工具170還將所發(fā)布的應用信息(例如ICA-published-app-1nfο)與⑶I應用關聯(lián)起來。在其他實施例中,web發(fā)布工具170還包括服務發(fā)布請求中的密鑰,以標識內(nèi)容服務器30在持久大容量存儲器225中存儲的SAP項。例如,該密鑰可以具有值“ 123456677 ”。標識web服務器30’的SAP、發(fā)布服務器插件165的CGI腳本名稱和上述密鑰的實例為“http: //web-server/dynamic-component/ app=l23456677.,,。與上述SAP相關聯(lián)的SAP項的實例為“密鑰=123456677,值=ICA-published-app-1nfo”。該密鑰可以是任意長度(例如56比特密鑰,128比特密鑰)。在一個實施例中,該密鑰為密碼隨機數(shù)。該密鑰還可以提供對密鑰持有者的訪問權。雖然用密鑰進行示例,但可以使用任何手段來為持久大容量存儲器225中存儲的SAP項提供一種形式的安全措施。
Web發(fā)布工具170向內(nèi)容服務器30提供服務發(fā)布請求,希望在web服務目錄160中進行發(fā)布(步驟315)。此外,在一個實施例中,內(nèi)容服務器30向本地機10發(fā)送SAP的密鑰,請求特定web服務,以便在隨后定位SAP項時使用。在一個實施例中,發(fā)布服務發(fā)布請求使本地機10的用戶能夠訪問該服務。在一個實施例中,利用弗羅里達Fort Lauderdale的Citrix Systems, Inc.開發(fā)的NFUSE在web服務目錄160上發(fā)布⑶I應用。在一些實施例中,⑶I應用的發(fā)布者利用Application Launching And Embedding (ALE)定制在web服務目錄160上對⑶I應用的發(fā)布,ALE也是由Citrix Systems, Inc.開發(fā)的。ALE使得能夠從HTML頁面啟動GUI應用,或者能夠?qū)们度氲紿TML頁面中。本地機10然后從web服務目錄160查詢服務名稱(步驟320)。內(nèi)容服務器30從本地機10接收查詢(步驟325)并在web服務目錄160中找到所請求的服務名稱。在另一個實施例中,本地機10的用戶在web服務目錄160中瀏覽,直到定位出本地機10的用戶正在尋找的特定服務名稱為止。雖然以本地機10進行了示例,其實任何web服務目錄客戶端(例如UDDI客戶端或LDAP瀏覽器)都可以查詢或瀏覽web服務目錄160以發(fā)現(xiàn)所發(fā)布的web服務。在定位出與所接收的查詢相關聯(lián)的SAP時,內(nèi)容服務器30向本地機10發(fā)送SAP(步驟330)。本地機10接收SAP (步驟335)并從該SAP判定發(fā)布服務器插件165的地址。本地機10隨后向web服務器30’發(fā)送對⑶I應用的請求(步驟340)。在一些實施例中,來自本地機10的請求是從網(wǎng)絡瀏覽器11傳輸?shù)絯eb服務器30’的HTTP請求。在其他實施例中,在本地機10上執(zhí)行的應用(例如通常的目錄瀏覽器或HTML Ul)從內(nèi)容服務器30接收SAP并將SAP作為要旨提供給網(wǎng)絡瀏覽器11。網(wǎng)絡瀏覽器I然后可以自動地向web服務器30’發(fā)送(對⑶I應用的)HTTP請求。根據(jù)前述實例,發(fā)給web服務器30’的應用請求的具體實例為 “http: //web-server/dynamic-component/ app=123456677.”。Web服務器30’,尤其是發(fā)布服務器插件165接收與SAP相關的應用請求(步驟345)并確定與該請求相關的SAP項(步驟350)。在一個實施例中,發(fā)布服務器插件165從本地機10接收請求并檢索與已經(jīng)(作為SAP項的一部分)存儲在持久大容量存儲器225中的請求相關聯(lián)的所發(fā)布的應用信息。在一些實施例中,發(fā)布服務器插件165使用本地機10從內(nèi)容服務器30接收的SAP (或SAP的一部分)作為密鑰來訪問存儲在持久大容量存儲器225中的適當服務項(例如已發(fā)布的應用信息)。發(fā)布服務器插件165然后構建具有已發(fā)布的應用信息(例如應用服務器30"的HTTP地址)的文件或文檔(步驟352)并將該文檔發(fā)送到本地機10 (步驟355)。發(fā)布服務器插件165構建該文件,使得該文件具有與應用客戶端13兼容的格式。在一個實施例中,該文檔為多用網(wǎng)絡郵件擴展(MME)或安全MME (S/MME)文檔。在另一個實施例中,該文檔為含有ICA web客戶端嵌入對象HTML標記的HTML文檔。在又一個實施例中,該文檔為含有應用流傳輸客戶端嵌入對象HTML標記的HTML文檔。網(wǎng)絡瀏覽器11隨后接收該文檔并視圖打開該文檔。在一個實施例中,如果應用客戶端13未安裝在本地機10上,則本地機10與應用服務器30〃通信以下載并安裝該應用客戶端13。在安裝應用客戶端13時,或者,如果應用客戶端13已經(jīng)安裝在本地機10上了,本地機10啟動應用客戶端13以查看從web服務器30’接收的文檔(步驟360)。
一旦在本地機10上安裝并執(zhí)行應用客戶端13,應用服務器30〃則執(zhí)行該應用并在應用客戶端13上顯示該應用(步驟365)。在替換實施例中,應用服務器30"向應用客戶端13發(fā)送包括該應用的多個應用文件以在本地機10上執(zhí)行,如下文參考圖7要進一步詳述的。在另一個實施例中,本地機10查看該文檔(即使在啟動應用客戶端13之前)并使用文檔中的信息來從應用服務器30"獲得GUI應用。在本實施例中,GUI應用的顯示包括應用客戶端30〃的安裝和執(zhí)行情況。此外,文檔的查看可以是對本地機10的用戶透明的。例如,本地機10可以從web服務器30’接收文檔并在自動從應用服務器30〃請求⑶I應用之前解釋該文檔。于是,應用客戶端13向已發(fā)布的應用、桌面、桌面文檔和應用客戶端13支持的任何其他應用提供基于服務的訪問。應用客戶端13能夠向其提供訪問的應用實例包括但不限于WINDOWS桌面、均由華盛頓Redmond的Microsoft Corporation開發(fā)的諸如MICROSOFT EXCEL、WORD 和 POWERPOINT 的 WINDOWS 文檔、諸如由加利福尼亞 Palo Alto 的SUN Microsystems開發(fā)的SUN SOLARIS的Unix桌面以及由北卡羅來納Durham的Red Hat,Inc.銷售的 GNU/Linux 等。在一些實施例中,響應于策略引擎對本地機是否可以以及如何訪問應用的判斷,提供本地機10可用的多個應用程序的枚舉(步驟204)。策略引擎可以在做出決定之前收集有關本地機的信息?,F(xiàn)在參考圖4A,示出了根據(jù)本發(fā)明構建的計算機網(wǎng)絡的一個實施例,其包括本地機10、收集代理404、策略引擎406、策略數(shù)據(jù)庫408、農(nóng)場38和應用服務器30’。在一個實施例中,策略引擎406為遠程機30。在另一個實施例中,應用服務器30’為遠程機30’。盡管在圖4A所示的實施例中僅示出了一個本地機10、收集代理404、策略引擎406、農(nóng)場38和應用服務器30’,但應當理解,該系統(tǒng)可以對這些部件中任一種或每種提供多個。簡而言之,當本地機10向策略引擎406發(fā)送訪問應用的請求410時,收集代理404與本地機10通信,檢索關于本地機10的信息,并將本地機信息412發(fā)送到策略引擎406。策略引擎406通過將來自策略數(shù)據(jù)庫408的策略施加到所接收的信息412上來做出訪問控制決定。更詳細地講,本地機10向策略引擎406發(fā)送對資源的請求410。在一個實施例中,策略引擎406駐留在應用服務器30’上。在另一個實施例中,策略引擎406為遠程機30。在又一個實施例中,應用服務器30’從本地機10接收請求410并將請求410發(fā)送到策略引擎406。在又一個實施例中,本地機向遠程機30’’’發(fā)送對資源的請求410,遠程機30’’’將請求410發(fā)送到策略引擎406。在一些實施例中,本地機10通過網(wǎng)絡連接發(fā)送請求410。該網(wǎng)絡可以是局域網(wǎng)(LAN)、城域網(wǎng)(MAN)或諸如因特網(wǎng)的廣域網(wǎng)(WAN)。本地機10和策略引擎406可以通過各種連接連接到網(wǎng)絡,各種連接包括標準電話線、LAN或WAN鏈接(例如T1、T3、56kb、X.25 )、寬帶連接(ISDN、幀中繼、ATM)和無線連接。本地機10和策略引擎10之間的連接可以使用各種數(shù)據(jù)鏈路層通信協(xié)議(例如TCP/IP、IPX、SPX、NetBIOS、NetBEU1、SMB、以太網(wǎng)、ARCNET、光纖分布式數(shù)據(jù)接口(FDDI)、RS232、IEEE 802.11、IEEE 802.11a、IEE 802.lib、IEEE 802.1lg和直接異步連接)。該連接也可以是上述通信鏈路150。在接收到請求時,策略引擎406啟動由收集代理404進行的信息收集。收集代理404收集有關本地機10的信息并將信息412發(fā)送到策略引擎406。在一些實施例中,收集代理404通過網(wǎng)絡連接收集并發(fā)送信息412。在一些實施例中,收集代理404包括字節(jié)碼,例如以字節(jié)碼程序設計語言JAVA編寫的應用。在一些實施例中,收集代理404包括至少一個腳本。在這些實施例中,收集代理404通過在本地機10上運行至少一個腳本來收集信息。在一些實施例中,收集代理包括本地機10上的活動X控件?;顒覺控件是一種實現(xiàn)一組界面的專用部件對象模型(COM)的對象,所述界面使其看起來和運行起來像控件。在一個實施例中,策略引擎406向本地機10發(fā)送收集代理404。在一個實施例中,策略引擎406在收集代理404已經(jīng)向策略引擎406發(fā)送過信息412之后要求第二次執(zhí)行收集代理404。在本實施例中,策略引擎406可能沒有充分的信息412來判斷本地機10是否滿足特定的條件。在其他實施例中,策略引擎406響應于所接收的信息412要求多次執(zhí)行收集代理404。在一些實施例中,策略引擎406向收集代理404發(fā)送指令,確定收集代理404收集的信息類型。在這些實施例中,系統(tǒng)管理員可以配置從策略引擎406發(fā)送到收集代理404的指令。這對所收集的信息類型提供了更大控制。由于對所收集的信息類型更大的控制,這也擴展了策略引擎406能夠做出的訪問控制決定的類型。收集代理404所收集的信息412包括但不限于本地機10的機器ID、操作系統(tǒng)類型、操作系統(tǒng)補丁的存在、已安裝網(wǎng)卡的MAC地址、客戶端裝置上的數(shù)字水印、活動目錄中的成員身份、病毒掃描器的存在、個人防火墻的存在、HTTP報頭、瀏覽器類型、裝置類型、諸如網(wǎng)際協(xié)議地址或地址范圍的網(wǎng)絡連接信息、遠程機30的機器ID、包括改變時區(qū)的調(diào)節(jié)的訪問請求的日期或時間以及授權信任狀。在一些實施例中,裝置類型為個人數(shù)字助理。在其他實施例中,裝置類型為蜂窩電話。在其他實施例中,裝置類型為膝上電腦。在其他實施例中,裝置類型為臺式計算機。在其他實施例中,裝置類型為因特網(wǎng)信息站。在一些實施例中,數(shù)字水印包括數(shù)據(jù)嵌入。在一些實施例中,水印包括插入到文件中的圖案以提供有關文件的源信息。在其他實施例中,水印包括數(shù)據(jù)散列文件以提供竄改檢測。在其他實施例中,水印提供有關文件的版權信息。在一些實施例中,網(wǎng)絡連接信息涉及到帶寬能力。在其他實施例中,網(wǎng)絡連接信息涉及到網(wǎng)際協(xié)議地址。在其他實施例中,網(wǎng)絡連接信息由網(wǎng)際協(xié)議地址構成。在一個實施例中,網(wǎng)絡連接信息包括標識本地機向其提供認證信任狀的登錄代理的網(wǎng)絡分區(qū)。在一些實施例中,授權信任狀包括多個類型的認證信息,包括但不限于用戶名、客戶端名稱、客戶端地址、口令、PIN、語音示例、一次性通過代碼、計量生物學數(shù)據(jù)、數(shù)字證書、權證等以及其組合。在接收到所收集的信息412之后,策略引擎406基于所接收的信息412做出訪問控制決定?,F(xiàn)在參考圖4B,方框圖示出了策略引擎406的一個實施例,包括第一部件420,第一部件包括條件數(shù)據(jù)庫422和登錄代理424,還包括第二部件430,第二部件包括策略數(shù)據(jù)庫432。第一部件420將來自條件數(shù)據(jù)庫422的條件施加到所接收的關于本地機10的信息并判斷所接收的信息是否滿足該條件。在一些實施例中,條件可以要求本地機10執(zhí)行特定的操作系統(tǒng)以滿足該條件。在一些實施例中,條件可以要求本地機10執(zhí)行特定的操作系統(tǒng)補丁以滿足該條件。在其他實施例中,條件可以要求本地機10為每個安裝的網(wǎng)卡提供MAC地址以滿足該條件。在一些實施例中,條件可以要求本地機10表明在特定活動目錄中的成員身份以滿足該條件。在另一個實施例中,條件可以要求本地機10執(zhí)行病毒掃描器以滿足該條件。在其他實施例中,條件可以要求本地機10執(zhí)行個人防火墻以滿足該條件。在一些實施例中,條件可以要求本地機10包括特定的裝置類型以滿足該條件。在其他實施例中,條件可以要求本地機10建立特定類型的網(wǎng)絡連接以滿足該條件。如果所接收的信息滿足條件,第一部件420在數(shù)據(jù)集426中存儲該條件的標識符。在一個實施例中,如果該信息使條件為真,則所接收的信息滿足條件。例如,條件可以要求安裝特定的操作系統(tǒng)。如果本地機10具有該操作系統(tǒng),則條件為真且得到滿足。在另一個實施例中,如果該信息使條件為假,則所接收的信息滿足條件。例如,條件可以查詢本地機10上是否存在間諜軟件。如果本地機10不含有間諜軟件,該條件為假且得到滿足。在一些實施例中,登錄代理424駐留在策略引擎406之外。在其他實施例中,登錄代理424駐留在策略引擎406上。在一個實施例中,第一部件420包括登錄代理424,登錄代理424啟動對有關本地機10的信息收集。在一些實施例中,登錄代理424還包括數(shù)據(jù)存儲器。在這些實施例中,數(shù)據(jù)存儲器包括收集代理可以搜集信息的條件。該數(shù)據(jù)存儲器與條件數(shù)據(jù)庫422不同。在一些實施例中,登錄代理424通過執(zhí)行收集代理404啟動信息搜集。在其他實施例中,登錄代理424通過將收集代理404發(fā)送到本地機10以在本地機10上執(zhí)行來啟動信息搜集。在其他實施例中,登錄代理424在接收到信息412之后啟動額外的信息收集。在一個實施例中,登錄代理424還接收信息412。在本實施例中,登錄代理424基于所接收的信息412生成數(shù)據(jù)集426。在一些實施例中,登錄代理424通過將來自數(shù)據(jù)庫422的條件施加到從收集代理404接收的信息來生成數(shù)據(jù)集426。在另一個實施例中,第一部件420包括多個登錄代理424。在本實施例中,多個登錄代理424中的至少一個位于本地機10可以從其發(fā)送資源請求的每個網(wǎng)域上。在本實施例中,本地機10向特定的登錄代理424發(fā)送資源請求。在一些實施例中,登錄代理424向策略引擎406發(fā)送本地機10從其訪問登錄代理424的網(wǎng)域。在一個實施例中,本地機10從其訪問登錄代理424的網(wǎng)域被稱為本地機10的網(wǎng)絡分區(qū)。條件數(shù)據(jù)庫422存儲第一部件420施加到所接收的信息上的條件。策略數(shù)據(jù)庫432存儲第二部件430施加到所接收的數(shù)據(jù)集426上的策略。在一些實施例中,條件數(shù)據(jù)庫422和策略數(shù)據(jù)庫432在與ODBC兼容的數(shù)據(jù)庫中存儲數(shù)據(jù)。例如,條件數(shù)據(jù)庫422和策略數(shù)據(jù)庫432可以被提供為由加利福尼亞Redwood Shores的ORACLE Corporation制造的ORACLE數(shù)據(jù)庫。在其他實施例中,條件數(shù)據(jù)庫422和策略數(shù)據(jù)庫432可以是華盛頓Redmond的 Microsoft Corporation 制造的 Microsoft ACCESS 數(shù)據(jù)庫或 Microsoft SQL server 數(shù)據(jù)庫。在第一部件420向條件數(shù)據(jù)庫422中的每個條件施加所接收的信息之后,第一部件向第二部件430發(fā)送數(shù)據(jù)集426。在一個實施例中,第一部件420向第二部件430僅發(fā)送數(shù)據(jù)集426。因此,在本實施例中,第二部件430不接收信息412,僅接收所滿足的條件的標識符。第二部件430接收數(shù)據(jù)集426并通過基于數(shù)據(jù)集426內(nèi)標識的條件施加來自策略數(shù)據(jù)庫432的策略來做出訪問控制決定。在一個實施例中,策略數(shù)據(jù)庫432存儲被施加到所接收的信息412的策略。在一個實施例中,由系統(tǒng)管理員至少部分地指定策略數(shù)據(jù)庫432中存儲的策略。在另一個實施例中,用戶執(zhí)行策略數(shù)據(jù)庫432中存儲的策略中的至少一些。將用戶指定的策略存儲為優(yōu)選項。策略數(shù)據(jù)庫432可以存儲在易失性或非易失性存儲器中,或者,例如通過多個服務器分布。在一個實施例中,僅當滿足一個或多個條件時策略才允許訪問資源。在另一個實施例中,策略允許訪問資源但禁止將資源傳輸?shù)奖镜貦C10。另一種策略可以根據(jù)請求訪問的本地機10位于安全網(wǎng)絡之內(nèi)而建立連接。在一些實施例中,該資源為應用程序,且本地機10已請求執(zhí)行應用程序。在這些實施例之一中,策略可以允許在本地機10上執(zhí)行應用程序。在這些實施例的另一個中,策略可以使本地機10能夠接收包括應用程序的文件流。在本實施例中,可以在隔離環(huán)境中存儲并執(zhí)行文件流。在這些實施例中的又一個中,策略可以僅允許在諸如應用服務器的遠程機上執(zhí)行應用程序,并要求遠程機向本地機10發(fā)送應用輸出數(shù)據(jù)?,F(xiàn)在參考圖4C,流程圖示出了策略引擎406基于所接收的有關本地機10的信息做出訪問控制決定所采取的步驟的一個實施例。在接收所收集的有關本地機10的信息時(步驟450),策略引擎406基于信息生成數(shù)據(jù)集(步驟452)。數(shù)據(jù)集426包含所接收的信息412所滿足的每個條件的標識符。策略引擎406將策略施加到數(shù)據(jù)集426中的每個標識的條件上。該應用產(chǎn)生出本地機10可以訪問的資源枚舉(步驟454)。策略引擎406然后向本地機10提供枚舉。在一些實施例中,策略引擎406生成用于向本地機提供枚舉的超級文本標志語言(HTML)文檔。參考圖4D,示出了根據(jù)本發(fā)明構建的網(wǎng)絡的一個實施例,其包括本地機10、收集代理404、策略引擎406、策略數(shù)據(jù)庫408、條件數(shù)據(jù)庫410、本地機20、會話服務器420、所存儲應用數(shù)據(jù)庫422、遠程機30’、第一數(shù)據(jù)庫428、遠程機30〃和第二數(shù)據(jù)庫432。簡而言之,當本地機10向訪問控制服務器406發(fā)送訪問應用程序的請求412時,收集代理404與本地機10通信,檢索關于本地機10的信息,并將本地機信息414發(fā)送到策略引擎406。如以上在圖4A和4B中所述,策略引擎406做出訪問控制決定。本地機10接收對與本地機10相關聯(lián)的可用應用的枚舉。在一些實施例中,會話服務器420在本地機10和與本地機10相關聯(lián)的多個應用會話之間建立連接。在其他實施例中,策略引擎406判定本地機10具有檢索包括應用的多個應用文件并在本地執(zhí)行應用程序的授權。在這些實施例之一中,遠程機30’存儲應用會話數(shù)據(jù)和包括應用程序的多個應用文件。在這些實施例的另一個中,本地機10與存儲應用會話數(shù)據(jù)和包括應用程序的多個應用文件的遠程機30’建立應用流傳輸會話?,F(xiàn)在參考圖4E,流程圖示出了會話服務器420為本地機10提供對其相關聯(lián)應用會話的訪問所采取的步驟的一個實施例。會話服務器420從含有策略引擎406所做出的訪問控制決定的策略引擎406接收有關本地機10的信息(步驟480)。會話服務器420生成相關應用枚舉(步驟482)。會話服務器420可以將本地機10連接到相關應用(步驟484)。在一個實施例中,該信息還包括本地機信息414。在另一個實施例中,該信息包括對在本地執(zhí)行應用程序的授權。會話服務器420生成相關應用枚舉(步驟482)。在一些實施例中,策略引擎406標識已經(jīng)與本地機10相關聯(lián)的多個應用會話。在其他實施例中,會話服務器420標識與本地機10相關聯(lián)的已存儲應用會話。在這些實施例中的一些中,會話服務器420在從策略引擎406接收信息時自動標識所存儲的應用會話。在一個實施例中,所存儲應用數(shù)據(jù)庫422駐留在會話服務器420上。在另一個實施例中,所存儲應用數(shù)據(jù)庫422駐留在策略引擎406上。所存儲應用數(shù)據(jù)庫422含有與農(nóng)場38中執(zhí)行應用會話或提供對應用會話數(shù)據(jù)和包括應用程序的應用文件的訪問的多個遠程機相關的數(shù)據(jù)。在一些實施例中,識別與本地機10相關聯(lián)的應用會話需要查詢與一個或多個遠程機相關聯(lián)的所存儲數(shù)據(jù)。在這些實施例中的一些中,會話存儲器420查詢與一個或多個遠程機相關聯(lián)的所存儲數(shù)據(jù)。在這些實施例中的其他實施例中,策略引擎406查詢與一個或多個遠程機相關聯(lián)的所存儲數(shù)據(jù)。在一些實施例中,第一應用會話在遠程機30’上運行,第二應用會話在遠程機30〃上運行。在其他實施例中,所有的應用會話都在農(nóng)場38之內(nèi)的單個遠程機30上運行。會話服務器420包括與用戶發(fā)起的應用會話相關的信息。會話服務器可以存儲在易失性或非易失性存儲器中,或者,例如通過多個服務器分布。表I示出了在示例性會話服務器420的一部分中包括的數(shù)據(jù):
權利要求
1.一種用于在網(wǎng)絡化計算機系統(tǒng)中在本地對文件元數(shù)據(jù)的請求做出響應而無需從遠程位置下載文件的方法,所述方法包括: (a)從遠程機接收(i)表示所述遠程機存儲的應用程序的目錄結構以及(ii)與包括所存儲應用程序的每個文件相關聯(lián)的元數(shù)據(jù); (b)存儲所述目錄結構和所述元數(shù)據(jù); (c)接收訪問與所述目錄結構中的特定文件相關聯(lián)的元數(shù)據(jù)的至少一個請求;以及 (d)利用所存儲的元數(shù)據(jù)對所述至少一個請求做出響應。
2.根據(jù)權利要求1所述的方法,還包括如下步驟: (e)接收枚舉與本地應用程序相關聯(lián)的目錄結構的請求;以及 (f)利用所存儲的目錄結構對所述請求做出響應。
3.根據(jù)權利要求1所述的方法,其中步驟(a)還包括從遠程機接收與包括所存儲的應用程序的每個文件相關聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)包括所述至少一個文件的別名。
4.根據(jù)權利要求1所述的方法,其中步驟(a)還包括從遠程機接收與包括所存儲的應用程序的每個文件相關聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)包括所述至少一個文件的名稱,所述名稱具有八個字符的長度、點和三個字符的擴展名。
5.根據(jù)權利要求1所述的方法,其中步驟(b)還包括在隔離環(huán)境中存儲所述目錄結構和所述元數(shù)據(jù)。
6.根據(jù)權利要求 1所述的方法,其中步驟(c)還包括接收確定本地是否有包括所存儲的應用程序的文件拷貝的請求。
7.根據(jù)權利要求6所述的方法,其中步驟(d)還包括訪問所存儲的元數(shù)據(jù)并偽裝地表示本地有所述文件的拷貝。
8.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足Windows操作系統(tǒng)FindFirst操作。
9.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足Windows操作系統(tǒng)Findnext操作。
10.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足標識目錄結構中的根節(jié)點的操作。
11.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足標識目錄結構中的節(jié)點的操作。
12.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足標識與目錄結構中的節(jié)點相關的訪問時間的操作。
13.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足標識與目錄結構中的節(jié)點相關的修改時間的操作。
14.根據(jù)權利要求1所述的方法,其中步驟(d)還包括響應于所接收的元數(shù)據(jù)滿足標識目錄結構中的被修改節(jié)點的操作。
15.根據(jù)權利要求1所述的方法,其中步驟(d)還包括生成枚舉所接收的目錄結構的本地目錄結構的枚舉。
16.一種用于在網(wǎng)絡化計算機系統(tǒng)中在本地對文件元數(shù)據(jù)的請求做出響應而無需從遠程位置下載文件的系統(tǒng),所述系統(tǒng)包括:目錄結構,其標識與至少一個應用程序相關聯(lián)的多個文件并包括與所述多個文件中的至少一個相關聯(lián)的文件元數(shù)據(jù),所述多個文件中的至少一個駐留在遠程機上; 存儲所述目錄結構的高速緩沖存儲器元件;以及 文件系統(tǒng)過濾器驅(qū)動程序,其攔截訪問與該至少一個遠程存儲的文件相關聯(lián)的元數(shù)據(jù)的請求,訪問所述高速緩沖存儲器元件并利用所存儲的目錄結構對所述至少一個請求做出響應。
17.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與至少一個應用程序相關聯(lián)的多個文件,所述至少一個應用程序駐留在遠程機上。
18.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與至少一個應用程序相關聯(lián)的多個文件,所述多個文件駐留在遠程機上。
19.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括所述至少一個文件的別名。
20.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括至少一個文件的名稱,所述名稱具有八個字符的長度、點以及三字符的擴展名。
21.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對Windows操作系統(tǒng)FindFirst請求做出響應的信息。
22.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián) 的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對Windows操作系統(tǒng)FindNext請求做出響應的信息。
23.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對標識目錄結構中的根節(jié)點的請求做出響應的信息。
24.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對標識目錄結構中的節(jié)點的請求做出響應的信息。
25.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對標識目錄結構中的被修改節(jié)點的請求做出響應的信息。
26.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對標識與目錄結構中的節(jié)點相關聯(lián)的修改時間的請求做出響應的信息。
27.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯(lián)的文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括用于對標識與目錄結構中的節(jié)點相關聯(lián)的訪問時間的請求做出響應的信息。
28.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括樹形結構,所述樹中的至少一個節(jié)點表示與應用程序相關聯(lián)的文件。
29.根據(jù)權利要求16所述的系統(tǒng),其中所述目錄結構還包括嵌入于至少一個文件中的文件元數(shù)據(jù)。
全文摘要
用于在應用程序的預定數(shù)量的執(zhí)行方法之間選擇的方法,所述方法包括響應于所接收的與本地機相關的信任狀提供本地機可用的多個應用的枚舉。響應于策略選擇執(zhí)行被枚舉的應用的預定數(shù)量的方法之一,所述預定數(shù)量的方法包括用于所述被枚舉的應用的應用流傳輸?shù)姆椒?。無須從遠程位置下載文件即可滿足對文件元數(shù)據(jù)的請求??梢栽L問與應用程序相關聯(lián)的目錄結構中的文件。本地機可以訪問包括應用程序的多個文件。
文檔編號G06F9/445GK103197936SQ20121037050
公開日2013年7月10日 申請日期2006年9月28日 優(yōu)先權日2005年10月7日
發(fā)明者J.H.諾爾德, D.R.霍伊, B.J.彼得森, T.N.特雷德, A.S.古亞拉蒂 申請人:茨特里克斯系統(tǒng)公司