基於XML的三層C/S模型

[摘要]可擴展標誌語言(簡稱XML)在實現信息標準化、信息的交流與共享上有其獨特的技術優勢,因此它受到了廣泛的重視。全文首先提出了基於XML的三層Client/Server模型;然後對其從數據獲取、傳輸至顯示以及外部處理的應用進行分析;接着以圖書資料管理系統爲例,說明了其具體的實現;最後對基於XML的三層C/S模型在信息標準化、數據處理等方面的應用優勢進行了總結。

 

[關鍵字]XML、Client/Server模型、三層結構模型.

 

1.問題的提出

 

      可擴展的標記語言 (Extensible Markup Language,縮寫爲XML)是SGML (Standard Generalized Markup Language,標準通用標記語言)的一個子集,是簡化的SGML。它是互聯網聯合組織(W3C)創建一組規範,以便於軟件開發人員和內容創作者在網頁上組織信息,其目的不僅在於滿足不斷增長的網絡應用需求,而且也在於確保在通過網絡進行交互合作時,具有良好的可靠性與互操作性。

      隨着Web技術、分佈式對象技術兩者的有機結合,傳統的Client/Server主從結構逐漸向靈活的多級分佈式Web計算模型進行着演變。多級分佈式Web體系結構可劃分爲三層:表示層(客戶機層)、功能層(應用服務器層)、數據層(數據庫服務器層)。

      而由於XML可以自定義文件類型,有利於信息的表達和結構化組織,而且可以以一致的方式格式化和傳送數據,若將其運用到三層Client/Server模型中,必將產生很大的網絡應用優勢。於是也就引出了本文討論的問題--基於XML的三層C/S模型。

 

2.基於XML的三層C/S模型

 

      從網絡體系結構各層次上看,基於XML的三層C/S模型具體實現的功能概括如下:

 

數據層--實現數據的集成,XML數據產生於多種數據源,但都以統一的XML格式表達傳輸。

功能層--實現數據的發送與處理,應用服務器通過HTTP交換數據,通過DOM處理XML數據。

表示層--實現數據的顯示,XML數據的可以有多種表現形式,而且可以爲外部直接訪問、編輯或轉換,也可被其他系統所用。


      在基於XML的三層C/S模型中把XML作爲一種結構化信息交換的表示方法,負責所有與數據源的通信,根據最終用戶的要求,聚集和組織從多個遠程數據庫服務器上獲取數據,並用XML形式交互式的把數據源返回的消息傳遞給客戶機。

 

2.1從數據層獲取數據生成XML文檔

 

      由於XML能夠使不同來源的結構化的數據很容易的結合在一起,所以通過XML,可以在中間層服務器上對從後端數據庫和其它應用處來的數據進行集成。然後,數據就能被髮送到客戶或其他服務器做進一步的集合、處理和分發。

      雖然每個數據庫描述數據都是不同的,但XML可以自己定義文件標籤,例如:通過XML,圖書管理資料就可以很容易以標準的方式按照書名、作者、圖書簡介或其他的標準進行分類。

 

2.2 XML數據的發送與刷新

 

      利用XML開放的、基於文本的格式,可以將它通過HTTP像HTML一樣傳送。同時,中間層應用服務器將支持XML更新功能,將數據服務器上數據的變化及時地傳遞給客戶,反之亦然。因此,中間層能夠從客戶端得到更新的數據,並把數據傳送到數據儲存服務器上。

 

2.3 XML數據在表示層的顯示

 

      XML描述的數據發到表示層後,能夠用多種方式顯示。XML定義的數據,其顯示與內容是分開的,因此允許對同一數據指定不同的顯示方式,使數據更合理地表現出來。CSS和XSL爲數據的顯示提供了公佈的機制,本地的數據能夠以客戶配置、使用者選擇或其他標準決定的方式動態地表現出來。
      HTML描述數據的外觀,而XML描述數據本身。由於XML注重的是內容,其顯示要通過XSL(eXtensible Stylesheet Language,可擴展樣式語言)或CSS來實現。XSL是爲XML文件定義的一種標識語言,它提供類似但卻遠遠超過CSS的強大功能。

      XSL以包含了一套元素集的XML語法規範而定義,該語法規範將被用來把XML文件轉換成HTML文件或XML文檔。一個XSL樣式表集合了一系列設計規則以用於將信息從XML文件中汲取出,並將其轉換成HTML等其它格式。XSL憑藉其可擴展性能夠控制無窮無盡的標籤,而控制每個標籤的方式也是無窮盡的。這就給Web提供了高級的佈局特性。

 

2.4 處理和編輯XML數據

 

      在基於XML的C/S模型中,不但能夠通過XML集合多個數據源的數據,並把數據源數據及時傳輸給表示層,而且,只要能理解XML數據,就能從客戶層處理和編輯中間層的數據,然後通過中間層與數據層之間的數據刷新機制,對數據層數據進行刷新。

      運用XML解析器能夠讀入一串XML數據,經過處理,產生一棵結構樹,並且使用DOM把所有數據元素作爲對象。解析器或者用腳本把數據進行進一步的處理,或者把數據移交給另外的應用軟件或對象進行進一步的處理。

      DOM實際上是一個應用編程接口(API),用來定義一種標準方法。通過這種方法,能夠處理XML結構樹的元素。對象模式控制着使用者如何同結構樹交流,並且把所有樹的元素作爲對象暴露出來。DOM用擴展方式支持名域、數據類型、查詢和XSL轉化。

 

3. 基於XML的三層C/S模型的應用實例

 

      下面具體介紹如何實現基於XML的三層C/S模型,以我們做所過的三層C/S 模式的圖書資料管理爲例,它是基於XML表達、傳輸與處理的。

 

