系分論文:論XML技術在Internet平臺上的應用
隨著Internet信息技術的發(fā)展,我所在的公司準備開發(fā)一個網上商城,這樣各個商家就可以把自己的產品信息在這個網上商城中發(fā)布,并且提供了在線購買。也就是開發(fā)一個電子商務平臺,在這個平臺上,整合了來自不同商家的信息,方便在線用戶的查詢和購買。有點類似現(xiàn)實中的商城,為各個商家提供地方,方便消費者購買。
本人有幸成為這個項目的系統(tǒng)分析員之一,參與了這個系統(tǒng)的設計,并且對系統(tǒng)中的關鍵實現(xiàn)技術也進行了一一驗證。整個網上商城系統(tǒng)由三層組成。在數(shù)據(jù)層,由于各個商家自己有著不同的數(shù)據(jù)庫來存儲自己信息,為了實行信息在同一平臺上的共享和處理,我們采用XML數(shù)據(jù)的形式來實行數(shù)據(jù)間的轉換和處理。在業(yè)務邏輯層,在聯(lián)機會話的持續(xù)時間內,用戶的賬戶數(shù)據(jù)在內存中以XML DOM形式表示,在表示層,所有給用戶的信息首先都封裝成XML數(shù)據(jù),然后用服務器或者客戶機附帶的XSLT轉換,根據(jù)瀏覽器的性能將XML數(shù)據(jù)轉換為HTML在前端顯示。
在數(shù)據(jù)層,我們面臨的***個的問題就是如何統(tǒng)一認識將要采用的XML數(shù)據(jù)的元素。剛開始是由一個人來定義XML數(shù)據(jù)的元素,但是后來發(fā)現(xiàn),這樣定義處理的XML元素很難獲得別人的認同,并且對于不同的商家,所定義的XML元素不具有代表性。于是,在爭取到領導的支持后,把以前的XML元素設計推倒重來,而且借鑒了國外關于類似設計所采用的域分析的方法,該方法就是一個用于確定網上商城這個域的術語,范圍,共性和變性的過程。就這樣為了尋求一個統(tǒng)一的XML元素的定義,我們成立了一個小組來進行的網上商城的域分析,這個小組有商家代表,數(shù)據(jù)庫設計員,參與多個項目的有豐富經驗的程序員和一個專門指導該組域分析的大學專家組成。
在小組會議的開始,我們首先達成一個共識,那就是需要采用一直標準術語來避免交流中產生的誤解。于是,我們在剛開始的一周內先確定的關于網上商城的一下公用術語,比如store(商城),shop(店面),ware(商品)等,作為XML最基本的元素。
在小組討論的過程中,有成員建議對于域分析,分多個階段進行,每個階段提交域分析報告,比如***階段的域分析報告主要為標準術語以及各個商家信息共性和可變性的表格,第二階段的域分析報告,對于域分析中的商家可變性的東西進行詳細說明。我們采納這個建議,獲得了很好的效果。就這樣,通過3周的域分析,我們小組最終提交一份完整的關于XML網上商城元素的詳細表格,由于這些XML元素是由各個部分和商家代表討論處理的,所以很快被整個項目組成員所接收,并且這些XML元素在后來的開發(fā)中證明是非常完整,能夠清楚地反映數(shù)據(jù)的結構,大大提高了整個的系統(tǒng)的開發(fā)效率。
在業(yè)務邏輯層,由于所有數(shù)據(jù)庫的信息都被轉換為XML數(shù)據(jù)結構,所以在處理數(shù)據(jù)庫信息的時候還必須對XML數(shù)據(jù)進行XML語法分析,并且將分析出來的結果送往程序。在這兒我們考慮采用XML DOM(文檔對象模型)來保存這些語法分析出來的XML數(shù)據(jù)。比如在聯(lián)機會話的持續(xù)時間內,一個用戶的帳戶數(shù)據(jù)首先從傳統(tǒng)的關系型數(shù)據(jù)庫中讀取出來,轉換為XML數(shù)據(jù)結果,并且通過一個XML語法分析器,將XML數(shù)據(jù)轉換成為DOM對象保存在內存中,程序通過Java的DOM API 訪問這些對象。在這兒為了更好地選擇處理XML的技術和方法,我還比較其他兩種分析XML數(shù)據(jù)并且保存的方法。
比較了幾種方法,發(fā)現(xiàn)DOM有個缺點就是當它保持的數(shù)據(jù)非常多的時候,將大量占用內存的存儲空間。但是,使用DOM API也有一個明顯的好處就是簡單,它可以通過Java程序直接使用一些方法調用DOM樹上的數(shù)據(jù)。為此在設計的時候,盡可能地重復調用已經存儲在內存中的DOM 對象上面的數(shù)據(jù),避免對于相同的數(shù)據(jù)有多個DOM對象存在。在編碼過程中面臨的問題不是很多,關鍵是讓程序員熟悉DOM API的各種調用方法。
在表示層,考慮到將大量的運算負荷分布在用戶端,既用戶可以根據(jù)自己的需求選擇或者制訂不同的應用程序以處理數(shù)據(jù),我們設計把所有給用戶的信息首先都封裝成XML數(shù)據(jù),然后用服務器或者客戶機附帶的的XSLT轉換,根據(jù)瀏覽器的性能將XML數(shù)據(jù)轉換為HTML在前端顯示。這樣的話,服務器只需要準備一次的Web內容,盡可能完善,準確地將數(shù)據(jù)封裝到XML文件中,而XML的自解釋性可以使得用戶端在接收到XML文件的同時也理解數(shù)據(jù)的邏輯結構和含義,再通過轉換程序,XML可轉換為用戶所需要的個性的多樣的HTML顯示方式。在設計中我們所選取的XSLT是一種用于操作XML文檔的高級語言,就像SQL是操作關系表的高級語言一樣。
一個XSLT規(guī)范本事就是一個XML文檔,我們通過它的規(guī)范,描述出各個用戶可以選擇的各個HTML顯示模板,這樣客戶端程序只需選擇好模板,再加上接收到的XML數(shù)據(jù)文件,就可以方便地生成自己個性化的HTML文件,并且在瀏覽器中顯示出來。當然在開發(fā)中遇到了不少問題,首先由于XSLT是一門起點比較高的語言,也比較煩瑣,掌握起來比較慢,使得對程序員的要求比較高。這樣導致使用XSLT語言編寫的HTML文件的模板過于冗長,作為設計師我一方面是希望模板程序盡可能地包含HTML頁面所有的功能和美觀,一方面又希望模板程序盡可能地短少,簡潔,便于修改。
為了達到兩種選擇之間的平衡,以達到***效果,我對于基本模板的設計,采用有經驗的程序員進行設計,并且要求盡可能多地寫全文檔,并且頻繁地開展小組會議,對頁面設計和美工人員詳細講述模板各個部分和功能。
在Internet平臺上采用XML技術,明顯的效果之一是對于不同數(shù)據(jù)庫的支持,通過將各種數(shù)據(jù)轉換為XML文件,可以實行了數(shù)據(jù)間的轉換,共享和處理。效果二是支持了用戶的個性化服務,支持用戶在不同的客戶端可以個性地選擇顯示界面。
由于HTML在許多復雜的Web應用中遇到了問題,為了徹底解決這些問題,必須采用功能強大的XML來代替HTML作為Web頁面的書寫工具,而XML的廣泛使用,必定能夠推動Web的不斷發(fā)展,開創(chuàng)Web應用的新時代。對于XML技術在Internet平臺上的應用,我更關注它的擴展性,既讓XML包含更加豐富更完整的數(shù)據(jù)信息,目前公司所接觸的首先是軟件模型的交換和模型信息的保存,打算在XMI(XML Metadata Intercharge)展開工作。XMI作為一種試圖通過XML語言為程序員和其他用戶提供一種交換元數(shù)據(jù)信息的標準途徑,是作為MDA模型驅動的模型交換的基礎,是非常具有意義的工作。
【編輯推薦】