Web服務經常從它的組件技術的角度來進行描述。SOAP、UDDI、WSDL、XML以及HTTP各自組成了Web服務體系的一部分,它們都發揮了重要作用。讓我們看看XML技術對Web服務平台的貢獻。 標准化與其它Web服務技術相比,標准化是XML特色之一。XML提供了Web服務應用程序之間傳輸數據的標准格式。萬維網聯盟(W3C)管理XML標准並發布給全球的XML技術提供者,這就確保了XML產品的兼容性。
除了XML引擎和產品外還有XML文法(grammar)。每一個XML語法都是一種在某個特定問題領域進行數據格式化的標准方法。遵循並采用XML文法,你就可以使兩個應用程序間通信的數據格式標准化。
接口協議
程序員在對接口進行編程時經常將它稱之為協議。從編程的角度出發,接口在沒有暴露實現的情況下提供了編程結構。如果使用DTD(文件類型定義)和大綱(schema),那麼XML就有類似的特性。DTD和大綱都用來描述XML文檔的結構以及XML文檔的建立規則。可以用一個(或者多個)相關DTD(或者大綱)組織這樣的規則集合,我們稱之為XML文法。
XML文法不僅可以用於應用程序之間通信的標准化,還可以為開發者提供一個接口協議。換句話說,開發者在創建一個需要使用XML文檔結構的應用程序時,他不需要知道文檔是如何實現的(即實際的XML文檔)。DTD以及大綱描述了文檔的結構,它們可以作為開發的接口協議。對DTD的任何改動同時也改變了協議。
簡化
XML文檔的另一個重要方面就是它的簡化特性。我並沒有暗示XML的實現很簡單,而是說XML的概念和一般方法簡單。例如,XML是基於文本文檔的,這就簡化了打開XML文檔並查看其內容的過程。
用XML簡化Web服務模型很方便,這一點也很重要。Web服務天然就比單獨的XML要復雜。假設XML和CORBA同樣復雜,而且其它Web服務技術的復雜度相同,那麼Web服務技術就會變得非常笨重。但是通過使用簡單的搭積木的方法,如XML、SOAP等等,我們可以控制Web服務的復雜度在一個可以容忍的范圍之內,這樣用它創建的應用程序不至於難以控制。
封裝
封裝是我最喜歡的XML特性之一,在開發Web服務的時候尤其如此。從本質上來說,封裝指的是獲得一個或者多個數據塊(chunks of data)並把它們集合成一個簡單對象(而不是幾個獨立對象)的概念。封裝與集合(aggregation)類似,但是它們之間有一個重要的差別,即封裝一般意味著它沒有外部依賴性。
你可以創建帶有外部依賴性的XML文檔;但是在事務Web服務模型(transactional Web services model)中,利用封裝會顯得更加明智。通過設計包裝了依賴性的XML解決方案,你一般都可以消除事務處理過程(交易)中的問題。強迫在交易中定位外部數據並使其與XML數據一致的方法是有害的,尤其是在外部數據常常發生變動的情況下。如果把數據封裝到XML文法中去,就交易獲得正確的數據。