曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
消費者
轉賣商
書庫
零售商依照得到
的書籍描述,將
定單發送給書庫
書庫向零售商提
供所有書籍的詳
細描述,包括最
新出版的圖書
消費者從零售商
處索取書籍標題
利用X M L的(參見圖11 - 2)。
圖11-2
11.1.1 基于FTP的XML傳送
在書庫中有一個常規性的處理過程即送X M L文檔到零售商,此X M L文檔包括數據庫中所有
最近出版的書籍的標題信息,例如目錄、主題、內容摘要和價格等。顯然,經過一段時間將會
有成千上萬的標題信息,因此X M L文檔將變得很大。這就決定了通過F T P傳送這些文檔是最有
效的一種方式,因為這種方式適合于成塊的數據傳送。
這是一個后臺自動、異步的過程,同時,我們必須在零售商的目的服務器運行一個進程,
它對到達的X M L文件掃描目標目錄,并且進行適當的工作,如索引某條消息,并將它插入到商
務書籍數據庫中。
圖11 - 3將顯示該工作過程。
圖11-3
11.1.2 XML和消息隊列
零售商訂購相關所需書籍的過程也是異步的,不過比起通過F T P來傳送X M L文檔,這個過
422使用XML 高級編程
下載
消費者
轉賣商
書庫
2. M S M Q上
的XML
3. 通過H T T P
的XML
4. 通過S M T P
的XML
1. F T P上
的XML
書庫服務器
分銷商服務器
將數據插入本地
數據庫
服務器處
書單被標記成為XML 理進程
并通過FTP傳送
程要相對輕松一些。這個訂單在某一刻將被呈遞。消息能夠到達是很重要的,因此最好的技術
是消息隊列,例如微軟消息隊列( M S M Q)或者I B M系統的M Q S e r i e s隊列(參見圖11 - 4)。
圖11-4
訂單消息并不是直接送至服務器處理,而是被排成一個消息隊列并遲一些時間再處理。訂
單在X M L中被傳遞,該X M L將從使用標記訂購書籍的X M L文檔中得到,這個文檔就是此前已經
通過F T P傳出的。
11.1.3 基于HTTP的XML
當一個消費者從零售商處購買一本書時,他使用網絡瀏覽器并提交一個關于該書的X M L文
檔,這個請求將被同步處理,并且能作為一個MSXML 被呈送到We b服務器。或者,如果我們開
發一個定制的組件,就能在其中使用M S X M L組件去實現XML HTTP請求(參見圖11 - 5)。
圖11-5
11.1.4 基于SMTP的XML
消費者訂購圖書能夠采用的最后一種方式是通過S M T P(e - m a i l)。其中,一個X M L文檔將
被傳送,必須符合以下兩點,即遵照一個有效的框架,并有一個檢查特定的P O P 3郵箱的過程,
這個郵箱是專供有效的X M L書籍定單使用,這些定單是參照訂購計劃制訂的,在消費者與零售
商之間的訂購允許異步(參見圖11 - 6)。
第11章服服務器到服務器使用423 下載
分銷商服務器
書庫服務器進程訂單
將定單放入隊列
客戶分銷商服務器
通過HTTP訂購圖書向數據庫中插入
定單信息
Web服務器
圖11-6
11.2 作為一種分布式組件模式的XML
前面已經演示, X M L作為一種消息在系統間傳送有很多種方式,下面我們將關注針對X M L
消息傳送而出現的一些流行的方式和標準。
11.2.1 消息傳送和串行化
典型的X M L文檔被構造成描述性結構、人可讀數據,并可對此進行一些處理。我們可以將
此概念擴展到機讀數據,并使用數據串行化按照一個明確的標準來傳送消息。這樣既減少了平
臺的依賴性,又通過使用代碼簡化了操作。
消息傳送包括一個稱作串行化的過程和它的反轉過程即逆串行化。通過串行化,一個數據條
目被構造成簡單的一維數組在線傳送,例如數據“ H e l l o,Wo r l d!”能夠被串行化為這種格式:
同樣一個包含有數據的記錄集如表11 - 1所示。
表11 - 1
列名值
F i r s t N a m e S t e v e n
L a s t N a m e L i v i n g s t o n e
C i t y G l a s g o w
它的串行化如下所示。
程序清單11 - 1
424使用XML 高級編程
下載
客戶
分銷商服務器
向數據庫插入
定單信息
信箱監視
通過SMTP訂購圖書過程
一旦我們使數據串行化,就能夠使它作為一種簡單的文本在不同的系統中傳送,在目的地
又使用逆串行化使之恢復到合乎需要的系統格式。有許多協議能夠用于傳送串行數據,最流行
的是H T T P、F T P和S M T P(該協議用于傳送e - m a i l)。
1. 使用X M L - R P C和S O A P的串行化
這一章里的主要焦點是X M L - R P C(X M L遠程過程調用),我們將看到它將串行化一些簡單
和比較復雜的數據形成X M L并在I n t e r n e t上傳送。執行上它將允許許多語言類型被串行化(或逆
串行化),并有一個廣闊的范圍,非常適合I n t e r n e t。S O A P即簡單對象訪問協議,是一個更復雜
和更成熟的X M L - R P C,我們將在后面作一些描述,二者都是完全開放的(在編寫本書時),并
且可以被許多平臺所運用。
X M L - R P C可能是最流行的、最有用的基于X M L的分布式通信協議。S O A P在較長時間后可
能成為其繼任者—對更為復雜的系統尤其如此。
2. Coins(X M L和J a v a的混合)
由于有對J a v a串行化的依賴,一些人并不認為J a v a b e a n s是在J a v a中寫組件的最好方法。
C o i n s混合了X M L和J a v a,并用X M L代替了串行化,并且不保存對象的狀態。它的目標是使程序
之間的消息傳送變得簡單。
而且,由于X M L是簡單自然語言(它沒有J a v a b e a n s那么嚴格),使得調試過程得到了改進。
在處理過程中,也少了許多限制——這是由于在X M L格式里,數據能夠很容易地在不同應用程
序中改變。如果參考外部組件,那么C o i n s也能夠再還原為X M L文檔,這是因為C o i n s支持獨立
文檔中元素之間的鏈接(相反,傳統的J a v a b e a n s并不支持超鏈接且很少支持組件劃分)。
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(135)