曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
C o i n s需要在X M L文件與J a v a對象間建立密切的聯系,而X M L - R P C在X M L中是一個靜態的
接口。這就導致了交換消息的程序之間的依賴性。數據元素能夠通過一個更新程序被加入,而
不需要對另一個程序同步更新。
關于Coins的進一步信息可參考此網站:http://www.jxml.com/coins/index.htm/。
3. WDDX的串行化過程
基于以上二者之間的是W D D X,即分布式We b數據交換,它是在程序之間交換復雜數據結
第11章服服務器到服務器使用425 下載
構的一種技術。它基本上是語言獨立的X M L數據的描述標準,它還包括一套串行化/逆串行化的
模塊。模塊被A l l a i r e所發展。目前,它已經被JavaScript 1.x 、ColdFusion 4.0、C O M、P e r l和
J a v a所包含。W D D X使用X M L描述分布式對象,但并不像X M L - R P C那樣激活一個遠程調用。
可以從h t t p:/ / w w w·w d d x . o rg /網站中下載WDDX DK并能得到關于W D D X的更進一步的
描述。
W D D X的應用程序將通過串行化把對本地對象的描述打包,然后傳送給遠程服務器,在那
里,一個應用程序將使用逆串行化過程解包,并產生有用的相關信息。
W D D X并不關心數據如何被發送,只關心數據已被提交到一個網頁,而該網頁能夠從請求
對象中訪問被串行化的X M L,一個包含有所需書籍標題名字的簡單W D D X數據包,如下例所
示:
程序清單11 - 2
我們能夠使用腳本并通過消息的串行化創建數據包,下面就是一個P e r l的例子:
Perl WDDX庫在可下載的S D K中。
程序清單11 - 3
下面是一個J a v a S c r i p t的例子,功能和上面的例子相同:
426使用XML 高級編程
下載
程序清單11 - 4
然后,我們將這個已串行化的W D D X消息存儲在一個H I D D E N元素中,而這個元素允許消
息從一個表單區提交來— 我們稱這個H I D D E N區域為W d d x C o n t e n t。當內容被提交到
W d d x C o n t e n t后,將使用逆串行化過程得到原始消息,使用W D D X逆串行化對象去進行此項工
作。
程序清單11 - 5
W D D X是一個非常有用的規范,并能同許多語言協同工作。實際上,它已經被A l l a i r e(它
的發明者)用于一些產品的制造,但是,比起X M L - R P C和S O A P來,它是一個較為封閉的規范,
并與這些規范的要求不一樣。同時,它比起S O A P來有較多限制,但對于簡單分布式通信而言它
是勝任的。
4. XMOP的串行化過程
XML Metadata Object Persistence即X M L元數據對象一致性,它的目標是使如C O M、J a v a和
C O R B A等技術能交互運行,而這是通過提供形式對象串行化的機制來實現,這種機制與特定的
系統對象并無聯系。因此對象能夠在C O M和J a v a之間配置,甚至能夠在不同的J a v a的虛擬機上
第11章服服務器到服務器使用427 下載
配置。
值得注意的是X M O P是X M L - R P C或者S O A P的補充(例如在S O A P方法調用中作為一種界面
參數串行化的方式)。
X M O P使用SODL (簡單對象定義語言) (SODL可參見h t t p : / / j a b r.ne.mediaone.net /documents
/sodl.htm) 即XML IDL DTD,它允許在C O M和C O R B A中通過使用I D L使得對對象描述保持兼容
性,X M O P實際上使用S O D L的DTD 1.0版本。
更多的信息請訪問:http//jabr.ne.mediaone.net/documents/xmop.htm。
5. KOALA的串行化
另一方面, K O M L(K o a l a對象標記語言)是一種J a v a解決方案,它描述如何串行化和逆串
行化一個X M L文檔中的J a v a對象,并遵循XML 1.0的標準和SAX 1.0標準。一些人可能發現它是
有用的,因為它是一個1 0 0 %的J a v a解決方案,但是因為它僅能服務于J a v a對象,這就限制了它
的使用,在I n t e r n e t上更是如此。
K o a l a方案使用J a v a S e r i a l i z a b l e接口類實現集成。
一個K o a l a可串行化對象必須實現接口j a v a . i o . S e r i a l i z a b l e,因此用J a v a描述的一個叫做Bo o k
的類有下面的代碼:
程序清單11 - 6
在K O M L中將被表現為如下的X M L文檔:
程序清單11 - 7
一個K O M L文檔的命名空間將指向URL http://www. i n r i a . f r / k o a l a / X M L / k o m l 11 . d t d,關于
KOML的進一步信息,能在如下站點找到:http://www.inria.fr/ koala/XML/serialization/。
11.2.2 緊耦合系統和松耦合系統
下面我們將討論X M L所提供的松耦合系統的優點和缺點,松耦合系統是與傳統的緊耦合系
428使用XML 高級編程
下載
統比較而言的。當今的許多應用程序仍提供緊耦合系統,它要求理解在其中傳遞的消息格式,
例如是否這些消息使用了D C O M或C O R B A(I I O P)。另一方面,松散耦合系統并不需要系統間
如此嚴格的理解,至于X M L,它僅是一個在其間傳送的簡單文本。
1. 松耦合系統的缺點
對于一個分布式組件解決方案來講,使用松耦合的X M L的兩個最大可能的缺點是帶寬和速
度。例如,盡管X M L消息的創建是簡單的,但是在它們被傳送到應用程序前必須通過一個X M L
解析器而使之有效,這個過程是非常重要的。同時,將一個標記文本加到數據中去組成一個
X M L文檔也是很重要的,通過傳送增加了網絡的通信量(盡管使用壓縮技術可以減少網絡的通
信量)。
緊耦合系統了解其間傳輸的消息的格式。與X M L消息比較而言,它能節省網絡成本,因為
X M L的消息必須經過解析。當然,傳統的緊耦合系統經常需要“握手”,并且如果服務器升級為
另一個新的格式,將很容易導致這種“握手”失敗。
2. 松散耦合系統的優點
事實上,基于X M L的組件框架是能夠被升級的,多種方法的調用能夠被打包在一個請求里,
這與傳統的客戶-服務器模式相反,在這種模式里,每個被調用的方法都必須產生一個請求。
圖11 - 7顯示了傳統的遠程方法調用的過程:
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(136)