當前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
使用WSDL部署Web服務,第1部分:Web服務和WSDL簡介
使用WSDL部署Web服務,第1部分:Web服務和WSDL簡介
Bilal Siddiqui(wap_monster@yahoo.com)
CEO,WAP
Monster
2001 年 11 月
在“使用 WSDL 部署 Web 服務”系列中,Bilal 將研究創(chuàng)建、部署和發(fā)布 Web 服務的所有主要技術方面 — 從
Web 服務描述語言(WSDL),到簡單對象訪問協(xié)議(SOAP)以及通用描述、發(fā)現(xiàn)和集成(UDDI)注冊中心。第 1 部分集中講述了 WSDL
創(chuàng)建:您將學習如何手工創(chuàng)建 WSDL 接口,然后將您的成果與 WSDL 編寫工具的輸出作比較。
可互操作的基于 Web
分布式應用程序的思想并非新近出現(xiàn)。僅舉一例,電子數(shù)據(jù)交換(EDI)市場需求早在 B2B 在線電子商務獲得任何有意義的實現(xiàn)之前就存在了 — 并且隨著 B2B
電子市場的普及,互操作性已經(jīng)成為最迫切的 EDI 需求。
以任何在線電子市場為例。存在著許多企業(yè),各自提供特有的“服務( services)”(讓我們稱之為“Web 服務(Web services)”)。在當今的電子商務中,尚不存在一種機制,使一個業(yè)務能自動發(fā)現(xiàn)其預期伙伴提供的服務。所謂的 下一代 .com 還是提供這種自動的發(fā)現(xiàn)機制。
什么是 WSDL?
這種新的 .com
需要一種解決方案來描述它所提供的服務(Web
服務)。具體而言,這意味著您需要一種格式或某種類型的語法,使您可以通過使用它們來描述下列問題的答案:
您的在線業(yè)務提供什么服務?
您如何調用業(yè)務服務?
當用戶調用您的業(yè)務服務時,該業(yè)務服務需要他/她提供什么信息?
用戶將如何提供這些必需信息?
服務將以什么格式發(fā)送返回給用戶的信息?
很幸運,WSDL 提供了完成所有這些作業(yè)的機制。
WSDL 和 SOAP
為更好理解 WSDL 是如何工作的,我將首先描述
SOAP 和 HTTP 是如何使用 WSDL 工作的。WSDL 的用途是“描述”您的 Web 服務。業(yè)務之間將通過交換 WSDL
文件來理解對方的服務。一旦知道您伙伴的服務并希望調用它們,SOAP 就派上用場了??梢詫⒎湛醋魇峭ㄟ^ SOAP 訪問的對象。
最有可能的情況是,您將通過因特網(wǎng)或電子郵件與潛在伙伴通信。當然,因特網(wǎng)使用 HTTP 而電子郵件以 SMTP 方式工作,這使得 HTTP 和 SMTP 成為作為 SOAP 的“傳輸服務提供者”的有利候選人。
WSDL 編寫
現(xiàn)在,我將講述為 Web 服務編寫 WSDL
的過程。目的是公開現(xiàn)有的 Web 服務。您所處的情況也許就是下列情況之一:
您有一個現(xiàn)存的服務(例如,一個網(wǎng)站),并希望表示它的功能性。
您有一個
WSDL,并且希望依照已經(jīng)決定表示的功能性來實現(xiàn) Web 服務器端的邏輯。(有些人也許會認為這是一個不可能的方案,但是 UDDI
的指紋概念使它變得極為可能;我將在本系列的第四部分討論 UDDI)。
您正在從零開始,并且既無網(wǎng)站又無 WSDL 界面。
本文中所涵蓋的信息適用于這些可能性中的任意一種或全部。
WSDL 編寫的四個步驟
我將把 WSDL
編寫分成四個簡單步驟。遵循每個步驟,您的 Web 服務將準備就緒用于部署。
步驟
1:服務接口
您將構建一個移動電話銷售公司的服務接口作為樣本項目(我將這個服務稱為
MobilePhoneService)。該公司銷售不同型號的移動電話,所以公司 Web 服務的后端數(shù)據(jù)存儲庫中將包含一個具有兩列(model number 和
price)的表格。(為了將焦點保持在 WSDL 本身,我保持該表格的簡單性)。有兩個關于要使用 WSDL 表示的服務的方法:
getListOfModels ()
getPrice (modelNumber)
GetListOfModels 方法提供了一個字符串數(shù)組,其中每個字符串表示一種移動電話的型號。 GetPrice 獲得型號,然后返回它的價格。WSDL 將這些方法作為操作調用。現(xiàn)在將開始構建“WSDL 接口文件(WSDL interface file)”。
每個 WSDL 文件的根元素都是
關于名稱空間只要注意一點:WSDL 廣泛地使用名稱空間這一概念。我鼓勵您到 W3C 的官方網(wǎng)站去學習關于名稱空間的更多知識(請參閱參考資料)。WSDL 是這種思想的一種實現(xiàn),因為名稱空間提供了無限的靈活性,而這恰恰是用于電子數(shù)據(jù)交換的可移植格式所需要的。
必須為每個服務提供一個名稱。在本例中,僅有一個服務(因此只有一個
在每個服務內可以有幾個方法、或者 operation,WSDL 通過
此時,WSDL 文件看上去象清單 1。
清單 1:定義操作
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.mobilephoneservice.com/MobilePhoneService"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
.......
.......
.......
.......
步驟
2:指定參數(shù)
定義好操作(或方法)以后,現(xiàn)在需要指定將向它們發(fā)送和從它們返回的參數(shù)。在 WSDL
術語中,所有參數(shù)稱為“消息”。認為您是在遞送消息而結果得到返回的消息是有用的。方法調用是這樣一種操作:它準備返回“消息”來響應進入的消息。
請回憶,在第一步驟中有兩個操作要表示。第一個操作 getListOfModels
不必獲得任何參數(shù)并且返回一個字符串數(shù)組,其中每個字符串表示移動電話的型號。因此,必須定義一個包含字符串數(shù)組的
看看清單 2 中的各種
我已包括了
要回答為什么,讓我們以 getListOfModels 操作返回的字符串數(shù)組為例。WSDL 使用 XML 模式定義(XSD)定義的一些原始數(shù)據(jù)類型(諸如 int、float、long、short、byte、string、Boolean 等等),并允許您直接使用它們,或者以這些原始數(shù)據(jù)類型構建復雜數(shù)據(jù)類型后,在消息中使用它們。這就是為什么當引用復雜數(shù)據(jù)類型時,您需要定義自己的名稱空間。在本例中,需要為 array of strings 構建一個復雜數(shù)據(jù)類型。
現(xiàn)在來看怎么做問題,您將使用 XSD 創(chuàng)建自己的名稱空間。為實現(xiàn)這個目的,我在
在清單 2 中,我以類似的方式定義了另外兩個消息 PhoneModel 和 PhoneModelPrice。這兩個消息只使用了 xsd 名稱空間中的原始數(shù)據(jù)類型 string,因此您不必為使用它們而定義任何更復雜的數(shù)據(jù)類型。
您也許已經(jīng)注意到當創(chuàng)建
至今,清單 2 準確地限定了目前的討論的范圍。
步驟
3:消息傳遞和傳輸
我以一種抽象方式定義了操作和消息,而不考慮實現(xiàn)的細節(jié)。實際上,WSDL 的任務是定義或描述 Web
服務,然后提供一個對外部框架的引用來定義 WSDL 用戶將如何實現(xiàn)這些服務??梢詫⑦@個框架當作 WSDL
抽象定義和它們的實現(xiàn)之間的“綁定(binding)”。
當前,最流行的綁定(binding)技術是使用簡單對象訪問協(xié)議(SOAP)。WSDL 將指定能夠訪問 Web 服務實際實現(xiàn)的 SOAP 服務器,并且從那時起 SOAP 的整個任務就是將用戶從 WSDL 文件帶到它的實現(xiàn)。SOAP 是本系列文章中下一部分的主題,所以我將暫時避免討論 SOAP 細節(jié)而繼續(xù)集中講述 WSDL 編寫。
WSDL 編寫的第三個步驟是描述將 SOAP 與 WSDL 文件綁定到一起的過程。您將把
WSDL binding 元素包含您將用于綁定用途的外部技術的聲明。因為正在使用 SOAP,所以這里將使用 SOAP 的名稱空間。WSDL 術語中,對外部名稱空間的使用稱為 extensibility 元素。
在清單 3 中,您將看見一個空的
SOAP 客戶機將從 WSDL 文件中讀取 SOAP 結構并與另一端的 SOAP 服務器協(xié)調,所以必須特別關注 interoperability。我打算在本系列文章的第三部分詳細講述該問題。
在空的
請回憶步驟 2 中,getListOfModels 操作只有輸出而無任何輸入。因此,必須為該操作提供一個
您已幾乎要完成步驟 3 了。只要將下一個操作復制到這個操作的后面,您將完成清單 3。
步驟 4:概括
您已經(jīng)生成了一個完整描述服務 interface 的 WSDL
文件?,F(xiàn)在,WSDL 需要一個附加步驟來創(chuàng)建該 WSDL 文件的概要。WSDL 將該文件稱為 implementation
文件,在本系列文章的第四部分中,當您在 UDDI 注冊中心發(fā)布 Web 服務時,會使用它。請看清單 4 — 這個 WSDL
實現(xiàn)文件。它的主要特性如下:
除了清單 4(實現(xiàn)文件)引用不同的 targetNamespace 去引用實現(xiàn)文件以外,
有一個 元素,該元素引用清單 3 的接口文件(文件名
MobilePhoneService-interface.wsdl)和它的名稱空間。
有一個
將 IBM 的 Web Services ToolKit(WSTK)用于 WSDL
編寫
現(xiàn)在,Web 服務已經(jīng)完全就緒用于部署。我已經(jīng)展示了如何手工創(chuàng)建這些文件(使用象 emacs
這樣的簡單文本編輯器)??梢允褂弥T如 IBM 的 WSTK(請參閱參考資料以獲得該工具箱以及本文提到的其它參考資料的鏈接)之類的 Web
服務編寫工具來生成相同的這些文件。
WSTK 可以使用向導幫助過程來生成這些文件。用戶可以生成與我在以上教程中演示的同樣兩種方法的 WSDL 文件,并將 WSTK 文件和清單 3 和 4 中的 WSDL 文件作比較。
您將注意到下列差異:
WSTK 依照邏輯規(guī)則創(chuàng)建了所有名稱屬性;在本示例中,我使用了自己視為方便的名稱。
WSTK
為每個操作至少生成一個 input 標記,即使該操作不必獲得任何輸入。listAllPhoneModels 操作沒有任何 input 元素,但是如果使用
WSTK 生成相同文件,它將因為包含這個方法的一個空 input 元素。
WSTK 產(chǎn)生了除已生成的兩個文件以外的第三個文件。這第三個文件是
SOAP 引擎用于服務部署的 SOAP 部署描述符。我將在本系列文章中討論服務部署。
在這部分中,我演示了手工進行 WSDL 編寫以創(chuàng)建接口和實現(xiàn)文件,并與 IBM 的 Web Services ToolKit 生成的文件作了比較。在本系列的下一部分中,我將討論在 SOAP 服務器上部署這個 WSDL 服務。
參考資料
- 請訪問 W3C
的官方網(wǎng)站以查找 Web 服務描述語言(WSDL)1.1 規(guī)范以及所有其它 XML 相關的官方規(guī)范,包括
XSD 和名稱空間的技術文檔。
- 請訪問 IBM 的 alphaWorks 網(wǎng)站以下載本文中使用的 Web Services
ToolKit(WSTK)。
- 請從 Apache.org 下載 Apache 的 SOAP 工具箱。
- Building Web Services:Making Sense of XML, SOAP, WSDL, and
UDDI 是一本新書,其作者是 Steve Graham、Simeon Simeonov、Toufic
Boubez、Glen Daniels、Doug Davis、Yuichi Nakamura 和 Ryo Neyama — 一群來自 Web
服務技術領域各處的人。(Sams 出版,2001)。
- 請閱讀這篇 developerWorks 上的文章,它描述了如何將 WSDL 元素映射到 UDDI
注冊中心。
- 請訪問 WebServicesArchitect.com 以獲得關于 Web 服務的好文章。
關于作者
Bilal Siddiqui 是一位 XML
顧問。自從 1995 年畢業(yè)于拉合爾工程技術大學(University of Engineering and
Technology,Lahore)電子工程專業(yè)以后,他就開始為工業(yè)控制系統(tǒng)設計各種軟件解決方案。稍后,他致力于 XML 方面并使用他在 C++
編程中取得的經(jīng)驗來構建基于 Web 和 WAP 的 XML 處理工具、服務器端解析方案和服務應用程序??梢酝ㄟ^電子郵件(wap_monster@yahoo.com)向 Bilal
索取本文中包含的代碼文件的工作副本。
瀏覽:使用WSDL部署Web服務,第2部分:簡單對象訪問協(xié)議(SOAP)
- 1石家莊泛普OA辦公軟件的用戶界面定制
- 2石家莊OA信息化的“三四五六七”(by AMT 石家莊OA信息化小組)
- 3泛普軟件石家莊OA信息化系統(tǒng)集成方案
- 4泛普軟件石家莊OA信息化系統(tǒng)建設原則
- 5破解OA項目實施難題:建立項目實施與交付體系
- 6拐點之年:中國管理軟件行業(yè)2008大盤點
- 7架構Web Service:什么是Web服務?
- 821世紀企業(yè)文化發(fā)展的六大趨勢
- 9架構Web Service:實戰(zhàn)Web服務
- 10兩款常用的測試bug管理與壓力測試軟件
- 11IBM為Web服務安全 發(fā)布一系列有爭議的API
- 12端到端的挑戰(zhàn)者
- 13.NET的數(shù)據(jù)傳輸之道
- 14SOAP技術與B2B應用集成--SOAP的消息結構與數(shù)據(jù)的組織方法
- 15OA軟件其他輔助管理與車輛管理介紹
- 16理解Web服務互操作性
- 17由知識螺旋看知識創(chuàng)新(BY AMT 夏敬華 編譯)
- 18Borland加快Web服務的分發(fā)速度
- 19源天軟件獲2008年度中國IT服務創(chuàng)新獎
- 20Building an ASP.NET Web Service
- 21協(xié)同辦公OA軟件的常用資料和規(guī)章制度
- 22關于模型的簡單介紹!
- 23柴油機故障診斷專家系統(tǒng)知識庫設計
- 24利用辦公自動化系統(tǒng)進行石家莊OA信息化
- 25InterOP Stack新一代平臺互操作技術:InterOP Stack技術應用前瞻
- 26微軟展示新版互聯(lián)網(wǎng)服務MSN 8.0
- 27對某集團公司協(xié)同辦公系統(tǒng)未來3-5年的IT規(guī)劃建設藍圖
- 28IT項目實施過程中如何規(guī)避虛擬化技術風險
- 29ColdFusion MX增加對J2EE、XML和Web服務的兼容
- 30架構Web Service:交互界面,Web服務定義的核心
成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