![用XML和ASP實現分布式信息查詢系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/b0dbae8d-24b6-4d1c-aff5-0930441b3924/b0dbae8d-24b6-4d1c-aff5-0930441b39241.gif)
![用XML和ASP實現分布式信息查詢系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/b0dbae8d-24b6-4d1c-aff5-0930441b3924/b0dbae8d-24b6-4d1c-aff5-0930441b39242.gif)
![用XML和ASP實現分布式信息查詢系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/b0dbae8d-24b6-4d1c-aff5-0930441b3924/b0dbae8d-24b6-4d1c-aff5-0930441b39243.gif)
![用XML和ASP實現分布式信息查詢系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/b0dbae8d-24b6-4d1c-aff5-0930441b3924/b0dbae8d-24b6-4d1c-aff5-0930441b39244.gif)
![用XML和ASP實現分布式信息查詢系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/b0dbae8d-24b6-4d1c-aff5-0930441b3924/b0dbae8d-24b6-4d1c-aff5-0930441b39245.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用XML和ASP實現分布式信息查詢系統(tǒng)信息中心 臧 磊摘 要:隨著江蘇省電力信息系統(tǒng)的發(fā)展,各種數據也在不斷地積累和豐富,對信息的查詢和分析變得越來越重要。但是由于數據分布在異地異種服務器上,想獲得這些數據變得十分困難?,F有的信息查詢手段已經不能適應當前的需要,如何方便、快捷地獲取信息已經成為了一個急待解決的問題。近年來,隨著XML技術的出現和發(fā)展,為解決以上的問題,提供了一種良好的途徑。本文提出了一種基于XML和ASP技術的分布式信息查詢系統(tǒng)的框架,并用實例詳細分析了該系統(tǒng)的實現方法。關鍵詞:XML;ASP;信息查詢;0 引言隨著江蘇省電力信息系統(tǒng)的發(fā)展,各種數據也在不斷地積累和豐富,對信息
2、的查詢和分析變得越來越重要。但是由于數據分布在異地異種服務器上,想獲得這些數據變得十分困難。目前,為解決該問題,通常采用的方法有兩種:數據集中式查詢和基于數據庫的分布式查詢。數據集中式查詢是指下級單位定時地將本地數據通過專用的上報程序發(fā)送到上級中心數據庫中。然后所有的查詢數據都從這個中心數據服務器中獲取。這種方法的缺點是明顯的,上級數據庫只能被動的接受數據,無法實時地進行信息查詢,且對中心服務器的要求較高。另一種方式是基于數據庫的分布式查詢,指的是查詢程序主動到多個遠程數據庫中獲取數據。這種方式的優(yōu)點是可以隨時地對分布數據進行查詢,但是這種方式也有其局限性。一是所有的查詢任務都由一臺服務器完成
3、,這將加重服務器的負荷,且服務器端的程序開發(fā)也顯得復雜;二是不利于異種環(huán)境數據的收集。由于種種原因,有些應用是由不同的部門完成的,因此在設計思想、數據庫結構以及數據庫系統(tǒng)的選用上都有著較大的區(qū)別。顯然傳統(tǒng)的方式對于解決這種情況將非常麻煩;三是這種方式一般需要在遠程數據庫中設立一個用戶身份,而且有時為了方便,往往都要采用同一個用戶名和密碼,顯然這對系統(tǒng)的安全造成了一定的威脅。從上面的分析可以看出,現有的信息查詢手段已經不能適應當前的需要,如何方便、快捷地獲取信息已經成為了一個急待解決的問題。近年來,隨著XML技術的出現和發(fā)展,為解決以上的問題,提供了一種良好的途徑。1 相關技術概述1.1 XML
4、及相關技術XML是eXtensible Markup Language(可擴展的標記語言)的縮寫,是W3C組織于1998年2月發(fā)布的標準。W3C組織制定XML標準的初衷是,定義一種互聯網上交換數據的標準。W3C采取了簡化SGML的策略,在SGML基礎上,去掉語法定義部分,適當簡化DTD部分,并增加了部分互聯網的特殊成分。因此,XML也是一種標記語言,基本上是SGML的一個子集。因為XML也有DTD,所以XML也可以作為派生其它標記語言的元語言。XML文檔需要有嚴格的格式,而且更好的是,我們可以通過文檔類型定義(DTD)來對XML的內容格式做嚴格的規(guī)定。這樣的好處是在一個特定的領域中,我們可以定
5、義一種統(tǒng)一的數據交換格式,不同的企業(yè)之間可以用這種統(tǒng)一的格式進行數據和信息的交互而不管它們使用的是什么操作系統(tǒng)和數據庫。從以上的描述可以看出,XML具有標準化、平臺無關、格式良好等優(yōu)點,而這些優(yōu)點正是信息收集和交換所必須具備的基本條件。1.2 ASP簡介ASP(Active Server Pages)是微軟建立的一種“服務器端腳本編寫”環(huán)境,可用于創(chuàng)建和運行動態(tài)的交互式 Web 服務器應用程序。它實際上是一種腳本語言,可以用VBScript,JavaScript,Jscript來實現。使用 ASP,可以合并 HTML 頁、腳本命令以及 COM 組件創(chuàng)建交互式 Web 頁和功能強大的 Web 應
6、用程序。ASP最大的優(yōu)點在于它和微軟的COM技術的結合,使用各種各樣的com組件,ASP可以完成無比強大的功能。例如我們使用FileSystemObject,可以對服務器上的文件進行操作,瀏覽、復制、移動、刪除等等。有ADO(Active Database Object,動態(tài)數據庫對象)的支持,ASP對數據庫的操作非常得心應手。你甚至可以像使用本地數據庫那樣,管理遠程主機上的數據庫,對表格、記錄進行各種操作。2 實現方案2.1系統(tǒng)總體框架描述基于XML技術的查詢系統(tǒng)采用了多層結構,包括用戶服務層、業(yè)務邏輯層和數據服務層,如圖1所示。主業(yè)務用戶接口數據訪問業(yè)務邏輯層用戶服務數據服務圖1 三層服務
7、模型用戶服務層 提供應用程序界面,保證用戶界面的一致性、完整性和友好性,通常采用的是瀏覽器界面。業(yè)務邏輯層 提供所有業(yè)務規(guī)則的實現。業(yè)務邏輯層處于用戶服務層和數據服務層之間,它接收用戶的請求,對用戶的請求進行分析,根據業(yè)務邏輯的需要從數據庫服務層提取數據并對數據進行過濾、整理和匯總,在格式化以后,發(fā)送給用戶服務層。業(yè)務邏輯層也可以采用多層結構,根據各個業(yè)務邏輯層間所屬關系及數據的傳遞形式,將一個具體的業(yè)務處理細化為幾個步驟的調用,每一個步驟都隸屬于業(yè)務邏輯層的某一個層次。如可以劃分為用戶接口層、主業(yè)務層、數據訪問層等。數據服務層 提供業(yè)務所需的數據,通常情況下是數據庫系統(tǒng),也可以是其他形式,如
8、XML文檔、音頻、視頻等。為了描述基于XML和ASP的信息收集方案的框架結構,我們通過構造一個簡單的例子來說明,該網站的基本功能是實時地查詢基層各單位的變電設備缺陷情況。其過程描述如下:用戶通過瀏覽器訪問市公司網站(中心服務器),網站顯示一個查詢表單的界面,提示用戶輸入搜索條件,然后用戶提交搜索表單,將查詢條件(如缺陷性質,時間范圍等)傳遞給中心服務器;搜索程序根據它所保存的縣公司服務器地址,把用戶的請求發(fā)送給每個縣公司網站(子服務器);每一個子服務器查詢程序根據用戶提供的參數來查詢本地數據庫,然后把結果以XML的形式發(fā)送回中心服務器。中心服務器對這些結果進行分析、整理,返回給用戶,并以網頁的
9、形式展現各用戶,過程如圖2所示。圖2 基于XML的缺陷查詢體系結構的系統(tǒng)流程圖2.2 信息傳遞格式我們在信息傳遞中采用的是XML格式,當然這個XML文檔并不是任何格式都可以的,為了能夠準確的對數據進行匯總和處理,我們需要定義XML文檔的DTD格式,所有的輸出的XML文檔必須遵守這個格式。DTD通常和數據庫結構有著密切聯系,因此我們除了可以手工生成DTD外,也可以利用一些工具根據數據庫結構來自動生產DTD,如XMLSPY等。以缺陷查詢系統(tǒng)為例,查詢條件(數據請求)的DTD格式定義為:<?xml version="1.0" encoding="gb2312&qu
10、ot;?><!ELEMENT cxtj ( qxxz,sj)><!ELEMENT qxxz (#PCDATA)><!ELEMENT sj (#PCDATA)>查詢結果(數據返回)的DTD格式定義為:<?xml version="1.0" encoding="gb2312"?><!ELEMENT 缺陷記錄集合 ( 缺陷記錄* )><!ELEMENT 缺陷記錄 ( 發(fā)現時間,設備編號,設備名稱,缺陷內容,缺陷性質,發(fā)現人,匯報日期,接收人,消缺時間,消缺工作負責人,備注)><
11、!ATTLIST 缺陷記錄 單位代碼 CDATA #REQUIRED 變電所代碼 CDATA #REQUIRED 缺陷編號 CDATA #REQUIRED><!ELEMENT 發(fā)現時間 (#PCDATA)><!ELEMENT 設備編號 (#PCDATA)><!ELEMENT 消缺工作負責人 (#PCDATA)><!ELEMENT 備注 (#PCDATA)>2.3 用戶服務層用戶服務層主要有兩個作用:一個是和用戶進行交互,比如用戶輸入相關的要查詢的信息等,另外一個目的就是顯示結果信息,比如顯示根據用戶的查詢參數返回的結果。為了方便用戶進行查詢
12、,我們需要建立一個網頁讓用戶輸入需要查詢的信息。比如在本例中,這里我們考慮的是一個關于查詢變電缺陷的應用。所以我們需要的查詢參數主要是和變電缺陷有關的參數:比如:缺陷性質、缺陷發(fā)現時間、發(fā)生缺陷的設備、消缺時間等等。這個網頁可以用標準的HTML語言制作,并可以用CSS來對其顯示形式進行打扮,一般來說該用戶端的Web頁面并不需要使用任何腳本,但是也可以增加腳本進行一些基礎的數據的合法性判斷,比如判斷用戶在需要輸入時間的文本框中是否按合法的格式輸入數據等等。這個網頁除了用來收集用戶查詢條件外,另一個重要的作用是把用戶的條件提交給中心服務器,采用的是如下的方式:form method=”post”
13、action="中心服務器網頁.asp"<select size="1" name="qxxz"> <option value="一類缺陷">一類缺陷</option></select><select size="1" name="sj"><option value="2001">2001</option></select>年 <input type=&q
14、uot;submit" name="B1" value=" 查 詢" size="2"></form>在用戶按下提交按鈕以后,相關的參數就會傳遞給"中心服務器網頁.asp"這個網頁。然后該網頁就對該查詢字符串進行分析,當然這就是屬于業(yè)務邏輯層的工作了。用戶服務層的另外一個目的就是將查詢結果返回給用戶,并以某種形式顯示出來,在這里我們采用了XSL的方式。相關的細節(jié),我們稍后再詳細論述。 2.4 業(yè)務邏輯層業(yè)務邏輯層是系統(tǒng)最重要、最復雜、也最核心的部分。用戶服務層的工作實際上可以理解為是界面
15、的設計和表示,更多的是考慮用戶界面友好的問題。而業(yè)務邏輯層則是應用系統(tǒng)核心、每一種應用的最大的區(qū)別嚴格的說也就是在業(yè)務邏輯層上。業(yè)務邏輯層即可以用COM或者JAVA語言來實現,但是實際上,我們也可以采用ASP來實現復雜的業(yè)務邏輯。在本例中我們就采用了ASP。在我們這個示例框架系統(tǒng)中,業(yè)務邏輯層由被劃分為用戶接口層、主業(yè)務層和數據訪問層三個層次,我們將逐一加以描述。2.4.1 用戶接口層用戶接口層的作用就是從用戶處提取關于用戶想要的和缺陷相關參數,對請求數據進行分析,然后把請求給它所有已知的子服務器,從子服務器處獲得數據并進行整合,然后對結果進行格式化并返回給用戶。不同的服務器可以采用不同的方法
16、來和自己的數據庫進行交互,也就是說,用戶接口層只負責把參數和參數值傳遞給各個相關的頁面,該頁面如何進行處理,用戶接口層并不關心,但是它要求子服務器返回的結果必須符合XML的DTD定義。在本例中,該層位于中心服務器上。具體的操作流程如下:首先,我們需要提取用戶傳遞的參數的值,在ASP中,可以通過Request組件來提取。然后,我們依據這些參數,生成一個XML格式的請求信息,并發(fā)送到不同的子服務器,所以這里問題的關鍵是要構造符合DTD定義的XML文檔。子服務器的URL列表保存在一個文件中,可以使用FileSystem服務組件讀取。然后我們將該字符串用HTTP POST方法發(fā)送給列表中的服務器,并將
17、返回的結果發(fā)送給用戶。該部分的代碼如下:<% postdata=postdata&"<cxtj>"postdata=postdata&"<qxxz>"&request(“qxxz”)&"</qxxz>"postdata=postdata&"<sj>"&request(“sj”)&"</sj>"postdata=postdata&"</cxtj>&
18、quot;Set xmlHttp = Server.CreateObject("msxml2.XMLHTTP")set objVendorFileSystem=server.createObject("Scripting.FileSystemObject")set objVendorFile=objVendorFileSystem.OpenTextFile(server.mappath("qx.txt")response.write "<缺陷記錄集合>"strURL = objVendorFile.Re
19、adLine()do while (not objVendorFile.AtEndOfStream)xmlhttp.Open "POST", strURL, falsexmlhttp.setRequestHeader "Content-Length",Len(postdata)xmlhttp.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"xmlhttp.Send postdata response.write bytes2bst
20、r(xmlhttp.responsebody) strURL = objVendorFile.ReadLine()loopresponse.write "</缺陷記錄集合>"%></缺陷查詢結果>其中,XMLHTTP是一個ASP組件,它可以使用Http協(xié)議來傳輸信息。在這里我們利用它在服務器之間進行通信,傳遞查詢參數和返回查詢結果。文件“qx.txt”保存的是子服務器的URL列表,內容形式如下所示:http:/WebServer1/CreateXML1.asphttp:/WebServer2/CreateXML2.asphttp:/WebSer
21、ver3/CreateXML3.asp“CreateXML*.asp”是表示某個服務器處理用戶請求的文件。不同的應用可能有自己不同的對用戶請求的處理方式和自己不同的數據庫結構和從數據庫中提取記錄的方法。2.4.2 主業(yè)務層主業(yè)務層是業(yè)務邏輯層的核心,它實現主要規(guī)則和邏輯。在本例中,主業(yè)務層的作用就是根據用戶的XML信息解析查詢條件,然后查詢生產系統(tǒng)數據庫,提取出符合條件的缺陷記錄,并根據缺陷的DTD定義以XML的形式返回結果。對不同的數據庫系統(tǒng)可能有不同的形式,可以有不同的實現方法。在這里,我們使用ASP來實現,該部分代碼如下:<% /利用DOM對XML文檔進行分析set xmldoc
22、= Server.CreateObject("Microsoft.XMLDOM")xmldoc.async=falsexmldoc.load request qxxz=xmlDoc.getElementsByTagName("qxxz").item(0).textsj=xmlDoc.getElementsByTagName("sj").item(0).textset conn=Server.CreateObject("ADODB.Connection")conn.open "DATABASE=scgdb;
23、dsn=scgdb;"set rs=server.CreateObject("adodb.recordset")sql=" select * from userid.sb_quexian where qxxz='"qxxz&"' and year(fxsj)="&sjrs.open sql,conn,1,1do while not rs.eof response.write "<缺陷記錄 單位代碼="""&trim(rs("dwd
24、m")&""" 變電所代碼="""&trim(rs("bdsdm")&""" 缺陷編號="""&rs("qxbh")&""">"response.write "<發(fā)現時間>"&rs("fxsj")&"</發(fā)現時間>"response.write
25、 "<設備編號>"&rs("wybm")&"</設備編號>"response.write "<設備名稱>I"&trim(rs("sbmc")&"</設備名稱>"response.write "<消缺工作負責人>"&trim(rs("xqgzfzr")&"</消缺工作負責人>"response.wri
26、te "<備注>"&trim(rs("bz")&"</備注>"response.write "</缺陷記錄>"rs.movenextlooprs.closeset rs=nothing%> 在這里我們使用了微軟的解析器來解析XML文檔。我們知道,在安裝了IE 5.0以后的版本后,系統(tǒng)就自動安裝了XML解析器,它實際上是一個dll文件,名稱為MSXML.DLL。該解析器提供了兩種解析方法,一種是通過文檔對象模型(DOM)進行XML文檔的解析,另外就是通過Sim
27、ple API for XML(SAX)的方法進行文檔的解析,這里我們采用的是DOM的方法進行文檔的解析。利用DOM,開發(fā)人員可以動態(tài)地創(chuàng)建XML文檔,遍歷結構,添加、修改、刪除內容等等。在本例中,我們利用DOM來獲取信息查詢的參數,如發(fā)現時間、缺陷性質等。2.4.3 數據訪問層 數據訪問層專門負責于數據服務器層打交道,在這里我們使用的是ADO。首先,我們可以用connection對象建立與數據庫的連接,然后,我們可以Recordset對象返回符合條件的記錄集,相關代碼見上。 2.5 數據服務層 數據服務層主要是用來存儲和管理數據,一般是關系型數據庫系統(tǒng),如DB2、Oracle、SQL Ser
28、ver等。2.6 查詢結果的表現形式 前面我們預留了一個問題,就是查詢結果的表現形式問題。在業(yè)務邏輯層收集好XML數據,在將結果到發(fā)送客戶端前,我們需要確定結果的表示形式。事實上,我們可以通過幾種方法呈現給用戶。首先,它可以使用平常的文本來顯示XML,在IE瀏覽器顯示為樹狀目錄。由于該種方法不夠直觀,一般不采用。另一種選擇就是先在服務器端把XML轉換成HTML,然后再把轉換后生成的HTML返回到用戶處,該種方法對服務器的要求較高。最后一種方式是使用XSL或CSS來格式化XML文檔,其中XSL功能更強大,也更靈活。XML文檔和XSL文檔被同時發(fā)送到用戶的計算機上,由瀏覽器使用XSL來決定XML文檔的表現形式。該種方法對服務器要求不高,且可以充分利用客戶端的計算能力,因此我們采用了這種方式。如以下的代碼就是將查詢結果以表格的形式顯示在瀏覽器中: <?xml version="1.0" encoding="gb2312"?><xsl:stylesheet xmlns:xsl="/TR/WD-xsl"><xsl:template match="/"> <xsl:apply-templates select="缺陷記錄集合
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度搬運工培訓意外免責協(xié)議范本2篇
- 注塑機出口售后保障協(xié)議書(2篇)
- 法律顧問合同范本(2篇)
- 2025年度高速鐵路建設項目外來施工安全防護協(xié)議
- 11《蟋蟀的住宅》說課稿-2024-2025學年四年級語文上冊統(tǒng)編版
- 2024秋九年級歷史上冊 第三單元 近代社會的發(fā)展與終結 第18課 叩響現代文明的大門說課稿 北師大版
- 8 古詩二首 望廬山瀑布(說課稿)-2024-2025學年統(tǒng)編版語文二年級上冊
- 5 魯濱遜漂流記(節(jié)選)說課稿-2023-2024學年統(tǒng)編版語文六年級下冊
- 13《貓》第二課時 說課稿-2023-2024學年統(tǒng)編版語文四年級下冊
- 二零二五年度跨國能源貿易風險防控協(xié)議3篇
- 2023年中國農業(yè)銀行應急預案大全
- 村衛(wèi)生室2023年度績效考核評分細則(基本公共衛(wèi)生服務)
- 關聯公司合作合同
- 【建模教程】-地質統(tǒng)計學礦體建模簡明教材
- PSM工藝安全管理
- 7天減肥餐食譜給你最能瘦的一周減肥食譜
- 最新北師大版八年級數學下冊教學課件全冊
- 危險化學品儲存柜安全技術及管理要求培訓
- 2023湖北成人學位英語考試真題及答案1
- Q∕SY 06342-2018 油氣管道伴行道路設計規(guī)范
- 物業(yè)管理企業(yè)用工風險與防范對策
評論
0/150
提交評論