remote script文檔(轉(zhuǎn)載自微軟)(一)
更新時間:2007年03月03日 00:00:00 作者:
文檔: 遠程執(zhí)行服務(wù)器腳本
復(fù)雜的 Web 應(yīng)用程序既調(diào)用客戶腳本又調(diào)用服務(wù)器腳本??蛻裟_本經(jīng)常用于對應(yīng)用程序的用戶接口進行編程──例如,為了動態(tài)改變 Web 頁文本,對用戶動作,比如雙擊作出反應(yīng),并執(zhí)行諸如驗證這樣的面向客戶的任務(wù)??蛻裟_本在瀏覽器中局部執(zhí)行,這樣就向用戶提供了一種生動的、反應(yīng)迅速的接口。
對比來說,服務(wù)器腳本是用來對某個應(yīng)用程序的末段編程的。這經(jīng)常引起對某個數(shù)據(jù)庫的存取動作,或者執(zhí)行中間層業(yè)務(wù)邏輯。服務(wù)器腳本也用于創(chuàng)建較大范圍的應(yīng)用程序:也就是可能通過多種不同類型的瀏覽器(每個都有不同存取能力)進行存取的應(yīng)用程序。
但是客戶和服務(wù)器腳本是互斥的。當某個頁首次請求時,服務(wù)器可能運行服務(wù)器腳本,并將頁傳遞給瀏覽器,然后瀏覽器就可以運行客戶腳本。不過,如果該頁上的服務(wù)器腳本有必要再次運行的話,那么必須將該頁提交回服務(wù)器,服務(wù)器可以有效地重新運行該頁。對頁面上控件狀態(tài)和腳本中值的維護可能涉及到在瀏覽器和服務(wù)器之間來回傳遞信息的一個復(fù)雜的 scripting 過程。另外,客戶和服務(wù)器之間的折返過程涉及到顯示某個應(yīng)用程序的重載過程。
一種折衷方案是 remote scripting。Remote scripting 使得用戶可以在客戶腳本中工作,但要調(diào)用某個 ASP 頁中的方法(函數(shù)或者例程)。實際上,用戶可以象調(diào)用本地例程那樣調(diào)用服務(wù)器腳本,不過它們?nèi)匀贿\行在服務(wù)器上,并具有對服務(wù)器能力的所有存取權(quán)限。由于用戶從不把當前頁留作調(diào)用服務(wù)器腳本之用,因此頁的狀態(tài)仍然保持。
用戶可以在下列任務(wù)中使用 remote scripting:
當用戶繼續(xù)和某個數(shù)據(jù)輸入表單交互作用時,服務(wù)器上的數(shù)據(jù)檢查和數(shù)據(jù)驗證。
更新來自服務(wù)器的頁面中的信息而無須刷新屏幕。
Remote Scripting 如何工作
Remote scripting 是作為一個函數(shù)庫來實現(xiàn)的,當用戶希望運行某個服務(wù)器方法時,用戶從客戶腳本中調(diào)用這些函數(shù)。當用戶調(diào)用某種服務(wù)器方法時,請求即被傳遞到瀏覽器中異步運行的一個代理過程中(在實現(xiàn)過程中,代理是作為一個 Java applet 來實現(xiàn)的。)該代理過程發(fā)送一個請求到包含用戶調(diào)用方法的 ASP 頁的服務(wù)器中。
服務(wù)器加載 ASP 頁,而且該 ASP 頁上的一個特殊例程將用戶的請求調(diào)度到正確函數(shù)。如果方法有返回值,那么該值即被發(fā)送回代理過程,該過程將之包裝為一個對象 ──一個調(diào)用對象 ──它包含了返回值以及其他有用信息的屬性。
當用戶在客戶腳本中對服務(wù)器方法進行調(diào)用時,可以在兩種方式中選擇其一來完成:
同步 用戶腳本調(diào)用遠程過程,并等待其返回。如果用戶在處理之前需要遠程過程結(jié)果的話,那么就有必要這么做。
異步 用戶腳本對某個遠程腳本進行調(diào)用,然后繼續(xù)處理。該頁保持有效狀態(tài),以便于用戶處理。如果某個調(diào)用要持續(xù)較長一段時間,那么就有必要使用異步調(diào)用。
Remote Scripting 的部件
為了實現(xiàn) remote scripting,除了用戶自己的客戶 (.htm) 文件和服務(wù)器 (.asp) 文件外,還需要下面的文件:
Rs.htm 包含了用戶在自己的 .htm 文件中初始化 remote scripting、執(zhí)行遠程過程、檢查遠程調(diào)用狀態(tài),以及獲得方法結(jié)果時所要使用的方法。
Rs.asp 包含了用戶在 .asp 文件中初始化服務(wù)器端的 remote scripting,以及在自己的頁中調(diào)度到適當函數(shù)時所要調(diào)用的方法。
Rsproxy.class 包含客戶和服務(wù)器頁之間通信時 applet 的 Java 類文件(對象代碼)。
這些文件充當用戶可以在自己的文件中使用的文件庫。一般說來,用戶只需要簡單地將相關(guān)文件(Rs.htm 或者 Rs.asp)包括進自己的客戶或者服務(wù)器頁中,然后遵照所需調(diào)用方法進行處理。有關(guān)詳細信息,請參閱 在客戶頁中使得 Remote Scripting 有效 以及 在服務(wù)器頁中使得 Remote Scripting 有效。
在用戶的客戶頁中,用戶引用 Rs.htm,這使得該文件中的方法對于用戶服務(wù)器腳本來說是有效的。對 Rsproxy applet 的調(diào)用就在這些方法中。當用戶創(chuàng)建服務(wù)器頁的時候,用戶將服務(wù)器端的一個 INCLUDE 語句 ─ 該語句引用 Rs.asp 文件 ─ 包括進去。伴隨客戶文件中的 Rs.htm,這樣做使得所需要的方法在服務(wù)器頁上成為有效的。
所有文件都必須在服務(wù)器上是有效的。用戶可以將它們放置到任何合適的地方。不過,對于用戶的客戶和服務(wù)器文件來說,當它們從服務(wù)器發(fā)出請求時,路徑都必須是有效的。缺省的情況是,remote scripting 過程假設(shè)這些文件在用戶服務(wù)器或者工程的虛擬根目錄外的一個名為 _ScriptLibrary 的文件夾中是有效的。如果用戶不將它們放到那里,那么要特別注意它們的路徑,因為在創(chuàng)建客戶和服務(wù)器頁時,用戶需要指定之。
Remote Scripting 和安全性
Remote scripting 提供和 Java applet 或 IFrames 同樣級別的安全性。為了確保 remote scripting 不違反服務(wù)器安全性,用戶不能將結(jié)構(gòu)化數(shù)據(jù)(包括對象)作為參數(shù)傳遞給某個服務(wù)器文本來執(zhí)行。另外,用戶進行 remote scripting 調(diào)用的服務(wù)器必須和用戶請求包含該請求的客戶頁的服務(wù)器是同一個。
復(fù)雜的 Web 應(yīng)用程序既調(diào)用客戶腳本又調(diào)用服務(wù)器腳本??蛻裟_本經(jīng)常用于對應(yīng)用程序的用戶接口進行編程──例如,為了動態(tài)改變 Web 頁文本,對用戶動作,比如雙擊作出反應(yīng),并執(zhí)行諸如驗證這樣的面向客戶的任務(wù)??蛻裟_本在瀏覽器中局部執(zhí)行,這樣就向用戶提供了一種生動的、反應(yīng)迅速的接口。
對比來說,服務(wù)器腳本是用來對某個應(yīng)用程序的末段編程的。這經(jīng)常引起對某個數(shù)據(jù)庫的存取動作,或者執(zhí)行中間層業(yè)務(wù)邏輯。服務(wù)器腳本也用于創(chuàng)建較大范圍的應(yīng)用程序:也就是可能通過多種不同類型的瀏覽器(每個都有不同存取能力)進行存取的應(yīng)用程序。
但是客戶和服務(wù)器腳本是互斥的。當某個頁首次請求時,服務(wù)器可能運行服務(wù)器腳本,并將頁傳遞給瀏覽器,然后瀏覽器就可以運行客戶腳本。不過,如果該頁上的服務(wù)器腳本有必要再次運行的話,那么必須將該頁提交回服務(wù)器,服務(wù)器可以有效地重新運行該頁。對頁面上控件狀態(tài)和腳本中值的維護可能涉及到在瀏覽器和服務(wù)器之間來回傳遞信息的一個復(fù)雜的 scripting 過程。另外,客戶和服務(wù)器之間的折返過程涉及到顯示某個應(yīng)用程序的重載過程。
一種折衷方案是 remote scripting。Remote scripting 使得用戶可以在客戶腳本中工作,但要調(diào)用某個 ASP 頁中的方法(函數(shù)或者例程)。實際上,用戶可以象調(diào)用本地例程那樣調(diào)用服務(wù)器腳本,不過它們?nèi)匀贿\行在服務(wù)器上,并具有對服務(wù)器能力的所有存取權(quán)限。由于用戶從不把當前頁留作調(diào)用服務(wù)器腳本之用,因此頁的狀態(tài)仍然保持。
用戶可以在下列任務(wù)中使用 remote scripting:
當用戶繼續(xù)和某個數(shù)據(jù)輸入表單交互作用時,服務(wù)器上的數(shù)據(jù)檢查和數(shù)據(jù)驗證。
更新來自服務(wù)器的頁面中的信息而無須刷新屏幕。
Remote Scripting 如何工作
Remote scripting 是作為一個函數(shù)庫來實現(xiàn)的,當用戶希望運行某個服務(wù)器方法時,用戶從客戶腳本中調(diào)用這些函數(shù)。當用戶調(diào)用某種服務(wù)器方法時,請求即被傳遞到瀏覽器中異步運行的一個代理過程中(在實現(xiàn)過程中,代理是作為一個 Java applet 來實現(xiàn)的。)該代理過程發(fā)送一個請求到包含用戶調(diào)用方法的 ASP 頁的服務(wù)器中。
服務(wù)器加載 ASP 頁,而且該 ASP 頁上的一個特殊例程將用戶的請求調(diào)度到正確函數(shù)。如果方法有返回值,那么該值即被發(fā)送回代理過程,該過程將之包裝為一個對象 ──一個調(diào)用對象 ──它包含了返回值以及其他有用信息的屬性。
當用戶在客戶腳本中對服務(wù)器方法進行調(diào)用時,可以在兩種方式中選擇其一來完成:
同步 用戶腳本調(diào)用遠程過程,并等待其返回。如果用戶在處理之前需要遠程過程結(jié)果的話,那么就有必要這么做。
異步 用戶腳本對某個遠程腳本進行調(diào)用,然后繼續(xù)處理。該頁保持有效狀態(tài),以便于用戶處理。如果某個調(diào)用要持續(xù)較長一段時間,那么就有必要使用異步調(diào)用。
Remote Scripting 的部件
為了實現(xiàn) remote scripting,除了用戶自己的客戶 (.htm) 文件和服務(wù)器 (.asp) 文件外,還需要下面的文件:
Rs.htm 包含了用戶在自己的 .htm 文件中初始化 remote scripting、執(zhí)行遠程過程、檢查遠程調(diào)用狀態(tài),以及獲得方法結(jié)果時所要使用的方法。
Rs.asp 包含了用戶在 .asp 文件中初始化服務(wù)器端的 remote scripting,以及在自己的頁中調(diào)度到適當函數(shù)時所要調(diào)用的方法。
Rsproxy.class 包含客戶和服務(wù)器頁之間通信時 applet 的 Java 類文件(對象代碼)。
這些文件充當用戶可以在自己的文件中使用的文件庫。一般說來,用戶只需要簡單地將相關(guān)文件(Rs.htm 或者 Rs.asp)包括進自己的客戶或者服務(wù)器頁中,然后遵照所需調(diào)用方法進行處理。有關(guān)詳細信息,請參閱 在客戶頁中使得 Remote Scripting 有效 以及 在服務(wù)器頁中使得 Remote Scripting 有效。
在用戶的客戶頁中,用戶引用 Rs.htm,這使得該文件中的方法對于用戶服務(wù)器腳本來說是有效的。對 Rsproxy applet 的調(diào)用就在這些方法中。當用戶創(chuàng)建服務(wù)器頁的時候,用戶將服務(wù)器端的一個 INCLUDE 語句 ─ 該語句引用 Rs.asp 文件 ─ 包括進去。伴隨客戶文件中的 Rs.htm,這樣做使得所需要的方法在服務(wù)器頁上成為有效的。
所有文件都必須在服務(wù)器上是有效的。用戶可以將它們放置到任何合適的地方。不過,對于用戶的客戶和服務(wù)器文件來說,當它們從服務(wù)器發(fā)出請求時,路徑都必須是有效的。缺省的情況是,remote scripting 過程假設(shè)這些文件在用戶服務(wù)器或者工程的虛擬根目錄外的一個名為 _ScriptLibrary 的文件夾中是有效的。如果用戶不將它們放到那里,那么要特別注意它們的路徑,因為在創(chuàng)建客戶和服務(wù)器頁時,用戶需要指定之。
Remote Scripting 和安全性
Remote scripting 提供和 Java applet 或 IFrames 同樣級別的安全性。為了確保 remote scripting 不違反服務(wù)器安全性,用戶不能將結(jié)構(gòu)化數(shù)據(jù)(包括對象)作為參數(shù)傳遞給某個服務(wù)器文本來執(zhí)行。另外,用戶進行 remote scripting 調(diào)用的服務(wù)器必須和用戶請求包含該請求的客戶頁的服務(wù)器是同一個。
相關(guān)文章
remote script文檔(轉(zhuǎn)載自微軟)(四)
remote script文檔(轉(zhuǎn)載自微軟)(四)...2007-03-03remote script文檔[轉(zhuǎn)載自微軟](二)
remote script文檔[轉(zhuǎn)載自微軟](二)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(八)
remote script文檔(轉(zhuǎn)載自微軟)(八)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(五)
這篇文章主要介紹了remote script文檔的相關(guān)資料,需要的朋友可以參考下2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(七)
remote script文檔(轉(zhuǎn)載自微軟)(七)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(六)
remote script文檔(轉(zhuǎn)載自微軟)(六)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(一)
remote script文檔(轉(zhuǎn)載自微軟)(一)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(九)
remote script文檔(轉(zhuǎn)載自微軟)(九)...2007-03-03不錯的remote script文檔(轉(zhuǎn)載自微軟)(三)
不錯的remote script文檔(轉(zhuǎn)載自微軟)(三)...2007-03-03