我發現寫日誌可以幫助自己整理思路,有些技術在一段時間不用後,如果以日誌的形式寫出來,對於鞏固記憶是十分有效的。比如這個web服務系列,為了盡量避免錯誤,我會重新查閱資料,在這個過程中又能學到新的知識。不過,web服務涉及的面太廣了,而且新技術出現那麼快,即使全部時間都用來研究它也不可能面面俱到,就像一本很厚很厚的書,經常翻翻反而會有意想不到的收穫。
現在要向你介紹一些概念了,它們是:xml、soap、wsdl、uddi和bpel4ws。對於xml相信大家都不會陌生,它是可擴充套件標記語言(extensible markup language)的縮寫,是web服務各種協議的基礎;soap是簡單物件訪問協議(****** 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服務的協議棧是個什麼樣子的吧,如圖所示。
圖1 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服務的理解也是**與書本,專案經驗不足,缺少對這個行業的巨集觀認識,所以在寫出來的時候都要斟酌一二,拿不準的盡量不寫。沒關係,下面幾篇講的是具體技術,可以醒醒了:)
WS Web服務系列(二) Web服務的結構
我發現寫日誌可以幫助自己整理思路,有些技術在一段時間不用後,如果以日誌的形式寫出來,對於鞏固記憶是十分有效的。比如這個web服務系列,為了盡量避免錯誤,我會重新查閱資料,在這個過程中又能學到新的知識。不過,web服務涉及的面太廣了,而且新技術出現那麼快,即使全部時間都用來研究它也不可能面面俱到,就像...
Nginx服務系列 靜態資源web服務
sendfile on off 預設off http server location if in location tcp nopush on off 預設off http server location sendfile開啟的情況下,提高網路包的傳輸效率 tcp nodelay on off 預設...
Nginx服務系列 靜態資源web服務
sendfile on off 預設off http server location if in location tcp nopush on off 預設off http server location sendfile開啟的情況下,提高網路包的傳輸效率 tcp nodelay on off 預設...