3.1 獲取數據生成XML文檔

 

      中間層通過XML獲取數據源數據,生成XML文檔,其中每一的書目信息包括:書名、作者、圖書簡介、出版日期。下面所列的就是獲取數據源的一段典型例程。

 

<%@ LANGUAGE=VBScript %>

<? XML VERSION="1.0" encoding="GB2312" ?>

    <圖書資料管理>

<%Set Connection=Server.CreateObject("ADODB.Connection")

Connection.Open

Set ItemRecordset =Connection.Execute("select * from item ")

Do while Not ItemRecordset.EOF%>`

<書目>

<書名><%= ItemRecordset("書名") %></書名>

<作者><%= ItemRecordset("作者") %></作者>

<圖書簡介><%= ItemRecordset("圖書簡介") %></圖書簡介>

<出版日期><%= ItemRecordset("出版日期") %></出版日期>

</書目>

<%ItemRecordset.MoveNext

Loop%>

</圖書資料管理>


3.2 XML文檔通過HTTP從應用服務器傳送到客戶機層,並且支持XML更新功能,使得中間層或數據服務器上數據的變化可以傳遞給客戶。

 

3.3 XML數據的在表示層(客戶機層)的表達

 

      發送到客戶端的數據(圖書資料管理數據),可以根據用戶對象及其不同的應用要求有不同的顯示形式。如下所示的XSL樣式表,就是一個顯示示例,將生成一個HTML文檔,包括一個表格,其中的一行就爲一個"書目"元素。

 

<xsl:template match="/">

<HTML>

<HEAD>

<TITLE>圖書資料管理</TITLE>

</HEAD>

<BODY>

<TABLE>

<xsl:for-each select="圖書資料管理">

<TR>

<xsl:for-each select="書目">

<TD>

<xsl:process-children/>

</TD>

</xsl:for-each>

</TR>

</xsl:for-each>

</TABLE>

</BODY>

</HTML>

</xsl:template>

 

3.4 編輯、處理數據的實現

 

      只要理解了中間層XML文檔的數據,就能從任何地方處理和編輯數據(圖書資料管理數據)。

      如下例所示,LoadDocument程序打開XML文檔,然後調用另一個程序DisplayNode,它用來顯示文檔的結構。LoadDocument傳遞給正在打開的XML文檔的ChildNodes屬性一個引用作爲它的參數,同時傳遞一個整數用來標示開始顯示的層次級別。代碼利用參數來格式化在Visual Basic文檔結構顯示窗口中的文本。

      DisplayNode屬性的函數會遍歷文檔尋找需要的NODE_TEXT節點類型串,一旦代碼找到一個NODE_TEXT的節點,它會利用NodeValue屬性來獲得相應的文本串。另外,當前節點的ParentNode屬性指向一個元素類型的節點。元素節點實現了一個NodeName屬性。

 

Public Sub LoadDoc

ument()

 

Dim xDoc As MSXML.DOMDocument

Set xDoc = New MSXML.DOMDocument

xDoc.validateOnParse = False

If xDoc.Load("C:/My Documents/sample.xml") Then

DisplayNode xDoc.childNodes, 0

Else

' The document failed to load.

End If

End Sub

Public Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _

ByVal Indent As Integer)

Dim xNode As MSXML.IXMLDOMNode

Indent = Indent + 2

For Each xNode In Nodes

If xNode.nodeType = NODE_TEXT Then

Debug.Print Space$(Indent) & xNode.parentNode.nodeName & _

":" & xNode.nodeValue

End If

If xNode.hasChildNodes Then

DisplayNode xNode.childNodes, Indent

End If

Next xNode

End Sub

 

4.總結

 

      在基於XML的三層C/S模型中,中間層一次性從遠程數據庫中獲取滿足客戶需求的信息,生成相應的XML文檔,以後中間層就不需要再與遠程數據庫進行交互了,即與遠程數據庫的連接也就終止了。一旦中間件軟件把滿足客戶需要的信息組裝起來以後,就可以以XML 形式發送給客戶了,這樣客戶與中間層也就無需進一步交互。

      同時,豐富的XML數據發送給客戶端後,客戶應用和腳本語言就可以直接使用這些數據,這時客戶端與中間層服務器之間連接就可以中止了。

      因此,在C/S模型中發送給中間層的信息是簡潔的、個人化的和精確的。應用服務器負責在正確的時候組裝並交付正確的信息,這將網絡上的流量減小並提供了高度的交互能力和用戶的滿意程度。而且,由於中間層可以提供動態的、易訪問的內容,這些內容可以被客戶方操作。而且,無需刷新整個用戶界面就可以更新頁面的內容,這樣就減少了從服務器方獲取客戶方已有的信息所需的交互時間。用戶可以方便的遠程管理數據,使得網絡成爲一種具有更大的交互性和互操作性的媒體。

      其次,運用基於XML的三層C/S模型,XML結構化的數據可以從商業規範和表現形式中分離出來,而且可以更詳細地定義某個數據對象的數據結構,解決了信息標準化的問題。

      通過在三層C/S模型使用XML,使得企業之間可以通過網絡,與合作伙伴間,進行跨平臺,跨操作系統的信息交換。

 

 

 

參考文獻

 

[1] Hiroshi Maruyama ,Kent Tamura , Naohiko Uramoto .XML and Java Developing Web Applications[M]. Addison-Wesley, August 1999.

[2] Ed Tittel, Norbert Mikula , Ramesh Chandak . XML For DUMMIES [M]. IDG BOOKS Worldwide ,
Inc ,1999.

[3] 宋曉樑,劉東生,許滿武. 中間件及其在三層客戶機/服務器模型中的應用[N] . 計算機應用990713

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章