通過閱讀本文,您將了解面向服務的架構(Service-OrIEnted Architecture,SOA)、XML 和 XMLBeans 如何在解決實際商業問題中發揮重要作用及其原因,文中將以娛樂業為例進行案例分析。本文的目的並不在於介紹代碼,而是讓您了解在需要使用 XML 時如何使用 XMLBeans 及其原因。
面對日益升級的軟件復雜度,企業架構師的注意力逐漸集中到了一種能夠解決系統集成問題的方法 —— 面向對象的架構(SOA)。從本質上來說,SOA 就是要通過增強業務與信息技術(IT)的運作關系來提高企業效益。
SOA 將請求/應答設計范例應用於同步和異步應用程序中。在這種方法中,業務應用程序的邏輯和功能以服務的形式體現。應用程序開發人員或系統集成人員可以通過組合一項或多項服務來構建應用程序,而不必知道服務的底層實現方法。通過這種方式可以實際地整合所有 IT 資源,包括孤立的數據和以前不兼容的遺留系統。
在 SOA 范例中,提供者與消費者通過消息進行通信。消息傳遞接口必須與平台和語言無關。因此,通常使用符合 XML 模式的 XML 文檔來構造消息。當然,也常常以 XML 格式存儲應用程序數據。
XML 提供了基本語法,您可以使用基本語法在各種計算機、各種應用程序和各種組織之間共享信息,而無需經過多層轉換。XML 之所以重要,是因為它為構建集成基礎設施提供了通用的標准化平台,從而為企業應用程序集成工作提供支持。
為什麼使用 XMLBeans?
使用 XMLBeans 可以將 Java™ 編程語言與 XML 結合使用。Java 編程語言是一種面向對象的語言,它基於開放的、公開的標准,可移植、健壯而且可靠。由於具備這些特點,Java 編程語言已被廣泛接受並在包括娛樂業在內的許多行業中得到了實現。然而,XML 與 Java 編程語言不兼容。而 XMLBeans 就是掃清這一障礙的最佳選擇。
XMLBeans 用於 XML 數據綁定。使用 XMLBeans,Java 應用程序就可以充分利用 XML 的優勢。XMLBeans 使用 XML Schema 來編譯用於訪問和修改 XML 實例數據的 Java 接口和類。使用此項技術,您可以將 XML Schema 編譯到一組 Java 類中使其具有以下功能:
遇到任何 Schema 時都使用 XMLBeans
根據需要在任意級別訪問 XML 數據
XMLBeans 提供了以下應用程序接口(API)用於數據綁定:
XmlObject:如果 Java 類是通過 XML Schema 生成的,則這些 Java 類都是派生自 XMLObject API。
XmlCursor:XmlCursor API 提供了對 XML Infoset 的低層訪問權,它表示 XML 實例中的光標位置。
SchemaType:用於底層元信息的 XML Schema 對象模型。
XMLBeans 編譯器將生成 XML 模式的對象表示。這個對象表示是一組表示模式的結構和約束的通用 Java 類和接口。在生成 Java 類和接口後,符合該模式的 XML 實例文檔就會與之綁定。綁定過程包括以面向對象的方式使用 XMLBeans API 來訪問實際 XML 實例文檔中的數據。
如果使用功能強大的 XMLBeans,則無需為使用 XML 而編寫所有代碼。您可以輕松地在應用程序中使用 XML。如果不使用 XMLBeans,您就必須編寫代碼來利用模式的每一部分。試想:用 XMLBeans 為模式生成類,假定有若干個一對一、一對多和多對多關系需要管理,使用 XMLBeans 可以輕而易舉地完成這一任務:
安裝 XMLBeans。
編譯模式來生成 Java Archive(JAR)文件。
編寫代碼將 XML 實例綁定到表示模式的 Java 類型上。清單 1 提供了一個簡單的例子:
清單 1. XMLBeans 簡單易用
File xmlEntertainFile = new File("c:entertain.XML");
// Bind the instance to the XMLBeans types that were generated.
EntertainDocument entDoc =
EntertainDocument.Factory.parse(XMLEntertainFile);
// Get and then print pIEces of the XML instance.
Entertain ent = entDoc.getEntertain();
Entertain[] entArray = ent.getEntertainArray();
for (int i = 0; i < entArray.length; i++)
{
System.out.println(entArray[i]);
}
娛樂業
那麼,所有這一切是如何在現實世界裡實現的呢?首先,計算能力發生了不可思議的轉變。隨著 SOA 的推廣,計算能力越來越多地從傳統星型模型(在這種模型裡,高性能的服務器共同組成集線器)轉到更加對等的模型上,組合網絡的優勢在於比中央服務器具有更強大的計算能力。實際上,中央服務器就變成了網絡中的節點。隨著 Internet 和高速 Internet 連接的發展,娛樂業走向了數字化。大多數新產品的銷售和發行已經或即將采用數字化方式。
信不信由你,娛樂業因聲名狼藉的 Napster 采用這種計算范例而成為最早利用這種轉變的行業之一。最近由 South by Southwest(SXSW, Inc.)舉辦的研討會又用事實證明了娛樂業仍是先驅者。SXSW 是一家私人公司,位於得克薩斯州奧斯丁市。這家公司專門承辦娛樂界及相關媒體業人士的會議和節慶活動。該公司最近承辦的會議(2006 年 3 月 11 日至 14 日)討論了數碼創意和電影制作工作者在開發和制作時可利用的工具。其中一次小組討論專門探討了發展 XML 在娛樂業的應用:Looking for XML in All the Wrong Places。該公司的會議材料中寫到,"Everyone wants to do everything with XML."
電影業
電影業更是 XML 的熱情擁護者。電影業已經在包裝和發行數字化產品給影院和其他實體的進程中邁出了重要步伐,這其中就包括使用 XML。2005 年 7 月,致力於電影數字化的 Digital Cinema Initiatives(DCI)組織與活動影像和電視工程師協會(SocIEty of Motion Picture and Television Engineers,SMPTE)標准委員會的成員合作,發布了獲得主流電影制片公司認可的數字影院的系統規范。標准涵蓋了 XML 在包裝、文件格式、幀率和調速、編輯播放列表和包裝清單等方面的使用。
現在網絡上可以找到有很多面向電影業的新應用程序,例如 Apple 的獲獎軟件 Final Cut Pro,該軟件支持開放的、基於標准的 XML Interchange Format。在 Final Cut Pro 中,XML Interchange Format 說明了項目的各個方面。從剪輯、掛片及片段,剪接、轉場及效果,到調色設置和關鍵幀,Final Cut Pro 都為創作人員和編程人員提供了找到影片設計中的亮點的方法。在 Final Cut Pro 中使用 XML 為您提供了一種開放、透明的純文本格式,可通過多種多樣的工具來閱讀和操縱此格式。使用 XML Interchange Format 意味著 Final Cut Pro 用戶可以與支持 XML 的任何應用程序或系統(包括數據庫系統、網絡服務器、基於 Html 的 Web 創作工具和圖形化應用程序)共享關於項目的各種信息。還意味著基於 Java 的應用程序可以使用 XMLBeans 輕松地訪問這些數據。現在,開發人員可以創建與 Final Cut Pro 完全集成的基於 Java 的應用程序,也構建可節省大量時間和金錢的自定義後期制作管道,這都要歸功於 XMLBeans。
XMLBeans 與業內發行
當然,後期制作結束後,要考慮的最重要的事情就是發行,不發行就沒有利潤。通過 Amazon.com 等代理商,Internet 已經成為各種形式媒體產品(例如 DVD、各類音樂,當然還有圖書)發行的重要組成部分。很多人都知道 Amazon.com 是圖書經銷商,其實它也是娛樂業發行網絡的一員。由基於 XML 的協議組成的 Amazon Web 服務(Amazon Web Services,AWS)提供了對 Amazon 的技術平台和產品數據的直接訪問功能,從檢索一組產品的信息一直到將產品放入購物車,從而提高應用程序的性能,或添加更好的搜索功能。使用 AWS,您可以直接訪問 Amazon 的強大平台來啟用和增強您的應用程序。
Amazon.com 並非娛樂業的惟一 Internet 資源。Netflix.com 等實體也是發行網絡的組成部分。Netflix 使用 RSS(Really Simple Syndication)提要來提供對其內容的訪問。開發人員可以使用 RSS 提要創建各種有趣的新方法,來顯示 Netflix 提供的信息。當然,RSS 提要不僅限於 Netflix。您可以在許多站點(無論是新聞通訊社的站點還是內容提供商的站點)中找到這些支持 XML 的文檔。
可以想像,這種新途徑不但能帶來巨額利潤,而且幾乎不會引致與數字版權管理(Digital Rights Management,DRM)和盜版相關的任何問題。隨著新發行渠道的開辟,影視制作方(攝影棚、獨立制作室等)必須要能與有意購買產品的各方(包括影院、電視台、租賃商和付費點播提供商)進行互動。目前,業內有幾家成員正與電子商務組織探討,在使用 Internet 這種最新或許也是最節省成本的發行渠道發行影視作品時,怎樣才能做到既有利可圖又安全可靠。這種交互構成了與 DRM 相關的問題。
廣泛使用 XMLBeans 的關鍵在於建立整個娛樂業都接受的開放式 XML 標准。(有關娛樂業目前采用的 XML 標准的更多信息,請參閱 參考資料。)不過,如果您要進行娛樂節目創作並且擁有 XML 編碼標准(哪怕是您自己的 XML 模式),就可以利用 XMLBeans。只要使用 XML(無論標准與否),您就可以使用 XMLBeans 來提高創作效率,減少必須測試和維護的代碼,並且達到松散耦合和更為面向服務的目標。在 XML 標准補充到 DRM 領域中之後,您還可以利用 XMLBeans 來執行和使用標准。通過本文及其他文章中列出的 XMLBeans 的技術優勢,您可以看到一種應用 DRM 標准的一致方法,從而幫助您簡化部署及與合作伙伴、發行商和客戶交換版權數據的過程。DRM 領域內下一代標准是開放數字版權語言(Open Digital Rights Language,ODRL)。您可以從 ODRL 站點下載 XML 模式(請參閱 參考資料)。
若要從 ODRL 站點下載 XML 模式,請執行以下步驟:
下載並安裝 XMLBeans 和將在其中部署代碼的容器(有關執行這些操作的說明信息,請參閱 參考資料)。
在 ODRL 站點中檢索 Expression Language Schema 和 Data Dictionary Schema,然後將文件保存到您創建的容器中。
訪問 XMLBeans Web 站點,然後通過 XML 模式文件生成 XMLBeans。選擇保存 Java 源文件的選項。生成的 xmlTypes.jar 文件包含使用 ODRL 和 XMLBeans 所需的類。
使用 XMLBeans 還有很多其他優點。XMLBeans 可能是目前市場上最成熟的 XML 對象綁定技術,而且免費。總之,XMLBeans 絕對是您在使用 XML 時值得考慮的工具。隨著 XML 在娛樂業內的應用的快速發展,如果要使 XML 內容可為基於 Java 的應用程序所用,您會很容易地看到 XMLBeans 的優勢。
結束語
娛樂業在多種層面上為很多應用程序使用了 XML。由於 Java 編程語言是世界標准的面向對象的編程語言,而 XML 已成為娛樂業首選的數據格式,XMLBeans 將很快成為首選的 Java 綁定工具。XMLBeans 可創建用於 Java 開發的類,從而避免重復勞動,節約時間和成本。兩者結合在一起,為開發客戶和供應商應用程序提供了切實有效的方法。