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)可以簡單方便地實現資料庫遠端管理。
本文介紹如何綜合運用XMLHTTP和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 與為「選擇」為「#」「錯誤用POST方式開啟連接,非同步執行。
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '上傳表單
xmlHttp.Send # c # c Err.Number = 0 Then '如果連線正確
retStr = xmlHttp.responseText '等待並取得服務端回傳的結果字串
Else
出錯訊息
End If
Set xmlHttp = nothing '釋放物件
GetResult = retStr 網頁的URL參數,把上傳的指令安置在URL後面的參數上,如:
urlStr = "server.asp?cmd=" & cmd & "&db=" & db & "table=" & table
cmd:執行方式,例如查詢,修改,刪除等等。
db:服務端資料庫名稱
table:服務端表名
然後提交指令,等待並接收回傳的處理結果。結果以字串方式傳回。
最後由函數呼叫者處理並顯示結果。
#
以上是XML相關技術資料總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!