查看單個文章
舊 2006-07-05, 06:03 AM   #7 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Ajax核心:XMLHTTP元件相關技術資料



一、資料庫遠端管理技術

基於互連網的廣域網現代應用中的一個重要環節是資料庫遠端監控。首先簡單回顧一下互連網上的資料庫遠端管理技術的發展過程和方式:

早期通過編寫CGI-BIN程式模塊進行資料庫遠端管理。但CGI-BIN的執行速度慢,維護很不方便,現在已經基本被棄用。

這幾年使用元件對像模型(Component Object Model, COM)的應用非常多,效果也很好。但如果使用的是第三方服務器(筆者的網站就是建立在第三方的虛擬主機上),服務器方往往因為保密或其它商業原因不允許用戶註冊自己的元件。

近年來由微軟公司推出的.NET平台和SUN公司的J2EE平台都是非常高檔的資料庫遠端管理與服務平台。都能提供優質的多層(n-Tier)應用服務。 其中,.NET的簡單對像訪問協議(Simple Object Access Protocol, SOAP)使用超文本傳輸協議(Hypertext Transfer Protocol, HTTP)和擴展標記語言(Extensible Markup Language, XML)技術實現跨系統(例如Windows - Linux)的通訊服務方式已經廣為開發商接受和使用。許多大型應用,例如企業資源計劃(Enterprise resource planning, ERP)等都建立在這樣的大型平台之上。 但對於中小型應用,比如一個網站的建設和維護,這種大型應用平台就顯得有些尾大不掉,開銷也過於龐大。

曾經在互連網技術和Java技術方面一度落後的微軟公司在XML應用開發則走在了前頭。她的XML解析器(MSXML)中的XMLHTTP協議是一個非常方便實用的客戶/服務通訊管道。綜合運用XMLHTTP以及ActiveX資料對像(ActiveX Data Objects, ADO/ADOX)可以簡單方便地實現資料庫遠端管理。

二、資料庫遠端管理體系

資料庫遠端管理的任務流程是:

1、客戶端向服務端發出資料庫結構和資料的查詢或修改指令。

2、服務端接受並執行有關指令並向客戶端返回結果。

3、客戶端接受並顯示服務端返回的指令執行結果。

實現資料庫遠端管理的二個主要關鍵環節是:

1、客戶端與服務端之間的指令上傳和結果下傳的資料通道,由XMLHTTP協議實現。

2、服務端前沿與資料庫之間的指令傳送和結果返回,由起著中間層作用的ADO/ADOX接頭完成。

三、XMLHTTP的使用

顧名思義,XMLHTTP是個傳送XML格式資料的超文本傳輸協議。

實際上,XMLHTTP的資料傳輸過程更為靈活一些:

它上傳的指令可以是XML格式資料,也可以是字元串,流,或者一個無符號整數數組。還可以是URL的參數。

它下達的結果可以是XML格式資料,也可以是字元串,流,或者一個無符號整數數組。

詳情可參閱文末鏈接。

客戶端調用XMLHTTP的過程很簡單,只有5個步驟:

1、創建XMLHTTP對像

2、打開與服務端的連接,同時定義指令發送方式,服務網頁(URL)和請求權限等。

客戶端通過Open命令打開與服務端的服務網頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務端的服務網頁。

3、發送指令。

4、等待並接收服務端返回的處理結果。

5、釋放XMLHTTP對像

XMLHTTP方法

Open bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword

bstrMethod:資料傳送方式,即GET或POST。

bstrUrl:服務網頁的URL。

varAsync:是否同步執行。預設為True,即同步執行,但只能在DOM中實施同步執行。應用中一般將其置為False,即異步執行。

bstrUser:用戶名,可省略。

bstrPassword:用戶口令,可省略。

Send varBody

varBody:指令集。可以是XML格式資料,也可以是字元串,流,或者一個無符號整數數組。也可以省略,讓指令通過Open方法的URL參數代入。

setRequestHeader bstrHeader, bstrValue

bstrHeader:HTTP 頭(header)

bstrValue:HTTP 頭(header)的值

如果Open方法定義為POST,可以定義表單方式上傳xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

XMLHTTP內容

onreadystatechange:在同步執行方式下獲得返回結果的事件句柄。只能在DOM中調用。

responseBody:結果返回為無符號整數數組。

responseStream:結果返回為IStream流。

responseText :結果返回為字元串。

responseXML:結果返回為XML格式資料。

下面是本文附件源程式中的一個應用示例:

Function GetResult(urlStr)

Dim xmlHttp

Dim retStr

Set xmlHttp = CreateObject("Msxml2.XMLHTTP") '創建對像

On Error Resume Next '出錯處理

xmlHttp.Open "POST", urlStr, False '用POST方式打開連接,異步執行。

xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '上傳表單

xmlHttp.Send '發送指令

If Err.Number = 0 Then '如果連接正確

retStr = xmlHttp.responseText '等待並獲得服務端返回的結果字元串

Else

retStr = "Url not found" '否則返回出錯訊息

End If

Set xmlHttp = nothing '釋放對像

GetResult = retStr '返回結果

End Function

GetResult()函數帶入一個服務網頁的URL參數,把上傳的指令安放在URL後面的參數上,如:

urlStr = "server.asp?cmd=" & cmd & "&db=" & db & "table=" & table

cmd:執行方式,例如查詢,修改,刪除等等。

db:服務端資料庫名

table:服務端表名

然後提交指令,等待並接收返回的處理結果。結果以字元串方式返回。最後由函數調用者處理並顯示結果。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次