最近去圖書館借了本《Java Web 服務編程指南》,讀了第一章,寫點自己的看法吧。
在還沒有接觸這本書的時候,我一直的以為WS就只是網絡上的web應用,這么說吧,就是我們經常上的網站??戳说谝徽轮?,我才發現之前的直觀的看法是錯誤的,Web Service并不只是一個網站。Web Service使我們能夠對網絡上的一個對象進行遠程調用,也就是Remote Procedure Calls,RPC。
我是這么理解的,一般性的網站我們也可以看成是廣義上的Web Service,但是Web Service并不僅局限行一般性的網站,他更加強大的功能在于提供一個公開的,標準化的接口,讓所有的客戶都能通過一服務注冊表,查找到此項服務,并對此項服務進行綁定??蛻艨梢酝ㄟ^這個公開的,標準化的API接口,進行遠程的服務調用。這些服務如,查詢天氣預報,查詢機場服務,在一個網絡商場進行下訂單操作,等等。只要服務商愿意公開他的Web服務,并在服務注冊表發布其服務,所有的潛在客戶都可以通過在服務注冊表中查找此服務,并得到關于此項服務的一些具體的描述,從而在服務商與客戶之間建立bind關系,遠程調用這些服務。
? 在Web服務中,我們可以看到有三個不同的角色。他們之間的交互關系如下圖所示。
??

從這個圖我們可以很清楚地看到三者之間的關系。服務提供者提供Web Service,服務消費者是使用此服務客戶,而位于最頂端的服務注冊表,則為兩者互相尋找對方提供了一個橋梁。服務提供者在服務注冊表上發布自己提供的服務,服務消費者從服務注冊表上查找自己需要的服務,找到后,就可以在服務消費者和服務提供者之間進行綁定,服務消費者就可以對服務提供者提供的服務進行訪問,遠程調用。這里需要注意的是,服務提供者提供的服務可能是一個非常復雜的服務,他這項服務可能還會調用其它服務提供者提供的服務,他將所有的這些信息整合處理,最終為服務消費者完成此項服務。當然這項服務也可以很簡單,簡單到服務消費者發起一個訪問,直接返回一個響應就可以了。
三個實體之間要進行通信,為了保證這些通信都能順利的進行,我們需要為這些通信定義規則,如果大家都遵守這些規則行事,這樣我們提供的服務就可以給任何消費者使用,消費者也就可以使用任何的服務提供者的服務了。這些規則有:
- Web Service Description Language, WSDL,Web服務描述語言,用來描述Web服務。
- Universal Description, Discovery, and Integration, UDDI,通用描述,發現,集成標準。這個是用來發布和查找Web服務的標準協議。
- Simple Object Access Protocol,SOAP,簡單對象訪問協議。用于綁定到Web服務的標準應用程序協議。
這三個協議可以簡單的和上圖的三個操作對應。
最終我們得到了基本Web服務棧:

上面的功能都需要下面的支持。從最底層我們可以看到,Web服務不一定是建立在HTTP之上的,我們可以使用多種基于TCP/IP的應用層協議來實現我們的web service。