我發現寫日志可以幫助自己整理思路,有些技術在一段時間不用后,如果以日志的形式寫出來,對于鞏固記憶是十分有效的。比如這個Web服務系列,為了盡量避免錯誤,我會重新查閱資料,在這個過程中又能學到新的知識。不過,Web服務涉及的面太廣了,而且新技術出現那么快,即使全部時間都用來研究它也不可能面面俱到,就像一本很厚很厚的書,經常翻翻反而會有意想不到的收獲。
上一篇 帖子里已經說過Web服務是做什么用的了,在這一篇里要說說Web服務的結構,也就是Web服務的協議棧。協議是各角色間用來溝通的基礎,之所以稱為棧,是由于這些協議是一層層壘起來的,下面一層是上面一層的基礎。就像OSI的七層網絡協議的關系。
現在要向你介紹一些概念了,它們是:XML、SOAP、WSDL、UDDI和BPEL4WS。對于XML相信大家都不會陌生,它是可擴展標記語言(eXtensible Markup Language)的縮寫,是Web服務各種協議的基礎;SOAP是簡單對象訪問協議(Simple Object Access Protocal)的縮寫,它主要用于在服務提供者和使用者之間傳送各種請求和應答數據;WSDL代表Web服務定義語言(Web Services Description Language),服務提供者使用這種語言發布自己的Web服務,供潛在的服務使用者使用;UDDI的意思是統一描述發現和集成(Universal Description, Discovery and Integration),UDDI項目由UDDI社區維護,服務提供者可以將自己的服務注冊到UDDI服務器中,服務使用者可以在服務器中瀏覽和查詢所需服務;BPEL4WS的意思是用于Web服務的業務流程執行語言(Business Process Execution Language for Web Services),它可以將多個Web服務組裝成完整的業務流程,體現了Web服務的真正強大之處(組裝)。
只這么簡單一說,你可能對其中有些概念并不明白,不過沒有關系,在以后的帖子里會對每個概念展開來說明。還要說明一點,列出的這些概念是實際構造和使用Web服務時使用最為廣泛的技術,但Web服務并不一定必須使用這些,除XML外,其他技術都有替代品,只是并不那么流行而已。下面我們就來看看Web服務的協議棧是個什么樣子的吧,如圖所示。
最底層是服務傳輸層,在圖中可以看到Web服務可以使用多種(OSI應用層)網絡協議進行消息傳遞,HTTP是使用最為廣泛的,因為HTTP的請求應答模式十分符合RPC類型調用,SMTP主要用于異步方式的調用,例如訂閱信息等等。
服務消息層的協議定義了消息的格式,在這一層里幾乎全部是以SOAP為協議的,至少我還沒見過使用其他協議的例子。SOAP的基礎是XML,也就是說,SOAP消息一定都是XML格式的。
服務描述層的協議用于對如何使用這個Web服務進行描述,描述信息一般包括使用到的數據類型、消息格式、方法名稱和參數(在WSDL里的稱呼有所不同)等等。WSDL也是以XML為基礎的。
服務發布和發現層協議是供注冊中心這個角色使用的,UDDI是目前使用最廣泛的注冊中心,圖中其他幾種方式也有應用。
服務組裝層用于組裝Web服務成為新的服務,這些被組裝起來的服務一般體現了一定的業務流程。其好處是各服務間耦合很小,改變起來十分容易。在這一層里,目前有不少協議正在競爭,BPEL4WS可以說具有一定的優勢吧。
待開發的協議與我們比較小,暫時不說了。圖中右邊三個縱向協議貫穿整個Web服務生命周期,它們是服務管理、服務質量和服務安全。因為將來很多的Web服務是要收費才可以使用的,和錢掛鉤的東西就必須能夠管理、保證質量和安全才行。一直以來,它們都是Web服務研究的難點(因為涉及到太多方面的利益),目前在功能方面Web服務已經做好了準備,如果能夠攻破這些非功能性的難題,我想Web服務距離大規模應用就不遠了。
圖1是比較常見的一種協議棧圖,實際上由于Web服務的使用方式多種多樣,協議棧圖也未必相同。例如w3.org上的是 這樣 ,它把XML也技術表現在圖上,體現了其在Web服務中的基礎地位。
總結一下Web服務的關鍵技術:XML、SOAP、WSDL、UDDI和BPEL4WS。
如果覺得這一篇有點抽象,那很正常,因為出現了新的概念。另外,我自己對Web服務的理解也是來源與書本,項目經驗不足,缺少對這個行業的宏觀認識,所以在寫出來的時候都要斟酌一二,拿不準的盡量不寫。沒關系,下面幾篇講的是具體技術,可以醒醒了:)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
