在客戶端-伺服器網絡中用文件類型關聯執行分布式程序的方法
2023-09-15 07:42:35 3
專利名稱:在客戶端-伺服器網絡中用文件類型關聯執行分布式程序的方法
技術領域:
本發明總體上涉及在客戶端-伺服器網絡中分布式程序執行。更具體而言,本發明涉及用於當數據文件和可執行程序位於不同的計算節點上時自動地執行與數據文件相關聯的程序的方法。
背景技術:
在採用基於命令行的作業系統的桌面計算機中,例如來自華盛頓州雷蒙德的微軟公司的磁碟作業系統(DOS)或者來自紐約的ATT公司的UNIX系統啟動了對電腦程式的執行,這些作業系統需要用戶在命令提示符下輸入可執行程序的路徑和文件名。在輸入路徑和文件名之後,用戶還要輸入一個或多個「參數」,這些參數提供了控制可執行程序執行的附加信息。例如,典型的參數影響程序操作並包括程序將要處理的數據文件的名稱。如果參數指定了要處理的數據文件—例如一個表格—而它的內容得不到可執行程序支持—例如字處理器—,那麼結果將是從系統故障到雜亂的顯示。這個問題還存在於由不同的廠商所出售的同類軟體中來自某一廠商的字處理器通常不能讀取與另一廠商的字處理器相關聯的文件。
這個問題的一種技術方案涉及自願命名約定文件名以時期結尾並且擴展名指定它們的內容。但是,沒有任何東西可以確保不同的廠商不採用相同的文件擴展名、文件擴展名是正確的或者文件的內容由擴展名準確地指定。此外,沒有任何東西能夠確保面對一個擴展名不熟悉的文件時的用戶將會使用正確的可執行程序去訪問該文件的內容,假定該用戶有合適的可執行程序來開始。
來自庫珀蒂諾(Cupertino)的蘋果計算機的Macintosh作業系統(MacOS),CA為桌面計算機引進了一個對這個問題的技術方案。存儲在運行MacOS的計算機上的每個文件都有文件類型和與之相關聯的創建者標識符。MacOS下的每個可執行文件都有特殊的文件類型指示該文件是可執行的並且相關的創建者標識符與它能夠編輯的文件的創建者標識符相匹配。為了編輯一個數據文件,用戶選擇了該數據文件的圖形描繪,而這自動啟動了對共享該數據文件的創建者標識符的相關的可執行程序的執行。如果計算機沒有其創建者標識與所選擇的數據文件的創建者標識符相匹配的可執行程序,則就會有一個對話框來通知用戶事實真相。
到桌面以外看一看,現代的計算機網絡由大量計算機系統(稱為節點)組成,它們通過通信鏈路與其它計算機系統通信。典型地講,一些節點是客戶端節點,其它節點是伺服器節點。客戶端節點公式化(formulate)查詢並遞送給伺服器節點。客戶端節點的用戶通過運行在客戶端節點上的用戶界面輸入查詢。伺服器節點估算查詢並把響應遞送給客戶端節點以顯示在客戶端用戶界面上。
通常,伺服器節點運行多種由客戶端節點訪問並執行的應用程式。當客戶端節點運行一個應用程式時,該應該程序會在客戶端節點或伺服器節點上執行,這取決於計算機網絡所遵循的計算模型(model)。在基於伺服器的計算模型中,伺服器節點執行應用程式,只在計算機網絡上傳送客戶端用戶界面的控制信息以供由客戶端節點顯示。在基於客戶端的計算模型中,伺服器節點把應用程式傳輸到客戶端節點以便客戶端節點使用自己的資源執行程序。
現代計算機網絡的用戶希望有與運行Mac0S和華盛頓州雷蒙德的微軟公司提供的WINDOWS作業系統家庭的成員的桌面計算機相似的功能。但是,在客戶端-伺服器網絡中,可執行程序、數據文件以及用戶的虛擬桌面可能都位於不同的計算機上。這種情況下,對數據文件的選擇通常將調用上述作業系統功能,試圖在和數據文件所在的同一計算機上啟動對應用程式的執行。出於幾種原因,這可能不是用戶所希望的行為存儲數據文件的計算機可能沒有想要的應用程式;存儲數據文件的計算機可能是共享的,在執行可執行程序時易於使其他用戶遭受顯著的性能下降,等等。因此,希望提供促進分布式程序執行的設備和方法,由此在一臺計算機上選擇數據文件或它的表示以便啟動另一計算機上的相關可執行程序的執行。
系統概述本發明涉及用於分布式程序執行的方法。在一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中用於分布式程序執行的方法。該方法包括下列步驟接收規定數據文件類型和要在伺服器上執行的可執行程序之間的關聯的映射。該方法還包括下列步驟呈現客戶端系統上存儲的數據文件的圖形描繪,並接收對數據文件的圖形描繪的選擇。該方法還包括下列步驟用接收到的映射標識與所選擇的數據文件的類型相關聯的可執行程序並發送去執行該標識出的可執行程序的請求。
在一個實施例中,映射包括與數據文件的類型、一個與伺服器之間連接的程序、用於處理數據的可執行程序以及作為可執行程序輸入的其它參數有關的信息。在另一實施例中,映射可以定期更新或在需要時更新。另一實施例中,客戶端系統上的文件被修改以便包括接收到的映射。客戶端可以從映射標識該可執行程序和它的位置,並向標識出的一個或多個伺服器發送去執行該程序的請求。
在另一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中能夠實現分布式程序執行的方法。該方法包括提供用於規定在數據文件的類型和要在伺服器系統上執行的可執行程序之間的關聯的映射。數據文件存儲在客戶端系統上。該方法還包括下列步驟接收一個執行該可執行程序的請求並在伺服器上執行該可執行程序。
在又一方面,本發明涉及在包括一個客戶端系統和多個伺服器系統中用於分布式程序執行的方法。該方法包括下列步驟呈現伺服器系統上存儲的數據文件的圖形描繪並接收對圖形描繪的選擇。該方法還包括下列步驟把對數據文件的圖形描繪的選擇傳輸到伺服器系統並接收一個執行與所選擇的數據文件相關聯的可執行程序的請求。該請求被傳輸到伺服器系統。該方法附加地包括執行與所選擇的數據文件相關聯的可執行程序。
在一個實施例中,該方法還包括下列步驟接收與所選擇的數據文件相關聯的數據。該執行程序使用接收到的數據進行處理。在另一實施例中,接收一個指向所選擇的數據文件的指針,並且該指針可以被用來從伺服器系統檢索與所選擇的數據文件相關聯的數據。
在又一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中能夠實現分布式程序執行的方法。該方法包括下列步驟接收用於規定數據文件類型和在客戶端上執行的可執行程序之間的關聯的映射。該方法還包括下列步驟在伺服器系統上存儲數據文件,接收對存儲的數據文件的選擇,用接收到的映射標識出與所選擇的數據文件的類型相關聯的可執行程序。該方法附加地包括下列步驟向客戶端系統發送一個執行標識出的可執行程序的請求。
在一個實施例中,數據文件在伺服器系統上被修改以便包括接收到的映射。可以定期或在需要時更新接收到的文件。
在又一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中能夠實現分布式程序執行的方法。該方法包括下列步驟接收用於規定數據文件的類型和在客戶端系統上執行的可執行程序之間的關聯的映射。該方法還包括下列步驟在伺服器系統上存儲數據文件,在客戶端系統上接收對所存儲的數據文件的選擇,並把對數據文件的選擇傳輸到伺服器系統。該方法還包括下列步驟使用接收到的、規定關聯的映射來標識與所選擇的數據文件類型相關聯的可執行程序。該方法附加地包括下列步驟向客戶端系統發送一個執行標識出的可執行程序的請求並在客戶端系統上該執行可執行程序。
在又一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中實現分布式程序執行的方法。該方法包括下列步驟呈現在web伺服器上存儲的數據文件的圖形描繪。接收一個執行第一個可執行程序的請求,該請求包括涉及與數據文件相關聯的第二個可執行程序的信息。第二個程序在客戶端系統上執行或在多個伺服器系統中的其中一個伺服器系統上執行。來自第二個可執行程序的應用程式輸出數據由第一個可執行程序接收並為了顯示而將其格式化。在其它實施例中,該方法還包括接收第一個可執行程序的步驟。在另一些實施例中,該方法包括下列步驟接收用於確定要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行一個標識出的可執行程序的規則。在另一個實施例中,該方法包括用第一個可執行程序顯示應用程式輸出的步驟。在這些實施例裡的一些實施例中,該方法包括接收與數據文件相關聯的數據的步驟。
在另一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中實現分布式程序執行的方法。傳輸數據文件的圖形描繪並做出一個執行第一個可執行程序的請求。第一個可執行程序接收應用程式輸出數據。該請求可以包括涉及在客戶端系統或其中一個伺服器系統上執行的第二個應用程式的信息。在一個實施例中,該方法包括提供第一個可執行程序或指向數據文件的指針的步驟。在另一個實施例中,該方法包括用所提供的指針對與該數據文件相關聯的數據的請求提供服務的步驟。在又一個實施例中,該方法包括提供數據文件內容的步驟。
在又一個方面,本發明涉及在包括一個客戶端系統和多個伺服器系統的網絡中實現分布式程序執行的方法。該方法包括通過web系統傳輸在web伺服器上存儲的數據文件的圖形描繪的步驟。請求客戶端系統執行第一個可執行程序以接收應用程式輸出。該請求包括涉及在客戶端系統或多個伺服器系統中的其中一個伺服器系統上執行的第二個可執行程序的信息。客戶端系統執行第一個可執行程序。在一個實施例中,該方法包括向客戶端系統提供第一個可執行程序的步驟。在又一個實施例中,該方法包括在客戶端系統接收用於確定要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行第二個可執行程序的規則。
附圖簡述本發明是用所附權利要求中的特徵指出的。通過參看下面的描述和附圖會更好地理解本發明的上述以及更多的優勢,附圖中
圖1A是通過網絡與一組伺服器節點通信的客戶端節點的實施例的圖,其中可以確定一個客戶端節點的程序鄰居;圖1B是採用圖形用戶界面的客戶端節點的實施例的顯示的說明;圖2A是說明一個示例性過程的框圖,其中一個伺服器按照該過程啟動對用於確定客戶端節點的程序鄰居的應用程式的執行;圖2B是說明一個示例性過程的框圖,客戶端節點按照該過程啟動對用於確定該客戶端節點的程序鄰居的應用程式的執行;圖2C是說明示例性過程的框圖,客戶端節點按照該過程使用web瀏覽器應用程式確定它的程序鄰居;圖3A、3B和3C是說明示例性過程的框圖,客戶端節點按照這些過程從客戶端節點上所顯示的程序鄰居窗口啟動應用程式;圖3D是說明一個示例性過程的框圖,客戶端節點通過該過程從客戶端節點上所顯示的程序鄰居web頁面啟動應用程式;圖4是基於客戶端的計算環境的框圖,在這種環境中已經安裝了程序鄰居應用程式的客戶端節點與多個伺服器節點中的其中一個伺服器節點進行通信;
圖5是基於伺服器的計算環境的框圖,在這種環境中客戶端節點與已經安裝了程序鄰居應用程式的伺服器節點進行通信;圖6A是在執行了本發明的程序鄰居應用程式之後客戶端節點的顯示屏幕上的一個示例性顯示的截屏圖;圖6B是在執行了本發明的程序鄰居應用程式之後客戶端節點的顯示屏幕上的另一示例性顯示的截屏圖;圖7是一個過程的實施例的流程圖表示,按照該過程通知客戶端節點與應用伺服器上的應用程式使用的可用性有關的信息;圖8A是一個過程的實施例的流程圖表示,用戶按照該過程通過選擇由他或她的客戶端節點所寄宿(host)的文件在伺服器節點上執行應用程式;圖8B是伺服器節點在圖8A的實施例中的角色的流程圖表示;圖9A是一個過程的實施例的流程圖表示,用戶按照該過程通過選擇由伺服器節點提供的數據文件在他或她的客戶端節點上執行應用程式;圖9B是伺服器節點在圖9A的實施例中的角色(role)的流程圖表示;圖10A是一個過程的實施例的流程圖表示,用戶按照該過程通過選擇由web伺服器寄宿的數據文件執行由伺服器節點寄宿的應用程式;圖10B是web伺服器在圖10A的實施例中的角色的流程圖表示。
在附圖中,在不同的圖中相同的參考標記通常指相同的部分。不必對所述附圖進行縮放、強調,而是將其置於此用以說明本發明的原理。
發明詳述圖1展示了通過網絡40與計算系統(應用伺服器)30、32、34和36通信的第一計算系統(客戶端節點)10和第二計算系統(客戶端節點)20。網絡40可以是區域網(LAN)或廣域網(WAN),例如網際網路或全球資訊網。客戶端節點10、20的用戶可以通過多種連接方式連接到網絡40,包括標準電話線、LAN或WAN連結(例如,T1、T3、56KB、X.25)、寬帶連接(ISDN、幀中繼、ATM)和無線連接。連接可以用多種通信協議(例如,TCP/IP、IPX、SPX、NetBIOS、Ethernet、RS232和直接異步連接)建立。
在一個實施例中,客戶端節點10是個人計算機(例如,使用來自x86、680x0、PowerPC、PA-RISC或MIPS處理器家族的微處理器)、智能或啞終端、網絡計算機、無線設備、信息設備、工作站、小型機、大型機或其它有圖形用戶界面和足夠的持久性存儲以執行通過網絡40從應用伺服器30、32、34、36下載的應用程式的計算設備。客戶端節點10所支持的作業系統可以包括WINDOWS作業系統家庭的任意成員、MaxOS、JavaOS和UNIX的各種變體(例如,Solaris、SunOS、Linux、HP-UX、A/IX和基於BSD的發布)。客戶端節點10可以包括顯示器12、鍵盤14、用於存儲下載的應用程式的存儲器16、處理器17和滑鼠18。存儲器16可以提供持久性或易失性存儲。
處理器17能夠執行位於客戶端節點10上的應用程式並在顯示屏幕12上顯示最後得到的基於窗口的桌面。客戶端節點10上的這種本地處理是依照上述基於客戶端的計算模型。圖1B中描繪了出現在客戶端節點10的一個實施例中的典型的基於窗口的桌面。客戶端節點20可用的資源被以一個或多個圖標100圖形化地呈現出來。存儲器16被呈現為硬碟圖標104。存儲器16中存儲的下載的應用程式和數據文件呈現為單獨的文件圖標。例如,存儲器16包含下載實現字處理器的應用程式,如圖標108所示,並且還包含適於由該字處理程序處理的文檔的數據文件,如圖標112所示。
典型地,用戶利用鍵盤14、滑鼠18或一些其它輸入設備(諸如觸覺接口,未顯示)來操縱桌面。利用輸入設備,用戶通過選擇圖標108來啟動對字處理器程序的執行。利用字處理器程序,用戶操縱包含由圖標112所表示的文檔的數據文件的內容。但是,用戶更可能避免定位和激活字處理器程序,有利於選擇數據文件本身。如上所述,帶有圖形用戶界面的最現代的作業系統將檢查所選擇的數據文件,檢索與選擇的數據文件相關聯的一個或多個參數,標識與所選擇的數據文件相關聯的、桌面計算機上的可執行應用程式,開始執行相關的應用程式,然後把所選擇的數據文件的內容提供給相關聯的應用程式以供進行處理。
在其它實施例中,客戶端節點20是任意終端(基於Window或非Window系統),或按照基於伺服器的計算模型來進行工作的瘦客戶端設備。在基於伺服器的計算模型中,應用程式的執行全部都發生在應用伺服器30、32、34上,用戶界面、擊鍵和滑鼠移動都被通過網絡40傳輸到客戶端節點20。用戶界面可以是文本驅動(例如,DOS)或圖形驅動的(例如WINDOW)。客戶端節點20所支持的平臺包括DOS和用於基於window終端的WINDOWS CE。客戶端節點20包括顯示屏幕22、鍵盤24、滑鼠28、處理器(未顯示)和持久性存儲器(未顯示)。
應用伺服器30、32、34和36是控制對網絡其它部分(例如,工作站、印表機)的訪問的任意計算設備。畫出四個應用伺服器僅是為了論述方便;您將理解到在本發明的各種不同實施例中可以有更多或更少的應用伺服器連接到網絡40。伺服器30、32、34和36如上所述按照基於客戶端的計算模型和基於伺服器的計算模型進行工作。
每個應用伺服器30、32、34和36都寄宿供客戶端節點10和20訪問的一個或多個應用程式。客戶端節點可用的應用被稱為發布的應用。這種應用的例子包括字處理程序(如WORD)和電子表格程序(如EXCEL)(它們都由華盛頓州雷蒙德的微軟公司提供)、金融報告程序、顧客註冊程序、技術報告程序、顧客資料庫程序或應用設置管理器。
在一個實施例中,伺服器30、32、34屬於相同的域38。在網絡40中,域是在一個安全資料庫的控制下包括一組應用伺服器和客戶端節點的子網。在一個實施例中,一個域包括一個或多個「伺服器場(farm)」,即一組連接在一起的伺服器充當單個伺服器系統以提供集中式管理。相反,一個伺服器場可以包括一個或多個域。對屬於相同伺服器場的兩個不同域的伺服器來說,在域之間需要有一種信任關係來規定不同域之間的關聯,這種信任關係允許用戶使用單個驗證憑證來訪問與各個域相關聯的資源。
在一個實施例中,應用伺服器36和38處在不同的域中。在另一實施例中,應用伺服器36和伺服器30、32、36、38處在相同的域中。在任一兩個實施例中,應用伺服器30、32和34屬於同一伺服器場,伺服器36屬於另一伺服器場,或者應用程式器30、32、34和36全部都屬於相同的伺服器場。當有新的伺服器連接到網絡40時,新伺服器要麼加入已有的伺服器場,要麼啟動一個新的伺服器場。
在一個實施例中,網絡40包括主伺服器節點,用於在應用伺服器30、32、34和36之間執行負載平衡。在另一個實施例中,主伺服器節點是應用伺服器30、32、34和36的其中之一。主伺服器節點包括一個伺服器地址列表和與其它應用伺服器中的每一個相對應的負載信息。使用可用伺服器的列表和它們對應的負載級別,主伺服器節點根據可用伺服器的列表和它們對應的負載級別把客戶端節點定向到一個特定的伺服器節點,在其上執行應用程式。或者,應用伺服器30、32、34和36在它們自己之間以對等方式合作,以交換諸如負載級別這類管理信息,允許任意伺服器30、32、34、36對客戶端節點10、20作出的請求予以應答。
程序鄰居依照本發明的原理,任一客戶端節點10或20的用戶獲悉網絡40中的應用伺服器30、32、34和36所寄宿的應用程式的可用性,而不用用戶知道到哪裡找到這樣的應用或者輸入連結到這樣的應用所必需的技術信息。這些可用應用程式包括用戶的「程序鄰居」。用於確定客戶端節點的程序鄰居的系統包括一個應用程式(以下稱為「程序鄰居」應用)、存儲該應用程式組件的存儲器以及執行該應用程式的處理器。
程序鄰居應用程式被如下安裝在客戶端節點10的存儲器中和/或應用伺服器30、32、34、36上。程序鄰居應用是服務、應用程式編程接口(API)和用戶界面(UI)程序的集合,其向客戶端節點10、20的用戶公開應用伺服器所寄宿的、授權每個客戶端節點去使用(即,執行)的那些應用程式。
根據程序鄰居應用運行的一個應用伺服器從伺服器場的每個應用伺服器收集應用-有關信息。每個寄宿的應用的應用-相關的信息包括但不限於寄宿該應用的伺服器的地址;應用名;被授權使用該應用的用戶或用戶組;該應用所支持的數據類型;與所支持的數據類型相關聯的任何文件類型;與該應用相關聯的任何文件類型;條件性規則,其指定了在伺服器節點上或客戶端節點上執行應用;以及在建立連接運行該應用之前客戶端節點上所需的最低能力。例如,該應用可以流視頻數據,因此所需要的最低能力是客戶端節點支持視頻數據。其它示例性需求是客戶端節點支持音頻數據或加密的數據。應用-相關的信息可以被存儲在如下所述的資料庫中。
當客戶端節點與網絡40相連時,客戶端節點的用戶提供用戶憑證。用戶憑證典型地包括用戶名、密碼和用戶被授權的域名。用戶憑證是從智慧卡、基於時間的令牌、社會保障號碼、用戶密碼、個人標識(PIN)號碼、基於對稱密鑰或橢圓曲線加密的數字證書、用戶的生物特徵、通過其為授權獲得並提交客戶端節點用戶身份標識的任意其它方式。
響應客戶端節點的伺服器根據用戶憑證來授權用戶。在一個實施例中,用戶憑證被存儲在程序鄰居應用正在執行的任何地方。例如,在一個實施例中,客戶端節點10執行程序鄰居應用,用戶憑證也存儲在客戶端節點10。在另一實施例中,一個應用伺服器正在執行程序鄰居應用,用戶憑證就被存儲在那個伺服器中。
根據用戶憑證和應用-相關的信息,伺服器還要確定應用伺服器所寄宿的哪些應用程式可以供客戶端節點的用戶使用。伺服器把表示可用的應用程式的信息傳輸到客戶端節點。這個過程消除了客戶端節點的用戶去建立應用連接的需要。此外,伺服器管理員還可以在不同的客戶端節點用戶之間控制對應用的訪問。
由伺服器執行的用戶授權足夠授權對呈現給客戶端節點的每個所寄宿的應用程式的使用,儘管這樣的應用可能駐留在另一伺服器上。因此,當客戶端節點啟動對所寄宿的應用中的其中一個應用的執行時,由用戶對用戶憑證的附加輸入對授權該應用的使用可能就是不必要的。因而,用戶憑證的單個記錄足以確定可用的應用並授權在沒有由客戶端用戶進行的附加的、手工登錄授權過程的情況下授權啟動這樣的應用。
客戶端節點10、20或應用伺服器都能夠像結合圖2A-2c所描述的那樣啟動程序鄰居應用。結果被顯示在客戶端節點10、20的顯示屏幕12、22上。在圖形環境中,結果可以顯示在程序鄰居圖形窗口中,每個授權的應用程式都可以用該窗口中的一個圖標表示。
程序鄰居應用的一個實施例過濾了那些客戶端節點10、20未被授權使用的應用程式,並且只顯示已授權的(可用)應用程式。在其它實施例中,程序鄰居應用顯示已授權的和未授權的應用。當未授權的應用未從顯示中被過濾掉時,可以提供一個通知指示這樣的應用是不可用的。或者作為選擇,程序鄰居應用也可以向客戶端節點的用戶報告應用伺服器30、32、34、36寄宿的所有應用,而不標識出哪些應用是客戶端節點10、20被授權執行的、哪些是未被授權的。隨後,當客戶端節點10、20嘗試運行這些應用中的一個時確定授權。
圖2A展示了一種示例過程,伺服器按照該過程啟動程序鄰居(PN)應用並把PN應用的結果呈現給客戶端節點10。伺服器響應於由客戶端節點10發出的特定應用程式的請求42而啟動PN應用。請求傳遞至主伺服器節點,在這個例子中是伺服器30。主伺服器節點30考慮負載平衡和應用可用性,向客戶端節點10指示(箭頭43)該廣受歡迎的應用在伺服器32上可用。客戶端節點10和伺服器32建立連接(箭頭45和46)。當客戶端節點10和伺服器32按照基於客戶端的計算模型進行工作時,通過這個連接,伺服器32能夠把特定應用的可執行代碼傳輸給客戶端節點10。或者作為選擇,當客戶端節點10和伺服器32按照基於伺服器的計算模型進行工作時,伺服器32執行該特定應用並把圖形用戶界面傳輸給客戶端節點10。另外,主伺服器節點或者伺服器32能夠執行程序鄰居應用42並把結果推送回至(箭頭43或46)客戶端節點10以便當客戶端節點10請求程序鄰居應用時,程序鄰居在客戶端節點10上已經可用。
圖2B展示了另一個示例過程,客戶端節點10按照該過程啟動對程序鄰居應用的執行,並且伺服器把PN應用的結果呈現給客戶端節點10。客戶端節點10啟動程序鄰居應用(例如,通過選擇代表該應用的程序鄰居圖標47)。對程序鄰居應用的請求被傳給主伺服器節點,在這個例子中是伺服器30。如果該應用在主伺服器節點30上,那麼主伺服器節點30就能夠執行程序鄰居應用並返回結果給客戶端節點10。或者作為選擇,主伺服器節點30也可以向客戶端節點10指示(箭頭51)程序鄰居應用41在另一伺服器上可用,在這個例子中是伺服器32。客戶端節點10和伺服器32建立連接(箭頭53和54),通過該連接客戶端節點10請求執行程序鄰居應用41。伺服器32能夠執行應用41並把結果(即,圖形用戶界面)傳輸給客戶端節點10。
圖2C展示了另一種示例過程,客戶端節點10按照該過程啟動對程序鄰居應用的執行,在這個例子中是通過全球資訊網。客戶端節點20執行web瀏覽器應用80,比如由像華盛頓州雷蒙德的微軟公司開發的INTERNET EXPLORER。客戶端節點20通過web瀏覽器80傳輸對與駐留在伺服器30上的HTML頁面對應的統一資源定位符(URL)的訪問請求82。在一些實施例中,由伺服器30返回84給客戶端節點20的第一個HTML頁面是試圖標識客戶端節點20的驗證頁面。
驗證頁面允許客戶端節點20通過web瀏覽器80來把用戶憑證傳輸到伺服器30以進行驗證。所傳輸的用戶憑證由伺服器30或該伺服器場中的另一伺服器加以驗證。這允許安全域被投影到伺服器30上。例如,如果伺服器30運行WINDOWS NT作業系統並且驗證伺服器運行UNIX作業系統,那麼就可以說UNIX安全域已經被投影到伺服器30上了。用戶憑證可以以「明文(in the clear)」來傳輸,或加密後傳輸。例如,用戶憑證可以通過加密套接字層(SSL)連接被傳輸,它用RC3算法對數據加密該RC3算法由加利福尼亞州聖馬特奧的RSA數據安全公司開發。
伺服器30可以驗證從客戶端節點接收到的用戶憑證。伺服器30可以把用戶憑證傳遞至另一伺服器以進行驗證。在這個實施例中,驗證伺服器可以和伺服器30處在不同的域中。客戶端節點20的驗證過的用戶憑證可以以會話前的(per-session)cookie的形式被存儲在客戶端節點20上的未被web瀏覽器80顯示的域中,或者以web頁面所維護的任意公共方式來存儲。在一些實施例中,伺服器30所關聯的伺服器場可以允許賓客用戶(即,不具有已分配的用戶憑證的用戶)訪問該場中的伺服器所寄宿的應用。在這些實施例中,驗證頁面可以提供一種機制,用來允許客戶端節點20標識它是賓客用戶,例如按鈕或菜單選擇。在其它實施例中,伺服器30可以完全忽略驗證頁面。
仍然參看圖2C,一旦客戶端節點20被伺服器30驗證通過,伺服器就準備並向客戶端節點20傳輸一個包括程序鄰居窗口58的HTML頁面88,在程序鄰居窗口58中出現了代表客戶端節點20有權訪問的應用程式的圖標57、57』。客戶端節點20的用戶通過選擇圖標57來啟動對圖標57所表示的應用的執行。
圖3A展示了在客戶端節點10、主伺服器節點(在這個例子中是伺服器30)和伺服器32之間的一種示例性通信過程。客戶端節點10和伺服器32之間有活動(active)連接72。客戶端節點10和伺服器32可以使用活動連接72來交換有關第一個應用程式的執行的信息。客戶端節點10的用戶憑證被存儲在該客戶端節點上。用戶憑證的這種存儲期可以採用高速緩存或持久性存儲器。
在這個實施例中,程序鄰居應用程式運行在客戶端節點10上。客戶端節點顯示具有程序鄰居窗口58,該窗口呈現出表示第二個應用程式的圖形圖標。客戶端節點10的用戶可通過用滑鼠或其它輸入設備選擇圖標57而啟動第二個應用程式。該請求通過連接59傳遞到主伺服器節點30。主伺服器節點30通過連接59來向客戶端節點10指示該廣受歡迎的應用在伺服器32上可用。客戶端節點10發信號通知伺服器32建立第二個連接70。伺服器32向客戶端節點10請求用戶憑證以便授權訪問第二個應用程式。當成功授權時,客戶端節點10和伺服器32就建立第二個連接70並交換與第二個應用程式的執行有關的信息。因此,客戶端節點10和伺服器32在多個連接上互相通信。
圖3B展示了在客戶端節點20、主伺服器節點(在這個例子中是伺服器30)、以及伺服器32、34和36之間的一個示範性通信過程。客戶端節點20和伺服器32之間有活動連接73。客戶端節點20和伺服器32可以使用活動連接73來交換與第一個應用程式的執行有關的信息。客戶端節點20的用戶憑證被存儲在伺服器32的高速緩存或持久性存儲器中。
在這個實施例中,程序鄰居應用運行在伺服器32上。伺服器32包括提供基於伺服器的客戶端引擎62、使伺服器32能夠在客戶端節點20的容量下運行的軟體。客戶端節點20顯示帶有程序鄰居窗口58,該窗口中呈現出分別表示第二個應用程式和第三個應用程式的圖形圖標57、57』。客戶端節點20的用戶能夠通過選擇圖標57來啟動第二個應用程式。啟動第二個應用程式的請求通過活動連接73而傳到伺服器32,伺服器32把該請求轉發到主伺服器節點30(箭頭65)。
主伺服器節點30向伺服器32指示(箭頭65)該廣受歡迎的應用在伺服器34上可用。伺服器32聯繫伺服器34以建立連接66。為了授權對該應用的訪問,伺服器34從伺服器32獲取客戶端節點20的用戶憑證。伺服器32和伺服器34建立連接(箭頭66),通過該連接伺服器32請求來執行第二個應用程式,並且伺服器34把圖形用戶界面結果返回給伺服器32。伺服器32把圖形用戶界面結果轉發到客戶端節點20,結果在那裡被顯示出來。因此,在客戶端節點20和伺服器34之間交換的信息經過了伺服器32。
同樣,客戶端節點20能夠通過選擇圖標57』來啟動第三個應用程式。啟動第三個應用程式的請求傳到伺服器32。伺服器32把該請求轉發到主伺服器節點30,伺服器節點30考慮負載平衡和應用程式可用性以便確定哪個伺服器能夠處理該請求。在這個例子中,主伺服器節點指示伺服器36能夠運行第三個應用程式。
伺服器32和伺服器36建立連接(箭頭74),通過該連接伺服器32請求執行第三個應用程式,伺服器36把結果返回給伺服器32。為了允許對第三個應用程式的執行,伺服器36能夠驗證客戶端節點20的用戶憑證,所述這些憑證是從伺服器32獲得的。伺服器32把結果轉發到客戶端節點20,結果在那裡被顯示。因此,執行第三個應用程式的結果通過伺服器32在客戶端節點20和伺服器36之間傳遞。
從這個說明中應該理解到客戶端節點20能夠通過與伺服器32的一個連接運行多個應用程式,而伺服器32維持多個連接(在這個例子中,與伺服器34有一個連接,與伺服器36有第二個連接)。此外,伺服器32把從伺服器34接收到的信息和從伺服器36接收到的信息合併成一個數據流以供傳輸給客戶端節點20。
圖3C展示了在客戶端節點20、主伺服器節點(在這個例子中是伺服器30)、和伺服器32和34之間的一種示範性通信過程。客戶端節點20和伺服器32之間有活動連接76。客戶端節點20和伺服器32可以使用活動連接76來交換與第一個應用程式的執行有關的信息。客戶端節點20能夠在高速緩存或持久性存儲器中存儲用戶憑證。
在這個實施例中,程序鄰居應用運行在伺服器32上。客戶器節點20顯示帶有程序鄰居窗口58,該窗口中呈現出表示第二個應用程式的圖標57。客戶端節點20的用戶通過選擇圖標57能夠啟動第二個應用程式。啟動第二個應用程式的請求傳到伺服器32。伺服器32通過返回應用相關的信息-例如應用的名字以及客戶端節點20運行第二個應用所需的能力來對客戶端節點20作出響應(即「回調」)。
利用伺服器32所提供的信息,客戶端節點20然後通過連接77和主伺服器節點30通信來確定執行第二個應用程式的伺服器。在這個例子中,該伺服器是伺服器34。客戶端節點20隨後建立到伺服器34的連接78。伺服器34從客戶端節點20請求用戶憑證以便驗證客戶端節點20的用戶。第二個應用程式在伺服器34上執行,伺服器34通過建立的連接78來把圖形用戶界面返回給客戶端節點20。因此,客戶端節點20可以在多個伺服器之間存在多個活動連接。
圖3D展示了在客戶端節點20、伺服器30(它在這個例子中充當web伺服器)和伺服器32之間的一種示例性通信過程。客戶端節點20如上結合圖2C所述那樣向伺服器30驗證其自身。在一個實施例中,伺服器30訪問輸出顯示模板90,諸如SGML、HTML或XML文件,以便將其用作為構建要傳輸到客戶端節點20的程序鄰居窗口的基礎。該模板可以存儲在與伺服器30相關聯的易失性或持久性存儲器中,或者存儲在大容量存儲器92中,例如磁碟或光碟設備,如圖3D所示。
在這個實施例中,模板90是包含程序鄰居特定標記的標準SCML、HTML或XML文檔,程序鄰居特定標記被動態信息代替。標記向伺服器30指示在輸出顯示的什麼地方插入與可用應用相對應的信息,例如圖標圖像。在一個具體實施例中,程序鄰居專用標記被嵌入在文件內的注釋中,以允許文件保持與標準解釋器兼容。在另一實施例中,程序鄰居專用標記是用作模板基礎的標記語言的擴展。
表1中列出了依照本發明在模板中可能用到的HTML標記的例子
可以提供其它標記來設置控制域並提供涉及程序鄰居應用的條件性處理。
在一個實施例中,所述模板是利用(例如)麻薩諸塞州劍橋的Allaire公司的COLD FUSION或華盛頓州雷蒙德的微軟公司的ACTIVESERVER PAGES來動態構建的。或者作為選擇,所述模板可以是靜態的。程序鄰居應用解析該模板,替換上面提到的那些程序鄰居專用標記。不是程序鄰居專用標記被留在文件中以便由在客戶端節點20上執行的瀏覽器程序80解析。
在一個實施例中,提供了模板解析器對象,它接受HTML模板作為輸入,解釋模板中存在的程序鄰居專用標記,並給原始模板提供用合適的文本替換的所有程序鄰居標記。可以從web瀏覽器接口向模板解析器對象傳遞cookie、URL查詢串或控制域以便提供應該用來替換程序鄰居專用標記的信息。
在另一實施例中,程序鄰居應用允許腳本通過應用程式編程接口來訪問信息。腳本例如可以使用VBScript或Jscript來加以編寫。在這個實施例中,腳本語言被用來用應用響應腳本發出的查詢而返回的信息動態地生成輸出顯示。一旦生成了輸出顯示,就把它傳輸到客戶端節點20以由瀏覽器程序80顯示。
客戶端節點20的用戶能夠通過選擇程序鄰居web頁面中顯示的圖標57、57』來啟動應用。在一些實施例中,每個圖標57、57』是一個已編碼的URL,它規定了應用程式的位置(即,在哪個伺服器上寄宿它,或主伺服器的地址);與該應用相關聯的啟動命令;標識應該怎樣顯示該應用的輸出的模板(即,「嵌入」在瀏覽器中的窗口或單獨的窗口),在一些實施例中,URL包括文件或對該文件的引用,該文件包含客戶端用以創建到寄宿該應用的伺服器的連接所必須的信息。這個文件可以由程序鄰居應用動態創建。客戶端節點20和被標識為寄宿所請求的應用的伺服器(在這個例子中是伺服器32)建立連接(箭頭94),並交換與所期望的程序的執行有關的信息。在一些實施例中,連接94是使用佛羅裡達州Fort Lauderadalo的Citrix系統公司開發的獨立計算結構(ICA)協議建立的。因而,客戶端節點20可以在與瀏覽器窗口分開的窗口中顯示應用輸出,或者它可以把應用輸出「嵌入」到web瀏覽器中。
圖4為程序鄰居應用的基於客戶端的實現說明了其程序組件的一種示例性配置。程序鄰居應用的基於客戶端的實現方案可以用在使用基於伺服器的計算模型(在這種模型中伺服器執行程序鄰居應用)或基於客戶端的計算機模型(在這種模型中客戶端節點10在本地執行程序鄰居應用)的網絡中。程序鄰居應用包括程序鄰居服務(PNSVC)組件44、應用資料庫組件48、程序鄰居應用編程接口(PNAPI)組件52、程序鄰居應用用戶界面組件56和本地高速緩存60。
應用伺服器30例如包括服務組件(PNSVC)44和應用資料庫48。客戶端節點10,它是能夠支持程序鄰居應用的基於客戶端的實現的(客戶端節點的代表性示例,包括應用程式編程接口PNAPI 52、用戶接口組件56和本地高速緩存60組件。PNAPI 52與用戶接口組件56和本地高速緩存60通信。PNSVC 44與應用資料庫48進行通信,並通過通信鏈路62與客戶端節點10上的PNAPI 52進行通信。
通信鏈路62可以用(例如)ICA協議和工業標準傳輸協議來建立,ICA是通用的表示層服務協議,其被設計成用來運行在工業標準網絡協議之上,例如TCP/IP、IPX/SPX、NetBEUI,工業標準傳輸協議如ISDN、幀中繼、異步傳輸模式(ATM)。ICA協議提供虛擬通道,它們是面向會話的傳輸連接,可由應用層代碼用來發出命令以交換數據。虛擬通道命令被設計為與客戶端節點的功能緊密集成在一起。ICA協議所支持的一種類型的虛擬通道連接是程序鄰居虛擬通道。
程序鄰居虛擬通道協議可以包括四組命令(1)與初始化相關的命令;(2)與單一驗證有關的命令,可由每個想得到用戶憑證的拷貝的客戶端節點支持;(3)與應用數據有關的命令,用於實現程序鄰居用戶界面;和(4)與應用啟動回調有關的命令,用於運行伺服器上的用戶界面。
應用資料庫應用資料庫48是為一個伺服器場或一組可信的域中所有公開(或發布的)應用驗證過的用戶和組信息的高速緩存。伺服器場中的每個伺服器能夠在持久性存儲器中維持它自己的應用-相關的信息並在易失性存儲器中堆積(build up)資料庫48。在另一實施例中,資料庫48中所有收集到的應用-相關的信息都可以被存儲在持久性存儲器中並可由該伺服器場中的每個別的伺服器訪問。伺服器48可以專有形式(例如,存儲器中的鍊表)實現,或使用Novell的目錄服務(NDS)或國際電信聯盟(ITU)為分布式電子目錄所定義的X.500標準所附的任意目錄服務來實現。
應用資料庫48包括一個應用伺服器列表。列表中的每個伺服器有相關聯的應用集合。與每個應用相關聯的是應用-相關的信息,可以包括應用名、伺服器列表、被授權使用該應用的客戶端用戶。下面的表2說明了資料庫中所維護的應用-相關的信息的一個簡單示例。用戶A和用戶B是客戶端節點10、20的用戶,″n/a″指示該應用被寄宿,但客戶端用戶不可用,″-″指示該應用沒有被寄宿。
表2
表2展示了伺服器30、32、34,由這些伺服器寄宿的應用(電子表格、客戶資料庫、字處理器和計算器)以及被授權使用這些應用的用戶的列表。例如,伺服器30寄宿電子表格程序、客戶資料庫和字處理器。用戶A被授權使用電子表格,用戶B被授權使用客戶資料庫,沒有用戶被授權使用字處理器。您將會理解的是,也可以使用其它技術來指示誰被授權使用特定的應用。例如,資料庫中存儲的用戶信息可以用來指示那些不被授權使用特定應用的那些用戶,而不是被授權使用的那些用戶。
為了獲得存儲在資料庫48中的信息,伺服器30從伺服器場中的每一伺服器獲得關於這些伺服器上的應用的應用-相關的信息,包括指示哪些客戶端用戶和伺服器被允許訪問每個特定應用的控制信息。資料庫中維護的應用-相關的信息在伺服器30重啟之後可以保留或不保留。
應用資料庫48可以是存儲在應用伺服器30並且該伺服器場中的所有伺服器都可以訪問的中央資料庫中。因此,應用-相關的信息可以供其它伺服器使用,例如在會話登錄和應用啟動期間執行公布的應用驗證的那些伺服器。在另一實施例中,可以根據每個伺服器從與伺服器場中的各個伺服器的通信中獲得的信息而在每個應用伺服器上維護應用資料庫48。
程序鄰居服務程序(PNSVC)每個在其上安裝了程序鄰居應用的伺服器30、32、34和36都執行PNSVC軟體44。運行在每個伺服器30、32、34、36上的PNSVC軟體44和每個別的伺服器建立通信鏈路(即,指定管道)。伺服器30、32、34和36可以在指定管道上交換應用-相關信息。在另一實施例中,PNSVC軟體44通過遠程註冊調用從伺服器場中的其它伺服器檢索應用-相關的信息(例如,服務組件44成組地向其它伺服器傳輸數據報,請求與那些伺服器寄宿的應用程式所對應的應用-相關的信息)。PNSVC 44軟體還在應用資料庫48中維護了公開應用的組和用戶的關係並在驗證客戶端用戶時訪問該信息。伺服器30的管理員可以使用用戶界面來配置PNSVC 44。
PNSVC 44的其它功能包括實現PNAPI 52所請求的服務和功能,以及使用程序鄰居虛擬設備驅動器(VDPN)來與客戶端節點10上的PNAPI 52進行通信。VDPN按照上面為建立和維護ICA連接所描述的程序鄰居虛擬通道協議操作。
程序鄰居應用程式編程接口(PNAPI)PNAPI 52是一組由程序鄰居應用用來執行各種操作(例如,打開顯示屏幕上的窗口,打開文件,顯示消息框等)的軟體功能或服務。PNAPI 52為啟動通過運行程序鄰居應用產生的應用對象(例如,圖標)和繼承(legacy)(即,前趨或有時是現有的)客戶端用戶界面中的應用對象提供了一種通用機制。當客戶端節點10啟動可用的應用時,啟動機制能夠在伺服器30上啟動應用,如果必要的話(例如,當客戶端節點10沒有在本地執行該應用的資源時)。
PNAPI 52向用戶界面組件56提供所有公開的應用信息以顯示在客戶端節點10的屏幕12上。PNAPI 52還為客戶端節點10的用戶管理登錄憑證(例如,密碼)的、在本地資料庫中的伺服器場登錄以支持單一驗證特徵。憑證在跨越客戶端節點10的啟動(斷電和接通周期)可以保留或不保留。
PNAPI 52為本地高速緩存60中存儲的程序鄰居應用對象提供自動和手動管理。本地高速緩存60可以由客戶端節點10的用戶手動刷新,或者以用戶可定義的刷新速率刷新,或者由伺服器在連接期間的任意時刻刷新。在Windows實現方案中,PNAPI 52可以構建遠程應用文件關聯並為應用對象快捷鍵管理「Start(開始)」菜單和桌面圖標。
程序鄰居用戶界面用戶界面模塊56與PNAPI 52相接口,並且可以是現有客戶端用戶界面(例如,遠程應用管理器)的功能性超集(superset)。用戶界面模塊通過PNAPI52來訪問本地高速緩存60中存儲的信息,並在客戶端節點10的顯示屏幕上可視地把這些信息呈現給用戶。所顯示的信息是由客戶端節點10的用戶所產生的信息與由程序鄰居應用獲得的信息的混合。用戶界面模塊56還能向用戶顯示該用戶當前正在運行的所有應用以及所有活動的和斷開連接的會話。
在圖形化實施例中,用戶界面模塊56能夠呈現多種圖形組件,諸如像窗口和下拉菜單,以便顯示在顯示屏幕12上。對這樣的圖形用戶界面組件的組合的顯示通常稱為「桌面」。由用戶界面模塊56產生的桌面可以包括程序鄰居窗口,它顯示了客戶端節點10的用戶可以使用的應用程式的鄰居。這些應用程式是由網絡上的伺服器場寄宿的公開應用的過濾後的組合。用戶界面模塊56可以為每個伺服器場產生一個程序鄰居窗口,或者把來自不同伺服器場的應用合併到單個程序鄰居窗口之下。
在頂層,程序鄰居窗口包括對應每個伺服器場的文件夾。用滑鼠18點擊其中一個文件夾會產生一個窗口,該窗口包含用戶可用的每個所寄宿的應用的表示(例如,圖標),參見圖6A和6B。程序鄰居窗口成為啟動公開應用的聚焦點,用戶界面模塊56可用來通過PNAPI 52啟動應用。例如,客戶端節點10的用戶能夠使用滑鼠18來選擇其中一個所顯示的圖標並啟動相關聯的應用。
基於客戶端的實現方案的特徵是哪怕客戶端節點是在離線的狀態下,即ICA連接62是不活動的,用戶也仍然能夠瀏覽程序鄰居窗口中顯示的對象。另外,客戶端節點10的用戶能夠把應用對象和文件夾從程序鄰居窗口那裡拖出並拉入到桌面的其它圖形組件中(例如,其它窗口、文件夾,等等)。
圖5展示了程序鄰居應用、基於伺服器的實現的程序組件的一種示例性配置。這些組件包括服務(PNSVC)組件44』、應用資料庫組件48』、應用程式編程接口(PNAPI)組件52』、用戶界面組件56』和本地高速緩存60』。每個軟體組件44』、48』、52』、56』和60』都安裝在應用伺服器30』上。用於基於伺服器的實現的軟體組件與圖4中用於基於客戶端的實現方案的軟體組件相對應。每個基於伺服器的軟體組件的功能與基於客戶端的對應組件相類似,其不同之處或新增功能如下。PNSVC 44』利用本地過程調用來與應用資料庫48』和PNAPI52』進行通信。PNAPI 52』還與用戶界面模塊56』和本地高速緩存60』相通信。
與圖4中對客戶端節點10所描述的相類似,客戶端節點20登錄到網絡40,伺服器30』開發並維護包含從伺服器場中的其它伺服器32、34收集到的應用-相關的信息的資料庫,在伺服器30』和客戶端節點20之間建立通信鏈路。應用伺服器30』通過ICA通道連接62』而與客戶端節點20進行通信。通道連接62』可以由ICA虛擬通道協議(例如,Thinwire)加以建立。Thinwire協議可以用來把呈現命令從運行在應用伺服器30』上的基於窗口的應用傳輸到客戶端節點20。對客戶端節點20的用戶來說,這些應用好像正運行在客戶端節點20上。客戶端節點20可以包括遠程應用管理器應用程式64,它通過ICA通道連接62』而與應用伺服器30』相通信。
為了在基於伺服器的實現中運行程序鄰居應用,客戶端節點20的用戶連接到(在伺服器30』上的)初始桌面並從該桌面環境中啟動程序鄰居應用。到初始桌面的連接可以自動發生,例如,通過客戶端節點20的登錄腳本、通過Windows95中StartUp組中的一個條目、或者通過另一集中式管理的伺服器專有機構。所有遠程應用管理和啟動都是通過這個初始桌面來實現的。
與圖4中對伺服器30所描述的相類似,伺服器30』利用用戶憑證來確定那些被授權由客戶端節點20的用戶所使用的應用程式。程序鄰居圖形窗口被返回給客戶端節點20並顯示在客戶端屏幕22上。這個窗口可以包含表示在客戶端節點20的程序鄰居中可用的(也可能是不可用的)應用程式的圖標。
客戶端節點20的用戶能夠從程序鄰居窗口中所顯示的應用程式中選擇一個並啟動。當啟動一個應用時,程序鄰居應用能夠在相同伺服器30』上執行所述應用,在可應用的情況下,要考慮伺服器間的負載平衡需求以及該應用在伺服器30』上的可用性。PNAPI 52』可以包括當伺服器30』被指定啟動該應用時在伺服器30』上本地啟動遠程應用的啟動機制。如果需要不同的伺服器來運行該應用,程序鄰居應用能夠使用這些窗口通過伺服器30』(即,基於伺服器的客戶端)來啟動該應用以像圖3B中所描述的那樣把應用呈現在客戶端節點20的桌面上。
在一個實施例中,基於web的程序鄰居應用包括一組管理應用的各個方面的對象。在一個實施例中,所述應用包括三個「插入」到web伺服器中的主要對象類網關對象類;憑證對象類;和應用對象類。在一些具體實施例中,對象類被作為java bean加以提供。這三個主要對象類簡化了對進入伺服器場的用戶憑證的驗證;指定的用戶可以訪問的公開應用的列表的生成;關於具體的公開應用的詳細信息的提供;把公開應用信息轉換成與ICA兼容的格式。
當被提供為Java bean時,可以以多種不同方式來訪問對象。例如,它們可被編譯為COM對象並由web伺服器用作ActiveX組件。在另一實施例中,可以按照Java bean的原本形式來使用它們,例如當伺服器使用JSP(Java Server Pages)技術時。在又一實施例中,Javabean可以被實例化並被在Java小服務程序器中直接使用。在另一實施例中,伺服器30可以直接把Java bean實例化為COM對象。
憑證對象類管理驗證用戶進入目標伺服器場必需的信息。憑證對象把所存儲的用戶憑證傳遞到其它程序鄰居對象。在一些實施例中,憑證對象是不能被實例化且代表用戶的憑證的抽象類。可以提供不同的類擴展以允許使用不同的驗證機制,包括生物統計學、智慧卡、基於令牌的驗證機制,例如呼叫響應和基於時間的密碼生成或其它機制。例如,可以提供在純文本中存儲用戶名、域和密碼的「明文憑證」。
網關對象類處理與目標伺服器場的通信。在一個實施例中,網關對象類被提供為不能被實例化的抽象Java類。特定的網關對象可以通過使用特定協議與伺服器場進行通信,讀取緩存的應用信息,或者使用這兩種方法的組合,或者其它各種方法來獲得應用信息。
如上所述,網關對象類高速緩存信息以便最小化與目標伺服器場的通信。可以提供對網關對象的擴展以通過特定協議(例如HTTP)和伺服器場通信。在一個實施例中,一個擴展類被提供,以便允許網關對象通過WINDOWS NT命名管道和伺服器場通信。網關對象可以提供應用程式編程接口鉤子(hook),它允許其它程序鄰居對象從該對象查詢應用信息。
一個應用對象類包含與公開應用有關的信息並返回與伺服器場寄宿的應用有關的信息以便創建程序鄰居web頁面。應用對象類通過從由網關對象創建的對象或直接從伺服器場中的伺服器檢索與應用相關的信息而創建代表應用的對象。應用對象充當用於應用的特定屬性的容器,這些屬性有的可設置,有些不可設置,例如應用的名字(不可設置);客戶端窗口應該佔據客戶端桌面的比例(可設置);用於這個應用的客戶端窗口的寬度(以像素表示)(可設置);用於這個應用的客戶端窗口的高度(以像素表示)(可設置);當連接到該應用時使用的顏色數(可設置);音頻帶寬限制的嚴重性(可設置);連接到該應用時使用的加密級別(可設置);連接到該應用時使用的視頻級別(可設置);是否應該把該應用放到客戶端的開始菜單(可設置);是否應把該應用放到客戶端的桌面(可設置);該應用所屬的程序鄰居文件夾的身份(可設置);對該應用的描述(可設置);用於該應用的圖形圖標文件的來源(可設置);當連接到該應用時應該使用的窗口類型(可設置);是否重載該對象的預設參數。
圖6A是在程序鄰居應用已經執行之後可以顯示在客戶端節點10、20任一個的屏幕18、22上的示例性程序鄰居窗口120的截屏圖。窗口120包括圖形圖標122。每個圖標122代表由網絡40上的伺服器30、32、34和36中的其中一個伺服器所寄宿的一個應用程式。每個所代表的應用都可以由該客戶端節點的用戶執行。用戶可以用滑鼠18、28或鍵盤14、24從中選擇一個應用並啟動它。
圖6B是在程序鄰居應用已經執行之後可以顯示在客戶端節點10、20任一個的屏幕18、22上的另一示例性程序鄰居窗口120的截屏圖。窗口124包括圖形圖標126、128。每個圖標126、128代表由網絡40上的伺服器30、32、34和36中的其中一個伺服器所寄宿的一個應用程式。由圖標126中的一個圖標所代表的每個應用程式都可以由客戶端節點10、20的用戶執行。用戶使用滑鼠18、28或鍵盤14、24能夠從中選擇一個應用程式並啟動它。對基於web的程序鄰居環境來說,除了圖標122、126、128被顯示在瀏覽器窗口中之外,圖6A和6B的截屏圖是相同的。
由圖標128中的一個圖標所代表的每個應用程式都不能為客戶端節點10、20的用戶所用,儘管這些應用也存在於伺服器場中。可以在顯示屏幕上標出這些應用程式的不可用性(例如,可畫上一個「X」通過圖標128)。試圖啟動這樣的應用程式會觸發一個消息,指示用戶未被授權使用該應用。
圖7展示了一個示例性過程,通過它可以向客戶端節點10、20人一個的用戶通知由網絡40上的伺服器30、32、34、36所寄宿的應用程式的可用性。在步驟80,客戶端節點10、20從伺服器之一(例如伺服器32)請求登錄服務。伺服器32需要有效的用戶憑證以建立連接。伺服器32從客戶端節點10接收用戶憑證(步驟82),並驗證用戶登錄(步驟84)。在客戶端節點10、20上顯示桌面(步驟85)。桌面可以包括代表程序鄰居應用程式的圖形圖標。
在步驟86,應用伺服器32與每個別的伺服器30、34、36建立連接以交換應用-相關的信息,如上所述,與寄宿在那些伺服器上的應用程式相對應(步驟88)。在步驟90,應用伺服器32開發並維護收集的應用-相關的信息的資料庫。伺服器場中的每個別的伺服器32、34、36可以開發與伺服器32的資料庫等價的資料庫,並且開發方式也和伺服器32相同。在另一實施例中,伺服器32的資料庫可以是由伺服器場中的每個其它伺服器32、34、36訪問的集中式資料庫。對應用-相關的信息的收集可以獨立地發生或者按客戶端節點10、20登錄到伺服器場38的請求加以觸發。
在步驟92,客戶端節點10、20可以從桌面顯示請求執行應用程式。主伺服器節點可以處理請求,並如前所述那樣使用負載平衡評估和應用可用性,確定應用伺服器以便向客戶端節點10、20提供服務(步驟94)。例如,可以選擇應用伺服器32以便就客戶端節點10、20對請求提供服務。在步驟96,客戶端節點10、20建立與伺服器32之間通信鏈路。伺服器32和客戶端節點10、20可以如上所述按照適合於該客戶端節點的ICA協議進行通信。
同樣,哪怕客戶端節點10、20可能還沒有請求PN應用程式,主伺服器節點30或伺服器32也可以響應於這一運行該應用程式的請求來運行程序鄰居應用(步驟93)並把結果推送到客戶端節點10、20。當執行PN應用程式時,主伺服器節點30或伺服器32使用用戶憑證過濾資料庫中的應用-相關的信息(步驟100)。過濾資料庫的結果確定了那些被授權由客戶端節點10、20的用戶使用的應用程式。經授權的應用程式處在客戶端節點10、20的程序鄰居中。可用的應用信息的這個程序鄰居被推送到客戶端節點10、20(步驟102)並在程序鄰居圖形窗口中顯示在客戶端屏幕12、22上(步驟104)。
在其它實施例中,程序鄰居窗口可以包括在伺服器場中但不能為客戶端節點10、20所用的應用。在基於窗口的實現方案中,可用(和不可用)的應用程式都由圖標來表示。客戶端節點10、20的用戶可以從程序鄰居窗口中顯示的應用程式中選擇一個並啟動它。
文件類型關聯(FTA)正如所論述的那樣,在一個實施例中,程序鄰居機制允許用戶標識、選擇並執行不必安裝在它們的客戶端節點上的可執行程序。在另一實施例中,附加的FTA功能允許用戶自動地啟動與數據文件相關聯的可執行程序的執行,即使該數據文件和可執行程序位於不同的計算節點上。
典型地,FTA功能允許用戶通過選擇與可執行程序所位於的節點不同的計算節點上的數據文件而透明地執行可執行程序。在一個實施例中,用戶通過選擇位於他們的客戶端節點上的數據文件能夠透明地調用對位於伺服器節點上的可執行程序的執行。在另一實施例中,用戶能夠通過選擇位於伺服器節點上的數據文件透明地調用對位於他們的客戶端節點上的應用程式的執行。在又一實施例中,用戶能夠選擇存儲在web伺服器上的數據文件並透明地調用對位於伺服器節點上的相關聯的可執行程序的執行。典型地,執行允許處理所選擇的數據文件的內容,執行的輸出隨後被提供給位於客戶端節點的用戶。
如上所述,客戶端節點與一個或多個伺服器節點進行通信。客戶端節點執行一個包括下列功能的作業系統,所述功能允許選擇代表文件的圖形標記、顯示位形、以及初始化和操作電信鏈路。在一個實施例中,這些功能和作業系統集成在一起。在另一實施例中,這些功能是由來自於一個或多個第三方廠商的軟體提供的,該軟體被分別安裝並維擴在客戶端節點上。
伺服器節點執行一個包含如下功能的作業系統,所述功能允許初始化並操作通信鏈路並執行可執行程序。在一個實施例中,這些功能與作業系統集成在一起。在另一實施例中,這些功能由來自於一個或多個第三方廠商的軟體提供,該軟體被分別安裝並維護在客戶端節點上。
在目前的討論中,將會理解到的是,使用文件名擴展必然反映了應用WINDOWS作業系統家族的實施例的特性。其它實施例利用存儲在數據文件本身中的參數、數據文件中包含的數據、與數據文件相關聯的文件系統記錄或者單獨的數據文件或資料庫,來實現依照本發明的方法和設備。例如,在應用MacOS作業系統家族的實施例中,本發明使用文件和應用程式創建者類型並在與每個存儲設備相關聯的桌面文件中存儲文件類型關聯數據。使用UNIX-變體作業系統的實施例利用文件擴展名、嵌入的參數或合適的其它機制。因此,權利要求的範圍不應該理解為限於依靠文件名擴展的實施例或使用WINDOWS作業系統的實施例。
基於客戶端的FTA參看圖8A,在一個實施例中,本發明通過選擇代表位於客戶端節點上的數據文件的圖形標記,來透明地實現伺服器節點上的分布式程序執行。客戶端節點從多個伺服器節點中的其中一個伺服器節點上接收映射,該映射規定數據文件類型和要在多個伺服器節點中的其中一個伺服器節點上執行的可執行程序之間的關聯(步驟106)。客戶端節點呈現存儲在客戶端節點上的數據文件的圖形描繪(步驟114)並接收對數據文件的圖形描繪的選擇(步驟118)。客戶端節點利用接收到的映射來標識與所選擇的數據文件的類型相關聯的可執行程序(步驟122),並發出一個執行標識出的可執行程序的請求(步驟126)。在另一實施例中,客戶端節點啟動對本地顯示應用的執行(步驟130)以從執行的程序接收應用輸出數據(步驟134),它把接收到的應用輸出數據顯示給最終用戶(步驟138)。
還是參看圖8A,當客戶端節點接收到映射時(步驟106),可以只接收映射、或者和幾個其它映射一起接收、或者和其它消息或數據(例如軟體更新)一起接收。表3說明了在本發明的一個實施例中提供的示例性映射表3
在一個實施例中,該映射標識出在用戶的客戶端節點上存儲的特定數據文件和供使用的特定可執行程序之間的關聯。例如,該映射會規定使用WORD來編輯文件「RECORDS.DOC」。在另一實施例中,該映射會規定存儲在用戶的客戶端節點上的特定類型的數據文件和特定可執行程序之間的關聯。例如,該映射會規定使用WORD來編輯以擴展名「.RTF」結尾的所有文件。在另一實施例中,該映射規定用於特定數據文件或特定類型的數據文件的特定類型的可執行文件。例如,當選擇一個包含字處理信息的數據文件時,映射會規定使用「字處理應用」,這是通過檢查文件或被編碼到文件中或與該文件相關聯的特殊參數來確定的。
在另一實施例中,映射就啟動伺服器節點上的可執行程序的客戶端節點應用規定可執行程序和數據文件之間的關係,並在客戶端節點上顯示來自執行的輸出。例如,映射可以規定選擇「.DOC」文件的時間,客戶端節點將執行來自Ft.Lauderdale,FL的Citrkix軟體的METAFRAME,它隨後向多個伺服器節點中的其中一個伺服器節點發送一個請求來執行WORD,接收來自從執行的輸出以便在客戶端節點顯示給用戶。在另一實施例中,用於相關聯的可執行程序的條目包括用於控制造伺服器節點上的執行的一個或多個參數、標誌或參量。例如,規定METAFRAME的本地執行和WORD的遠程執行的條目可以採用″C\PROGRA~1\MF.EXE MSWORD.EXE″的形式,該形式表明METAFRAME應用存儲在本地C\PROGRA~1\MF.EXE,要在伺服器節點上執行的是MSWORD.EXE。
在一個實施例中,映射中的可執行程序被指定為廠商名,例如「MICROSOFT WORD」。當接收到時,客戶端節點就標識與廠商名「MICROSOFT WORD」相關聯的文件路徑和文件名中的至少一個,以便在應用FTA功能時使用。在另一實施例中,映射中的可執行程序被依照客戶端節點作業系統所使用的命名習慣指定為文件名。例如,在一個採用WINDOWS家族作業系統的客戶端節點上,相關聯的可執行文件可以標識為「MSWORD.EXE」。在接收到這個映射之後,客戶端節點或者在本地標識並存儲到可執行文件的路徑,例如″C\PROGRA~1\MSOFFICE\MSWORD.EXE″,或者在每次為該特定可執行程序調用FTA時動態地定位所述可執行文件。
在一個實施例中,接收到的映射被併入到一個包含系統資料庫的文件中,其中該系統資料庫跟蹤可執行程序和數據文件或數據文件類型之間的關聯。例如,該文件可以是WINDOWS系統上的註冊表或者MacOS系統上的桌面文件。在另一實施例中,映射被存儲在由一個或多個可執行程序訪問的文件中以便提供前面提到的FTA功能。例如,基於Java的可執行程序可以接收映射並把它存儲在客戶端節點上的文本文件中以供由其它基於Java的可執行程序使用。在另一沒有文件系統功能的實施例中(例如,嵌入式設備),接收映射並在隨機訪問存儲器中把它存儲在特定地址。在又一個實施例中,映射被遠程存儲在(例如)多個伺服器中的其中一個伺服器並由客戶端節點上的可執行程序在需要時加以檢索。映射本身可以以任意的數據結構存儲,包括(但不限於)數組、鍊表、平面資料庫和關係資料庫。
在一個實施例中,用基於客戶端的(即「牽引(pull)」)技術定期更新這些映射。在另一實施例中,使用伺服器端(即「推送」)技術定期更新這些映射。在另一實施例中,使用牽引或推送技術在需要時更新這些映射,例如當系統管理員安裝一個新的應用程式並在一個伺服器節點上或跨伺服器場對它提供支持的時候。
在一個實施例中,客戶端節點接收用於控制可執行程序的執行位置的規則(步驟110)。在一個實施例中,用於確定一個特定可執行程序是在客戶端節點、伺服器節點還是在特定的伺服器節點上執行的規則取決於一個或多個變量。這樣的變量包括但不限於客戶端系統上的執行負載、多個伺服器系統中的其中一個伺服器系統上的執行負載、多個伺服器系統的總和執行負載、客戶端系統和多個伺服器系統之間的連接速度、或這些或其它因素的任意組合。例如,如果映射要求對″.DOC″類型文檔的選擇啟動本地瘦客戶端應用的執行,該瘦客戶端應用會接收並顯示來自在伺服器場中的一個伺服器上執行的WORD的輸出,那麼條件規則可以指定如果客戶端系統上的執行負載消耗了超過50%的可用CPU時間並且到伺服器場的連接超過了1M位/秒的理論容量或20K位/秒的可用容量,那麼WORD應該在伺服器場上遠程執行,它的應用輸出數據被提供給該瘦客戶端應用以顯示給最終用戶。在一個實施例中,當對規則的評估指示相關聯的可執行程序應該在客戶端節點上執行時,客戶端節點直接把執行程序的輸出提供給用戶,繞過任何瘦客戶端應用。
在實際操作中,當用戶選擇了″.DOC ″文檔時,會標識出相關聯的應用(即WORD),會裝入並評估任何所附的規則,根據對規則的評估而在客戶端節點本地或在服務節點上遠程執行相關聯的應用。如果評估指示該應用程式將在伺服器節點上執行,則就向伺服器節點發送一個執行該程序的請求(步驟126)。
映射、條件性規則的接收、或上述兩者的一些組合的接收可以通過幾種機制發生。可以通過有效的電信鏈路來發布映射和條件性規則,或者利用一種或多種形式的可攜式存儲介質離線地進行發布。在客戶端節點和多個伺服器節點的至少一個正在使用,或者離線,或處於在安排的時間窗之內的安排的時間時,或者當最終用戶沒有使用客戶端節點和多個伺服器節點的至少一個中的任一個或上述兩者時,它們可以被實時地發布。
利用已安裝的映射並且在一些實施例中利用已安裝的條件規則,用戶使用他的圖形用戶界面來與客戶端節點進行交互。存在於本地客戶端節點上的數據文件被以圖形化的方式呈現給用戶(步驟114)。在典型的實施例中,客戶端節點顯示存儲在客戶端節點上的、代表數據文件的一個或多個圖標。在另一實施例中,客戶端節點顯示與存儲在客戶端節點上的數據文件相關聯的文件名列表。在另一實施例中,將代表在客戶端節點上存儲的文件的標記與代表在一個或多個伺服器節點上存儲的文件的標記混雜在一起。在這個實施例中,當選擇了代表在客戶端節點上存儲的文件的標記時,基於客戶端的FTA就可造作。在另一實施例中,有多種形式的FTA(參見下文)與適當形式的FTA一起進行工作,所述適當形式的FTA是根據與所選擇的標記相關聯的文件的位置而激活的。
用戶通過與數據文件的圖形描繪交互來選擇一個特定的數據文件(步驟118)。代表數據文件的圖標或文件通常是用鍵盤、滑鼠、光筆、壓力敏感平板電腦、觸覺接口或其它輸入設備來加以選擇的。
一且選擇了數據文件,客戶端節點上的功能就訪問所存儲的映射和(一些實施例中的)條件性規則,並標識與所選擇的數據文件或所選擇的數據文件的類型相關聯的那些映射和規則(步驟122)。如果映射指示該數據文件與要在多個伺服器中的其中一個伺服器上執行的一個應用相關聯,並且對任何相關聯的條件規則進行的評估也指示了,那麼客戶端節點就向寄宿相關聯的應用程式的多個伺服器中的其中一個伺服器發送一個執行請求(步驟126)。
一旦執行,該相關聯的應用程式通常將產生一種或多種形式的輸出數據,包括但不局限於圖形化的輸出數據或聲音。在一個實施例中,客戶端節點啟動對一個應用程式的執行(步驟130),該應用程式通過與伺服器節點的連接來接收應用輸出數據(步驟134),並把它顯示給最終用戶。在一個實施例中,這個應用程式是METAFRAME。
在一個實施例中,客戶端節點還向伺服器節點提供與所選擇的數據文件相關聯的數據以供進行處理。在一個實施例中,客戶端節點利用與伺服器節點之間的網絡連接來提供數據。在另一實施例中,客戶端節點向伺服器節點提供一個指向數據文件內容的指針。該伺服器節點又依次使用該指針來產生對數據的順序或隨機訪問請求,並把它提供給客戶端節點。客戶端節點處理這些請求並向伺服器節點提供合適的數據。
這種客戶端-伺服器安排允許使用基於不同計算結構的客戶端節點和伺服器節點。例如,客戶端節點可以是執行本地顯示應用的、基於POWRRPC的MACINTOSH,伺服器節點可以是基於ITANIUM的WINDOWSNT伺服器。只要為客戶端節點和伺服器節點配備了對傳輸、交換和顯示應用輸出數據的格式取得一致的功能,節點間的二進位級互操作性就是不必要的。
圖8B說明了伺服器節點在基於客戶端的文件類型關聯過程中的典型角色(role)。提供了這樣的映射,該映射規定存儲在客戶端系統上的數據文件的類型和要在多個伺服器節點中的其中一個伺服器節點上執行的可執行程序之間的關聯(步驟154)。接收到一個執行可執行程序的請求(步驟162)並在多個伺服器節點中的其中一個伺服器節點上執行該可執行程序(步驟166)。
在一個實施例中,從有管理特權的系統管理員或其他用戶那裡接收映射(步驟150)。管理員通過編輯一個系統資料庫來配置新的映射,該系統資料庫規定一個特定的數據文件或數據文件的類型與一個特定可執行程序或可執行程序的類型之間的關聯,如上所述。在另一實施例中,管理員規定數據文件的類型、一個用於建立與伺服器系統之間的連接的程序、用於處理該數據文件的可執行程序以及供該可執行程序使用的參數之間的關聯。在一個實施例中,管理員通過手工編輯一個或多個數據文件或使用圖形化系統管理工具來規定映射。
在一個實施例中,伺服器節點用牽引或推送技術定期地或按照需要把一個文件中的這個系統資料庫提供給一個或多個客戶端節點。在另一實施例中,這些映射被作為獨立的數據條目發送給客戶端系統,客戶端系統接收它們並把它們併入到它們自己的本地系統資料庫中。在又一實施例中,規定的映射還可以針對其它伺服器節點上規定的映射加以複製或同步化。這最後的功能便於伺服器場配置中對伺服器節點進行配置和維護。
伺服器節點向一個或多個客戶端節點提供映射(步驟154),這些客戶端節點按如上所述使用映射。在一個實施例中,伺服器還向一個或多個客戶端節點提供條件性執行規則(步驟158),以用來由客戶端節點如上所述存儲和評估。使用用於文件類型關聯的規定和發布的技術來規定和發布條件性規則。
在操作中,伺服器節點接收從一個或多個客戶端節點接收去執行可執行文件的請求(步驟162)。在一個實施例中,伺服器節點上的一個或多個可執行程序的可用性部分是由標識或驗證標記確定的。伺服器節點上的每個文件都與定義用戶、用戶組或特權級的標記直接或間接相關聯。客戶端節點給主伺服器節點或一個或多個單個伺服器節點提供用於指示用戶的身份或用戶特權級的一個或多個標記。伺服器節點針對與每個可用於執行的可執行程序相關聯的標記來驗證這些標記。如果所提供的標記與相關聯的標記相匹配,那麼該可執行程序就可以由客戶端節點執行。試圖執行超出客戶端節點所提供的帶有驗證標記的可執行程序會導致一個或多個錯誤消息顯示在客戶端節點上、一個報警消息顯示在伺服器節點上以及一個啟動在客戶端節點上對該可執行程序的執行的請求。
伺服器節點通過執行所標識的程序來服務於這些請求(步驟166)。當服務於一個執行程序的請求時,伺服器自身可以服務於該請求或者它可以委託或將該執行請求再分派到另一伺服器。這個委託通過限制需要用來服務一個客戶端池的伺服器許可數量而便於許可管理和重新發行。接收請求的伺服器還可以將該執行請求分派到一個計算集群,以使伺服器之間的負載和資源管理能更好地處理客戶端需求。
在一個實施例中,伺服器節點還接收到與在客戶端節點上標識出的特定數據文件相關聯的數據(步驟170)。典型地,當可執行程序如上所述在一個伺服器節點或集群上執行時由它處理這個數據。在另一實施例中,伺服器接收指向客戶端節點上的數據文件的指針或其它引用,伺服器利用所述這些指針或引用來產生對數據的請求(例如順序或隨機訪問請求)以便傳輸給合適的客戶端節點。在一個實施例中,如果第一個伺服器節點把一個程序執行請求委託給第二個伺服器節點,那麼第一個伺服器節點如果接收到數據或數據文件引用也可以同樣地把數據或數據文件引用委託、重路由或重傳輸給第二個伺服器節點或另一伺服器節點,視情況而定。
典型地,伺服器節點把來自可執行程序的執行的應用輸出數據提供到客戶端節點以顯示給最終用戶,如上所述(步驟174)。應用輸出數據可以用由客戶端節點直接地或由在客戶端節點上執行的應用程式(例如,諸如METAFRAME這樣的瘦客戶端顯示應用)所支持的一種或多種公式來加以提供。應用輸出數據可以是代表圖形數據的位流,壓縮過或未壓縮過;代表要顯示的向量圖形的標記語言;文本;一系列系統相關調用或API調用,它們在執行後為用戶在客戶端節點上顯示應用輸出數據。
基於伺服器的FTA參看圖9A,在另一實施例中,本發明通過選擇代表位於伺服器節點上的數據文件的圖形標記來使得能夠在客戶端節點上進行透明的分布式程序執行。客戶端節點呈現出存儲在多個伺服器節點上一個伺服器節點上的數據文件的圖形描繪(步驟200)。客戶端節點接收對數據文件的圖形描繪的選擇(步驟204)並將該選擇傳輸到多個伺服器節點中的其中一個伺服器節點(步驟208)。客戶端節點從多個伺服器節點中的其中一個伺服器節點接收一個執行與所選擇的數據文件相關聯的可執行程序的請求(步驟212)並執行相關倆的可執行程序(步驟216)。
再參看圖9A,客戶端節點給用戶呈現出存儲在至少一個伺服器節點上的至少一個數據文件的圖形描繪(步驟200)。數據文件的圖形描繪包括但不限於圖形化標記(例如圖標)的顯示或文件名的顯示。在一個實施例中,代表存儲在一個或多個伺服器節點上的文件的標記與代表存儲在客戶端節點上的文件的標記混雜在一起。在這個實施例中,當選擇了代表存儲在伺服器節點上的文件的標記時基於伺服器的FTA就可操作。在另一實施例中,有多種形式的FTA(參見上文和下文)與適當形式的FTA一起進行工作,所述適當形式的FTA是根據與所選擇的圖形化標記相關聯的文件的位置來激活的。
在一個實施例中,客戶端節點上的功能查詢主伺服器節點,主伺服器節點匯集了在所連接的伺服器節點上可用的數據文件有關的信息。主伺服器節點呈現出在主伺服器和連接的伺服器上可用的文件的匯集列表,並在呈現給用戶之前使用推送或牽引機制把它呈現給客戶端節點。在另一實施例中,客戶端節點上的功能在把可用的文件呈現給用戶之前為伺服器例的FTA查詢涉及數據文件可用性的各個單個節點。在另一實施例中,客戶端節點上的功能(例如,網絡文件系統NFS或Andrew文件系統AFS)使一個或多個伺服器節點上的文件呈現為客戶端節點文件系統的一部分。這些文件隨後被呈現給用戶以供由基於伺服器的FTA使用。
在一個實施例中,伺服器節點上的一個或多個文件的可用性是由標識或驗證標記部分地確定的。伺服器節點文件上的每個文件與定義用戶、用戶組、或特權級的標記直接或間接地相關聯。客戶端節點向主伺服器節點或一個或多個單個伺服器節點提供指示用戶的身份或用戶特權級的一個或多個標記。伺服器節點針對基於伺服器的FTA可用的每個文件的標記驗證這些標記。如果所提供的標記與相關聯的標記相匹配,該文件就可以由客戶端節點使用,並被圖形化地呈現給用戶用於可能的基於伺服器的FTA活動。
如上所述,典型地,利用圖形用戶界面和一個或多個輸入設備,用戶可以通過與顯示的圖形標記進行交互來選擇數據文件(步驟204)。一旦用戶選擇了一個數據文件,該選擇就被傳輸到多個伺服器系統中的一個(步驟208)。在一個實施例中,該選擇被傳輸到主伺服器節點。主伺服器節點標識寄宿該數據文件的伺服器節點並把該選擇提供給合適的伺服器節點以供進一步處理。在另一實施例中,該選擇被傳輸到一個或多個伺服器節點,或者是專門與所選擇的數據文件相關聯的伺服器節點,或者是被標識出通常對基於伺服器的FTA可用的伺服器節點。後者的行為通過文件鏡像和數據冗餘的其它先進形式方便了在伺服器之間提供負載平衡文件的服務。
在提供了對數據文件的選擇之後,就接收到了一個執行與所選擇的數據文件相關聯的可執行程序的請求(步驟212)。如上所述,該請求可能來自主伺服器節點、寄宿所選擇的數據文件的伺服器節點、或者不寄宿所選擇的數據文件的伺服器節點。作為響應,客戶端節點執行與該數據文件相關聯的可執行程序(步驟216)。
在一個實施例中,客戶端節點接收與所選擇的數據文件相關聯的數據以便由執行程序進行處理(步驟220)。在另一實施例中,客戶端節點接收一個指向所選擇的數據文件的指針。客戶端節點利用所提供的指針來產生對數據的一個或多個請求(例如順序的或隨機的),它把這些請求提供給一個或多個伺服器節點以由主伺服器節點、寄宿所選擇的數據文件的伺服器節點和不寄宿所選擇的數據文件的伺服器節點提供服務,如上所述。在一個實施例中,使用一種協議來傳輸這些請求,比如像超文本傳輸協議HTTP、安全HTTP(HTTPS)(即使用SSL)、消息傳送應用編程接口(MAPI)協議、實時流化協議(RTSP)、用於用戶數據報協議方案的實時流化協議(RTSPU)、由Seqattle,WA的RealNetwork公司開發的漸進網絡多媒體(PNM)協議、或者生產消息規範(MMS)協議。
已經接收到與所選擇的數據文件相關聯的數據,客戶端節點通常通過執行程序來處理接收到的數據(步驟224)。客戶端節點通常把處理結果顯示給用戶。在一個實施例中,處理和顯示周期是反覆的,來自用戶的更多控制輸入會導致更進一步的處理和顯示,繼而又會導致更多來自用戶的控制輸入,等等。
圖9B舉例說明了伺服器節點在伺服器端FTA中的典型角色。接收到一個用於規定數據文件類型和要在客戶端系統上執行的可執行程序之間的關聯的映射(步驟240)。數據文件被存儲在多個伺服器系統中的其中一個上(步驟244)。由伺服器節點接收到對存儲的數據文件的選擇(步驟248),並用接收到的映射標識與所選擇的數據文件的類型相關聯的可執行程序(步驟252)。向客戶端系統發送一個請求以執行標識出的可執行程序(步驟256)。
由伺服器節點接收到的映射(步驟240)規定數據文件和可執行程序之間的關聯,並且在這個方面類似於基於客戶端的FTA中使用的映射。該映射與在基於客戶端的FTA中所使用的映射之間的不同之處在於它規定要在客戶端節點上執行的可執行程序。對應用在客戶端節點上執行的實施例來說,該相關聯的程序通常是獨立的應用並且不是調用第二個可執行程序的應用的瘦客戶端應用。
然而,在一些實施例中,客戶端節點從伺服器節點接收應用執行請求,並把執行請求重定向到另一個伺服器節點而不是執行標識出的可執行程序(並因而執行該應用)。由此,客戶端節點把執行請求重定向到的伺服器節點就是執行該標識出的可執行程序的節點。在這些實施例中,基於客戶端的FTA「重載(override)」基於伺服器的FTA,因為由客戶端映射標識出的伺服器執行應用程式,而不是由伺服器端映射標識出的節點。
在一個實施例中,映射是作為獨立的條目加以接收的。在另一實施例中,映射被匯集並按組被呈現,或者被匯集並與諸如軟體更新這樣的其它數據一起被傳輸。映射是通過有效電信鏈路加以提供的,或者以二進位或文本格式存儲在一個或多個可移除存儲介質中。
如上所述,所述映射以不同級別的粒度規定數據文件或可執行程序之間的連結。特定的映射連結特定的數據文件或特定類型的數據文件以及特定的可執行程序或特定類型的可執行程序。可執行程序用廠商名或文件名來標識。
在一個實施例中,接收到的映射被併入到一個包含系統資料庫的文件中,該系統資料庫跟蹤可執行程序和數據文件或數據文件類型之間的關聯。在另一實施例中,使用推送機制、牽引機制或這兩種機制的組合來定期地或根據需要地更新這些映射。
在另一實施例中,伺服器系統接收一個或多個用於確定一個標識出的、關聯的可執行程序是在客戶端系統上還是多個伺服器系統中的其中一個伺服器系統上執行的規則。這些規則是一個或多個變量的函數,所述變量包括但不限於客戶端系統上的執行負載、多個伺服器系統中的其中一個伺服器系統上的執行負載、多個伺服器系統上的總和執行負載、客戶端系統和多個伺服器系統之間的連接速度,或者這些或其它因素的組合。
在操作中,一個或多個數據文件被存儲在一個或多個伺服器節點上(步驟244)。通過有效的電信鏈路或者離線地使用一種或多種形式的可攜式存儲介質向伺服器節點提供數據文件。數據文件在規定的時間窗口內按規定的時間被提供,或當正被討論的客戶端節點處於空閒狀態時、或當其處理器執行負載在特定的預定級別之下時,數據文件被提供。
伺服器節點接收對代表所存儲的數據文件的圖形化標記的選擇(248)。當接收到選擇時,伺服器識別在接收的映射中所標識的任何相關聯的可執行程序或可執行程序的類型(步驟252)。把一個執行該標識出的可執行程序的請求傳輸到客戶端節點以供執行(步驟256)。
在一個實施例中,載入任何相關聯的規則並對其進行評估,以便確定該可執行程序要在客戶端節點、多個伺服器節點中的其中一個伺服器節點還是像在分布式處理環境中那樣要在幾個伺服器節點上執行。如果對規則的評估指示執行要發生在客戶端節點上,就把一個執行相關聯的可執行程序的請求傳輸到客戶端節點(步驟256)。在一個實施例中,當對規則的評估指示該相關聯的可執行程序應該在客戶端節點上執行時,該客戶端節點就直接向用戶提供執行程序的輸出,繞過客戶端節點上任何操作中的瘦客戶端應用。
在一個實施例中,伺服器節點提供與所選擇的數據文件相關聯的數據以供處理(步驟260)。通常這個信息由運行在客戶端節點上的可執行程序處理並且把結果提供給用戶,其中用戶進一步的輸入導致進一步的處理和顯示。在另一實施例中,伺服器節點提供一個指向所選擇的數據文件的指針或其它引用。客戶端節點使用所提供的引用來產生對數據的請求,例如順序的或隨機的。這些請求被傳輸到伺服器節點,該伺服器節點通過響應請求提供數據而服務於這些請求。
在另一實施例中,由伺服器節點提供的服務(例如服務數據請求或提供與所選擇的文件相關聯的數據)是由一致動作的多個伺服器(例如一個伺服器場)提供的。在一個實施例中,主伺服器節點接收要處理的請求或數據並直接服務於它們。在另一實施例中,主伺服器節點把客戶端請求委託給其它伺服器節點。這個技術便於伺服器節點間的平衡處理。在另一實施例中,在幾個並行負責處理或數據訪問的伺服器節點之間把請求細分和分配。
基於web的FTA參看圖10A,在一個實施例中,本發明通過選擇在客戶端節點上呈現的、代表位於web伺服器上的數據文件的圖形標記而在伺服器節點上能夠進行透明地執行程序。客戶端節點呈現代表在web伺服器上存儲的數據文件的圖形描繪(步驟280)。客戶端節點接收對數據文件的圖形描繪的選擇(步驟284),並把它提供給web伺服器(步驟288)。客戶端節點接收一個執行第一個可執行程序的請求,該請求包括涉及要在一客戶端系統和多個伺服器系統中的其中一個伺服器系統上執行的、與數據文件相關聯的第二個可執行程序的信息(步驟292)。客戶端節點執行第一個可執行程序(步驟296)並提供去執行第二個可執行程序的請求(步驟300)。客戶端節點從第二個可執行程序的執行接收應用輸出數據(步驟304)並把它顯示給最終用戶(步驟308)。
仍然參看圖10A,客戶端節點向用戶呈現存儲在一個或多個web伺服器上的一個或多個數據文件的圖形描繪(步驟280)。數據文件的圖形化描繪包括但不限於圖形標記(例如圖標)的顯示、或者像SGML文檔中的超連結那樣的對文件名的顯示。在一個實施例中,代表在web伺服器上存儲的文件的標記是和代表在客戶端節點上存儲的文件或一個或多個在伺服器節點上存儲的文件的標記混合在一起的。在這個實施例中,當選擇了代表在web伺服器上存儲的文件的圖標時,基於web的FTA就可操作。在另一實施例中,有多種形式的FTA(見上)與適當形式的FTA一起工作,所述適當形式的FTA是根據與所選擇的圖形標記相關聯的文件的位置來激活的。
客戶端節點利用鍵盤、滑鼠、光筆、壓力敏感平板電腦、觸覺接口或其它輸入設備來接收用戶對特定數據文件的選擇(步驟284)。客戶端節點把該選擇提供給web伺服器(步驟288),通常使用諸如像HTTP這樣的電信協議。
響應於提供所選擇的數據文件,客戶端節點接收一個執行請求(步驟292)。該請求包括幾個參數,包括但不限於對第一個可執行程序的引用、和對與該數據文件相關聯的第二個可執行程序的引用。在一個實施例中,可執行程序由廠商名或文件名加以標識,文件名由客戶端系統解析為文件名、路徑名或對期望的可執行程序的引用中的至少一個。該請求通常包括一個標識在web伺服器上的所選擇的文件的參數,例如統一資源定位符(URL)。
在一個實施例中,示例性請求是″MetaFrame MSWORD.EXEhttp//12.34.127.128/doc/VendorList.RTF″。第一個參數是″MetaFrame″,代表要在客戶端節點上執行的第一個可執行程序,客戶端節點把它標識為存儲在″C\PROGRA~1\CITRIX/MF.EXE″的可執行程序。第二個參數是″MSWORD.EXE″,它指的是要在伺服器節點上解析並執行的第二個可執行程序。第三個參數是″http//12.34.127.128/doc/VendorList.RTF″,它標識用戶已經選擇的、在web伺服器上的文件。在操作中,客戶端節點執行MetaFrame並把去執行WORD的請求轉發到伺服器節點上。
在另一個實施例中,伺服器節點把一個包括控制信息(例如安全令牌)的請求傳輸到客戶端節點。例如,第一個可執行程序可以在請求中包括控制信息以在伺服器節點上執行第二個可執行程序。因而,控制信息可以在接收到執行第二個可執行程序(例如WORD)的請求時,調用伺服器節點或web伺服器上的第三個可執行程序。此第三個程序可以更改應用的遞送方式(例如,要求用戶在遞送應用前提供合適的驗證憑證,例如密碼,要求伺服器節點在應用遞送前等待來自另一節點的密鑰)。在另一實施例中,控制信息可以向伺服器節點提供一個標記以使伺服器節點能夠訪問先前它不能訪問的第二個可執行程序。
在一個實施例中,客戶端節點接收到在web伺服器上所選擇的文件,並高速緩存該文件以便進行編輯。在這個實施例中,客戶端節點向伺服器節點提供與該文件相關聯的數據以通過執行程序進行處理。在另一實施例中,客戶端節點向伺服器節點提供對已高速緩存的文件的引用。伺服器節點使用所提供的引用來產生對客戶端節點所服務的數據的請求。在另一實施例中,標識所選擇的數據文件的參數被直接提供給伺服器節點,伺服器節點直接與web站點聯繫以得到與所選擇的文件相關聯的數據,或者把請求委託給伺服器場中的另一個伺服器。
客戶端節點執行第一個可執行程序(步驟296),它在一個實施例中是與METAFRAME相類似的瘦客戶端應用,以用於接收應用輸出數據並把它顯示給最終用戶。在一個實施例中,客戶端節點在需要時或按規定的時間使用推送技術、牽引技術或者這兩種技術的組合來從伺服器節點或web伺服器接收第一個可執行程序。
客戶端節點向主伺服器節點、一個伺服器節點或多個伺服器節點提供執行第二個可執行程序的請求(步驟300)。在一個實施例中,多個伺服器節點合作並分擔執行任務。這個功能允許在伺服器場或伺服器陣列中實現負載平衡。
在一個實施例中,客戶端節點接收一個或多個規則,用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的一個上執行。這些規則是一個或多個變量的函數,所述變量包括但不限於客戶端系統上的執行負載、多個伺服器系統中的其中一個伺服器系統上的執行負載、多個伺服器系統上的總和執行負載、客戶端系統和多個伺服器系統之間的連接速度、或者這些及其它因素的組合。在操作中,任何相關聯的規則都被裝入並被評估以確定第二個可執行程序是在客戶端節點、多個伺服器節點中的其中一個伺服器節點、還是像在分布式處理環境中在幾個伺服器節點上執行。在一個實施例中,如果對規則的評估指示執行要發生在客戶端節點上,則客戶端節點就直接向用戶提供執行程序的輸出,繞過客戶端節點上任何正在運行的瘦客戶端應用。
一旦執行,相關聯的應用程式通常就將產生一種多或種形式的輸出數據,包括但不限於圖形輸出數據或聲音。在一個實施例中,客戶端節點通過與伺服器節點的連接接收應用輸出數據(步驟304),並且將其顯示給最終用戶(步驟308)。在一個實施例中,應用輸出數據是以由客戶端節點直接地或在客戶端節點上執行的第一個可執行程序或另一可執行程序支持的一種或多種格式提供的。在另一實施例中,應用輸出數據是一個或多個代表圖形數據的位流,壓縮或未壓縮的;代表要顯示的向量圖形的標記語言;或一系列系統相關的調用或API調用,這些調用在執行時為用戶把應用輸出數據顯示在客戶端節點上。
圖10B舉例說明了web伺服器在基於web的FTA中的角色。web伺服器提供數據文件的圖形描繪(步驟320)。web伺服器隨後把一個執行請求傳輸給客戶端節點(步驟324)。
在一個實施例中,web伺服器提供與它所寄宿的、可以由最終用戶選擇的數據文件有關的圖形化標記(步驟320)。在另一實施例中,web伺服器通過對驗證或身份標記和與每個所寄宿的文件相關聯的標記進行比較來確定哪些數據文件可以為最終用戶所用。在又一實施例中,web伺服器提示其它連接的伺服器節點或web伺服器去提供與它們所寄宿的、用戶可以訪問的這些文件有關的圖形標記,匯集這些標記並自身呈現出它們或者留給負責呈現的各個單獨的伺服器。
web伺服器通常接收對與所呈現的文件相關聯的標記的選擇。在所選擇的文件與一個連接的伺服器相關聯的實施例中,接收web伺服器或者把接收到的選擇委託給合適的伺服器,或者從適當的伺服器檢索與所選擇的文件相關聯的數據,自己處理可執行程序和數據請求。在一個實施例中,在這些選項之間的選擇是根據設計用來平衡在伺服器之間負載的評估而作出的。
在一個實施例中,web伺服器接收單個映射以便併入到數據文件中供以後使用。在另一實施例中,web伺服器地接收成組的映射或接收與其它數據(例如軟體更新)匯集在一起的映射。映射可以通過有效的電信鏈路加以傳輸,或者存儲在一個或多個可移除存儲介質上的文件中。在一個實施例中,可以定期地或在需要時使用推送技術、牽引技術或這兩種技術的組合來更新這些映射。
利用接收到的映射,web伺服器利用基於web的FTA機制來確定所選擇的數據文件是否與要執行的可執行程序相關聯。映射通常以不同級別的粒度規定數據文件或可執行程序之間的關聯。在一個實施例中,映射連結特定的數據文件或數據文件類型和特定的可執行程序或可執行程序類型,由廠商名或文件名來標識。在另一實施例中,映射文件還包括與用戶身份有關的參數,包括但不限於一個或多個用戶名、公共密鑰和IP位址。這個功能使得web伺服器能夠維護多組在單個用戶間變化的文件類型的關聯。
使用接收到的映射信息,web伺服器構建一個執行請求並把它傳輸給客戶端節點(步驟324),客戶端節點隨後如上所述執行請求。在一個實施例中,web伺服器還向客戶端提供第一個可執行程序以供執行。在另一實施例中,web伺服器還提供對所選擇的數據文件的引用,其使其它計算節點能夠對與所選擇的數據文件相關聯的數據的請求進行公式化。在又一實施例中,web伺服器還服務於來自其它計算節點的、用所提供的引用公式化的數據請求。在又一實施例中,伺服器節點向客戶端節點或多個伺服器節點中的其中一個伺服器節點提供與所選擇的數據文件相關聯的數據以便於隨後的處理。
在另一實施例中,web伺服器還向客戶端節點提供一個或多個規則,該規則允許客戶端節點根據一些因素確定第二個可執行程序應在客戶端節點、多個伺服器節點中的其中一個伺服器節點還是在多個伺服器節點上執行,所述因素包括但不限於客戶端系統上的負載、特定伺服器系統上的負載、多個伺服器系統上的負載、在客戶端節點、web伺服器、一個伺服器節點或多個伺服器節點中的一個或多個之間的連接的可用或理論帶寬。
本發明可以被提供為在一個或多個實際產品中所包含的一個或多個計算機可讀程序。實際產品可以是軟盤、硬碟、CD ROM、快閃記憶體卡、RAM、ROM或磁帶。一般來講,計算機可讀程序可以用任何程式語言來實現。可以使用的一些語言實例包括C、C++或JAVA。軟體程序可以對象代碼存儲在一個或多個實際產品上。
本領域的技術人員在不脫離本發明的精神和範圍的情況下下可以作出很多修改和改進。因此,必須清楚地理解到所示出的舉例說明的僅僅為了示範目的,並且不應該被看作是對本發明的限制,本發明由下面的權利要求來限定。這些權利要求包括了它們在字面上所闡明的以及那些並沒有本質不同的等價成分,即使這些等價成分在其它方面與上面的說明中所展示並描述的不完全相同。
權利要求
1.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)從多個伺服器系統中的其中一個伺服器系統接收映射,該映射規定數據文件類型和要在多個伺服器系統中的一個伺服器系統上執行的可執行程序之間的關聯;(b)呈現出在客戶端系統上存儲的數據文件的圖形描繪;(c)接收對數據文件的圖形描繪的選擇;(d)利用接收到的映射來標識與所選擇的數據文件的類型相關聯的可執行程序;以及(e)發送一個執行標識出的可執行程序的請求。
2.如權利要求1所述的方法,步驟(a)包括接收用於規定數據文件的類型、和用於建立與伺服器系統的連接的程序、用於處理數據文件的可執行程序以及供可執行程序使用的參數之間的關聯的映射。
3.如權利要求1所述的方法,還包括下列步驟修改客戶端系統上的文件以便包括接收到的映射。
4.如權利要求1所述的方法,還包括下列步驟執行第二個可執行程序以顯示應用輸出數據;
5.如權利要求1所述的方法,還包括下列步驟從該執行程序接收應用輸出數據;
6.如權利要求1所述的方法,還包括下列步驟以定期方式或按需方式中的至少一種更新接收到的映射。
7.如權利要求1所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
8.如權利要求1所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中的至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
9.如權利要求1所述的方法,步驟(e)包括下列步驟(e-a)接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則;(e-b)評估該規則以確定該標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行;以及(e-c)根據步驟(e-b)中的評估結果發送在多個伺服器系統中的其中一個伺服器系統上執行標識出的可執行程序的請求。
10.如權利要求1所述的方法,步驟(e)包括下列步驟(e-a)接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列各項中的至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。(e-b)評估該規則以確定該標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行;以及(e-c)根據步驟(e-a)中的評估結果發送在多個伺服器系統中的其中一個伺服器系統上執行標識出的可執行程序的請求。
11.如權利要求1所述的方法,還包括下列步驟(f)傳輸包括所選擇的數據文件的數據,這些數據的至少一部分用於由執行程序來處理。
12.如權利要求11所述的方法,步驟(f)包括下列步驟(f-a)提供一個指向所選擇的數據文件的指針;以及(f-b)利用所提供的指針對與所選擇的數據文件相關聯的數據的請求作出響應。
13.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)提供一個映射,該映射規定在客戶端系統上存儲的數據文件類型和要在多個伺服器系統中的其中一個伺服器系統上執行的可執行程序之間的關聯;(b)接收一個執行可執行程序的請求;以及(c)在多個伺服器系統中的其中一個伺服器系統上執行該可執行程序。
14.如權利要求13所述的方法,步驟(a)包括提供一個映射,該映射規定數據文件的類型、用於建立與伺服器系統之間連接的程序、用於處理數據文件的可執行程序以及供該可執行程序使用的參數之間的關聯。
15.如權利要求13的方法,還包括下列步驟從執行可執行程序的伺服器系統向客戶端系統提供應用輸出數據。
16.如權利要求13所述的方法,還包括下列步驟提供第二個應用,用於顯示來自執行可執行程序的伺服器系統的應用輸出數據。
17.如權利要求13所述的方法,還包括下列步驟以定期方式或按需方式中的至少一種更新所提供的映射。
18.如權利要求13所述的方法,還包括下列步驟(d)接收與數據文件相關聯的、要由執行程序處理的數據。
19.如權利要求18所述的方法,步驟(d)包括下列步驟(d-a)接收一個指向數據文件的指針;以及(d-b)利用接收到的指針發送對與數據文件相關聯的數據的請求。
20.如權利要求18所述的方法,還包括下列步驟使用可執行程序處理接收到的數據。
21.如權利要求20所述的方法,還包括下列步驟提供處理後的數據。
22.如權利要求13所述的方法,還包括下列步驟提供一種用於確定一個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
23.如權利要求13所述的方法,還包括下列步驟提供一種用於確定一個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器之間的確定指定為下列各項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
24.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)由客戶端系統接收一個映射,該映射規定在客戶端系統上存儲的數據文件的類型和要在多個伺服器系統中的其中一個伺服器系統上執行的可執行程序之間的關聯;(b)由客戶端系統呈現在客戶端系統上存儲的數據文件的圖形描繪;(c)由客戶端系統接收對數據文件的圖形描繪的選擇;(d)由客戶端系統用接收到的映射來標識與所選擇的數據文件的類型的相關聯的可執行程序;以及(e)向多個伺服器系統中的其中一個伺服器系統發送一個執行該標識出的可執行程序的請求。
25.如權利要求24所述的方法,其中,步驟(a)包括接收一個映射,該映射規定在數據文件的類型、用於建立與伺服器系統之間連接的程序、用於處理該數據文件的可執行程序以及供可執行程序使用的參數之間的關聯。
26.如權利要求24所述的方法,還包括下列步驟由客戶端系統修改文件,以便包括接收到的映射。
27.如權利要求24所述的方法,還包括下列步驟向客戶端系統提供用於顯示應用輸出的第二個可執行程序。
28.如權利要求24所述的方法,還包括下列步驟由多個伺服器系統中的其中一個伺服器系統以定期方式或按需方式中的至少一種更新接收到的映射。
29.如權利要求24所述的方法,還包括下列步驟由多個伺服器系統中的其中一個伺服器系統執行該可執行程序。
30.如權利要求29所述的方法,還包括下列步驟由執行該可執行程序的伺服器系統提供應用輸出數據。
31.如權利要求24所述的方法,還包括下列步驟(f)由客戶端系統傳輸包括所選擇的數據文件的數據,這些數據中至少部分用於由執行程序來處理。
32.如權利要求31所述的方法,其中,步驟(f)包括下步驟(f-a)由客戶端系統提供一個指向所選擇的數據文件的指針;(f-b)由客戶端系統利用所提供的指針對與所選擇的數據文件相關聯的數據的請求作出響應。
33.如權利要求31所述的方法,還包括下列步驟由多個伺服器系統中的其中一個伺服器系統使用可執行程序來處理所提供的數據。
34.如權利要求33所述的方法,還包括下列步驟由多個伺服器系統中的其中一個伺服器提供處理後的數據。
35.如權利要求24所述的方法,還包括下列步驟在客戶端系統接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
36.如權利要求24所述的方法,還包括下列步驟在客戶端系統接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
37.如權利要求24所述的方法,其中步驟(e)包括下列步驟(e-a)接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則;(e-b)評估該規則以確定該標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行;(e-c)根據步驟(e-a)中的評估結果發送一個在多個伺服器系統中的其中一個伺服器系統上執行該標識出的可執行程序的請求。
38.如權利要求1所述的方法,其中,步驟(e)包括下列步驟(e-a)在客戶端系統接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中的至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。(e-b)評估所接收的規則以確定該標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行;以及(e-c)根據步驟(e-a)中的評估結果發送一個在多個伺服器系統中的其中一個伺服器系統上執行該標識出的可執行程序的請求。
39.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)呈現出在多個伺服器系統上中的一個伺服器系統上存儲的數據文件的圖形描繪;(b)接收對數據文件的圖形描繪的選擇;(c)把對數據文件的圖形描繪的選擇傳輸給多個伺服器系統中的其中一個伺服器系統;(d)從多個伺服器系統中的其中一個伺服器系統接收一個執行與所選擇的數據文件相關聯的可執行程序的請求;以及(e)執行與所選擇的數據文件相關聯的可執行程序。
40.如權利要求39所述的方法,還包括下列步驟(f)接收與所選擇的數據文件相關聯的數據,以供由執行程序來處理。
41.如權利要求40所述的方法,步驟(f)還包括下列步驟(f-a)接收一個指向所選擇的數據文件的指針。
42.如權利要求41所述的方法,步驟(f)還包括下列步驟(f-b)用接收到的指針從多個伺服器系統中的其中一個伺服器系統檢索與所選擇的數據文件相關聯的數據;
43.如權利要求40所述的方法,其中,步驟(f)還包括下列步驟(f-a)用超文本傳輸協議(HTTP)和消息傳送應用程式編程接口(MAPI)協議中的至少一種接收與所選擇的數據文件相關聯的數據以供進行處理。
44.如權利要求40所述的方法,還包括下列步驟使用該執行程序來處理接收到的數據。
45.如權利要求44所述的方法,還包括下列步驟提供處理後的數據。
46.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)接收一個規定數字文件的類型和要在客戶端系統上執行的可執行程序之間的關聯;(b)在多個伺服器系統中的其中一個伺服器系統上存儲數據文件;(c)接收對所存儲的數據文件的選擇;(d)用接收到的映射標識出與所選擇的數據文件的類型相關聯的可執行程序;以及(e)向客戶端系統發送一個執行標識出的可執行程序的請求。
47.如權利要求46所述的方法,還包括下列步驟修改多個伺服器系統中的其中一個伺服器系統上的數據文件以便包括接收到的映射。
48.如權利要求46的方法,還包括下列步驟以定期方式或按需方式中的至少一種更新接收到的映射。
49.如權利要求46所述的方法,還包括下列步驟接收用於確定一個標識出的執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
50.如權利要求46所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
51.如權利要求46所述的方法,步驟(e)包括下列步驟(e-a)評估一個用於確定該標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
52.如權利要求51所述的方法,步驟(e)包括下列步驟(e-b)根據步驟(e-a)中的評估結果發送一個在客戶端系統上執行該標識出的可執行程序的請求。
53.如權利要求46所述的方法,還包括下列步驟(f)提供與所選擇的數據文件相關聯的數據,以供由執行程序來處理。
54.如權利要求53所述的方法,其中,步驟(f)還包括下列步驟(f-a)提供一個指向所選擇的數據文件的指針。
55.如權利要求54所述的方法,還包括下列步驟(f-b)利用所提供的指針對與所選擇的數據文件相關聯的數據的請求作出響應。
56.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)由多個伺服器系統中的其中一個伺服器系統接收一個映射,該映射規定數據文件的類型和要在客戶端系統上執行的可執行程序之間的關聯;(b)在多個伺服器系統中的其中一個伺服器系統上存儲數據文件;(c)在客戶端系統上接收對所存儲的數據文件的選擇;(d)把對數據文件的選擇傳輸到多個伺服器系統中的其中一個伺服器系統;(e)用接收到的映射在多個伺服器系統中的其中一個伺服器系統上標識出與所選擇的數據文件類型相關聯的可執行程序;(f)向客戶端系統發送一個執行標識出的可執行程序的請求;以及(g)在客戶端系統執行與所選擇的數據文件相關聯的可執行程序。
57.如權利要求56所述的方法,還包括下列步驟(h)由客戶端系統檢索與所選擇的數據文件相關聯的數據。
58.如權利要求57所述的方法,其中,步驟(h)包括下列步驟(h-a)使用超文本傳輸協議(HTTP)和消息傳送應用編程接口(MAPI)協議中的至少一種檢索與所選擇的數據文件相關聯的數據以供進行處理。
59.如權利要求56所述的方法,還包括下列步驟向客戶端系統提供一個指向所選擇的數據文件的指針。
60.如權利要求59所述的方法,還包括下列步驟由客戶端系統用所提供的指針檢索與所選擇的數據文件相關聯的數據。
61.如權利要求56所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
62.如權利要求56所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
63.如權利要求56所述的方法,其中,步驟(f)包括下列步驟(f-a)由多個伺服器系統中的其中一個伺服器系統評估一個用於確定標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
64.如權利要求63所述的方法,其中,步驟(f)還包括下列步驟(f-b)根據步驟(f-a)中的評估結果發送一個在客戶端系統上執行標識出的可執行程序的請求。
65.如權利要求56所述的方法,還包括下列步驟使用執行程序處理接收到的數據。
66.如權利要求65所述的方法,還包括下列步驟提供處理後的數據。
67.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)呈現出在web伺服器上存儲的數據文件的圖形描繪;(b)接收一個執行第一個可執行程序的請求,所述請求包括涉及與數據文件相關聯的第二個可執行程序的信息,第二個可執行程序在客戶端系統上或多個伺服器系統中的其中一個伺服器系統上執行。(c)從第二個可執行程序接收應用輸出數據;(d)由第一個可執行程序格式化接收到的、要加以呈現的應用輸出數據。
68.如權利要求67所述的方法,還包括下列步驟接收第一個可執行程序。
69.如權利要求67所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統上或多個伺服器系統中的其中一個伺服器系統上執行的規則。
70.如權利要求67所述的方法,還包括下列步驟接收用於確定一個標識出的可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、以及客戶端系統和多個伺服器系統之間的連接速度。
71.如權利要求67所述的方法,還包括下列步驟(e)發送一個執行與所選擇的數據文件相關聯的第二個可執行程序的請求。
72.如權利要求71所述的方法,步驟(e)包括下列步驟(e-a)評估一個用於確定該第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則;以及(e-b)根據步驟(e-a)中的評估結果發送一個在多個伺服器系統中的其中一個伺服器系統上執行第二個可執行程序的請求。
73.如權利要求67所述的方法,還包括下列步驟從第二個可執行程序接收應用輸出數據。
74.如權利要求73所述的方法,還包括下列步驟用第一個可執行程序顯示應用輸出數據。
75.如權利要求67所述的方法,還包括下列步驟接收與數據文件相關聯的數據。
76.如權利要求75所述的方法,還包括下列步驟向執行第二個可執行程序的計算機提供接收到的數據。
77.如權利要求67所述的方法,還包括下列步驟接收一個指向數據文件的指針。
78.如權利要求77所述的方法,還包括下列步驟用接收到的指針請求與數據文件相關聯的數據。
79.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)傳輸數據文件的圖形描繪;(b)提供一個執行第一個可執行程序的請求,第一個可執行程序用於在客戶端系統上接收應用輸出數據,該請求包括涉及要在客戶端系統或多個伺服器系統中的其中一個伺服器系統上執行的第二個可執行程序的信息。
80.如權利要求79所述的方法,還包括下列步驟提供第一個可執行程序。
81.如權利要求79所述的方法,還包括下列步驟提供一個指向數據文件的指針。
82.如權利要求81所述的方法,還包括下列步驟利用所提供的指針對與數據文件相關聯的數據的請求提供服務。
83.如權利要求79所述的方法,還包括下列步驟提供數據文件的內容。
84.如權利要求79所述的方法,還包括下列步驟提供用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
85.如權利要求79所述的方法,還包括下列步驟提供用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載以及客戶端系統和多個伺服器系統之間的連接速度。
86.在包括一個客戶端系統和多個伺服器系統的網絡中,一種能夠實現分布式程序執行的方法,該方法包括下列步驟(a)由web系統傳輸在web伺服器上存儲的數據文件的圖形描繪;(b)向客戶端系統提供一個執行第一個可執行程序的請求,第一個可執行程序用於在客戶端系統上接收應用輸出數據,該請求包括涉及要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的第二個可執行程序的信息;以及(c)由客戶端系統在客戶端系統上執行第一個可執行程序。
87.如權利要求86所述的方法,還包括下列步驟向客戶端系統提供第一個可執行程序。
88.如權利要求86所述的方法,還包括下列步驟在客戶端系統接收用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則。
89.如權利要求86所述的方法,還包括下列步驟在客戶端系統接收用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則,該規則把在客戶端系統和多個伺服器系統中的其中一個伺服器系統之間的確定指定為下列項中至少一個的函數客戶端系統上的負載、多個伺服器系統中的其中一個伺服器系統上的負載、多個伺服器系統上的負載、客戶端系統和多個伺服器系統之間的連接速度。
90.如權利要求86所述的方法,還包括下列步驟(d)向多個伺服器系統中的其中一個伺服器系統提供一個執行與所選擇的數據文件相關聯的第二個可執行程序的請求。
91.如權利要求90所述的方法,其中,步驟(d)包括下列步驟(d-a)由客戶端系統評估一個用於確定第二個可執行程序要在客戶端系統還是在多個伺服器系統中的其中一個伺服器系統上執行的規則;和(d-b)由客戶端系統根據步驟(d-a)中的評估結果發送一個在多個伺服器系統中的其中一個伺服器系統上執行第二個可執行程序的請求。
92.如權利要求86所述的方法,還包括下列步驟由客戶系統從第二個可執行程序接收應用輸出數據。
93.如權利要求92所述的方法,還包括下列步驟由客戶端系統用第一個可執行程序顯示應用輸出數據。
94.如權利要求86所述的方法,還包括下列步驟由web伺服器提供與所選擇的數據文件相關聯的數據。
95.如權利要求86所述的方法,還包括下列步驟由web伺服器提供一個指向所選擇的數據文件的指針。
96.如權利要求95所述的方法,還包括下列步驟由客戶端系統利用所提供的指針來請求與所選擇的數據文件相關聯的數據。
全文摘要
在一個方面,接收到文件類型和程序之間的映射,客戶端系統文件以圖形化的方式加以呈現,接收到對圖形描繪的選擇,標識出與所選擇的文件相關聯的程序,發出一個執行標識出的程序的請求。在另一方面,以圖形化地方式呈現伺服器系統文件,接收到對圖形描繪的選擇,把選擇傳輸給伺服器系統,接收到一個執行相關聯程序的請求,執行該相關聯程序。在又一方面,以圖形化方式呈現web伺服器文件,接收到一個執行第一個程序的請求,該請求包括涉及與文件相關聯的第二個程序的信息。檢查來自第二個程序的應用輸出數據並由第一個程序對其格式化並把接收到的應用輸出數據顯示給用戶。
文檔編號G06F9/445GK1599901SQ02824187
公開日2005年3月23日 申請日期2002年10月1日 優先權日2001年10月2日
發明者F·皮爾特, M·裡奇特伯格 申請人:茨特裡克斯系統公司