【摘要】 文章使用根據 XML 語法編寫的 XML 文檔,借鑒WSDL文檔的定義,討論了服務描述的消息格式,提出了一種新的服務描述模型。
【關鍵詞】 服務自描述;XML;三層xml模型
自描述是服務的基本特征。通過自描述,作為開放網絡構件的服務以編程語言無關的方式對外公布其調用接口和其他相關特征。通過服務描述,服務屏蔽了其實現細節,使服務提供者和服務消費者能以一種松耦合的方式協作。對服務最基本的描述是接口描述,服務消費者只有獲得接口描述才能向服務發送正確的調用信息;服務的通信協議、訪問地址、發送給服務的消息格式約定也是訪問服務之前必須獲得的信息。
XML Web 服務基礎結構是建立在通過基于 XML 的消息進行通信的基礎上,這些消息符合已發布的服務描述。服務描述使用 WSDL語言根據 XML 語法編寫的 XML 文檔,定義 XML Web 服務可以理解的消息格式。
Web Service技術使用wsdl文檔對所提供的服務進行描述,發布后由用戶識別并調用,完成服務的生命周期。Wsdl文檔根據xml語法編寫,同時也規定以基于 XML 的消息采用SOAP協議進行消息通信。
服務通過Web Service實現使用已成為發展趨勢,但是,目前仍有大部分服務尚未完成到Web Service的轉換。而之間的通信,卻必須進行。為統一服務的描述,本文基于xml技術,結合wsdl文檔描述機制提出三層xml服務統一描述模型來完成服務的描述。
一、三層xml服務統一描述模型架構及原理
根據服務描述的3C模型和web service技術的wsdl文檔描述服務的規范,三層xml服務統一描述模型提出的三層xml是指:功能層、表示層、傳輸層。模型如圖1所示。

在模型中,功能層XML 文件,對服務提供者所能提供的服務進行功能性描述,主要是提供的接口的描述,由此完成服務的功能的界定。同時描述了包括傳輸格式、類型定義,訪問該服務的綁定信息。
表示層XML文件,規定功能層描述的接口調用如何在網絡協議上表示的問題,支持四種表示方案,即Web服務的soap形式、xml表示、txt表示、二進制表示。通過對幾種傳輸形式的不同規定,達到傳輸內容的統一描述,傳送的信息和內容可屏蔽傳輸內容表示的異同,滿足不同的傳送條件和要求。即無論是二進制、txt文本還是XML文檔的傳輸格式,系統都可以通過對表示層的封裝完成發送與接收工作。表示層xml,根據具體的傳輸內容設定相應的表示Schema,調用某個服務接口時,首先將調用裝載成規定的xml格式,進一步裝載到傳輸層的數據域中傳輸。表示層若采用TXT格式,則可用一種正規式來描述,這樣的正規式也用一個xml文檔來描述。表示層若采用二進制格式,也可用xml描述,此時在傳輸時則涉及對象序列化與反序列化問題。
傳輸層XML文件對傳輸過程中所使用的傳輸協議進行信息描述,例如端口,位置,版本,URL等。
二、模型介紹
功能層的描述,對wsdl進行適當的改造,利用其類型系統和數據類型定義機制,改造其操作描述機制,使其能允許多參數描述,而不像web service的wsdl,僅允許操作最多有兩個參數。同時考慮非web服務的綁定問題,將wsdl中的技術綁定部分也進行改造,使其既能夠描述web服務的綁定信息,也能對非web服務的綁定信息進行定義。
元素詳細介紹如下:
Interfaces
Interfaces是一個SPAgent所能提供的所有服務的集合,即Agent,包含多個Interface;每一個Interface代表一個子服務,包含多個Operation;多個Operation共同實現一個子服務。Operation中Parameter是Operation在執行時所接收到的消息參數和所產生的消息參數,包括:參數名即消息名、消息類型(input、output)。
BindInof
BindInfo元素定義了兩種類型的服務代理,以應對不同形式的服務來源。當來源是標準web服務時,通過WSBindType元素具體指定對web服務的綁定信息,包括綁定協議類型,消息風格,編碼格式等。當來源是一般的服務時,則由CommonBindType元素指定服務的遠程訪問信息,包括訪問方式,可以是RMI、RPC等,訪問地址,訪問端口,遠程目標對象。
Types
是自定義的復雜類型。在具體的傳輸過程中,基本類型String、int等有可能不足以表達某些信息的類型,必須根據第三方服務所提供的信息進行類型的重定義。比如,對于“書”,不能直接將它定義為String類型,而有可能是“教學輔導書”、“小說”、“暢銷書”等類型。則,教學輔導書是一個需要自定義的復雜類型,小說、暢銷書等也是。
TransFormat
TransFormat是傳輸格式,是直接從第三方服務確定而得到的,有四種:xml、wsdl、txt、二進制形式。在序列化與反序列化的時候需要根據不同的傳輸格式作不同的工作。由它來決定對所接收到的前臺數據如何序列化與反序列化。
對于表示層,無論其采用哪種表示形式,總體上是采用xml描述的。
在表示層設計了元素Messages。
Messages
表示層的Messages元素包括了多個Message和CharSet屬性,每個Message根據功能層TransFormat的具體值的不同對功能層中的Message的傳輸內容進行不同的傳輸格式約束,一個Message包含一個TransContent。它是序列化與反序列化工作的基礎。Charset屬性規定了數據表示所使用的字符集。
三、實例應用
服務描述機制必須考慮服務提供商提供服務的異構性,以達到生成工作的通用性;同時,需考慮遠程訪問服務或代理的綁定信息;并且對服務提供商和服務代理之間傳輸內容的格式也需考慮。此外,服務提供商和服務代理之間的通信協議也必須考慮多種情況,以確保不同的終端用戶在不同環境下同時執行同一服務提供商提供的業務。利用三層xml服務統一描述模型,可解決這些問題。
首先,功能層通過Interfaces、Operation、元素描述了服務的功能,又通過BindInfo元素定義了將要生成的服務代理的服務來源的類型,和針對不同類型的不同的綁定信息。無論服務提供商提供哪種形式的服務,都需完成功能層xml文檔的描述。
而對于服務提供商和服務代理之間傳輸內容的格式,則通過表示層Message元素進行傳輸約定。從前述可知,表示層支持四種表示方案,都統一于表示層的xml描述中。
最后,對于通信問題,三層xml服務統一描述模型的傳輸層支持現有可能的幾種傳輸協議,系統可根據此封裝不同的傳輸代理,滿足使用各種傳輸協議的服務提供商。
針對現存多種形式的服務而描述不統一的現狀,文章在服務描述元模型3C模型的基礎上,結合了web service技術使用wsdl描述web服務的優勢,對相關部分進行改造,提出三層xml服務統一描述模型,完成了異構服務的統一描述。并詳細介紹了三層每層的元素設置、功能。最后,以實際項目為應用平臺,驗證了模型的正確性和可行性。
參考文獻
[1]Hiroshi Maruyama,Kent Tamura,Naohiko Uramoto.XML and Java Developing Web Applications[M].Addison-Wesley,August 1999
[2]和應民,葉子平.利用Java技術實現基于XML的Web服務.成都信息工程學院學報
[3]王法玉,薛彥兵.用基于XML的Web Service技術實現資源共享.天津理工大學學報
[4]Ed Tittel,Norbert Mikula,Ramesh Chandak.XML For DUMMIES [M].IDG BOOKS Worldwide,Inc,1999.
[5]宋曉梁,劉東生,許滿武.中間件及其在三層客戶機/服務器模型中的應用[N].計算機應用