最近去圖書館借了本《Java Web 服務(wù)編程指南》,讀了第一章,寫點(diǎn)自己的看法吧。
在還沒有接觸這本書的時(shí)候,我一直的以為WS就只是網(wǎng)絡(luò)上的web應(yīng)用,這么說吧,就是我們經(jīng)常上的網(wǎng)站。看了第一章之后,我才發(fā)現(xiàn)之前的直觀的看法是錯(cuò)誤的,Web Service并不只是一個(gè)網(wǎng)站。Web Service使我們能夠?qū)W(wǎng)絡(luò)上的一個(gè)對象進(jìn)行遠(yuǎn)程調(diào)用,也就是Remote Procedure Calls,RPC。
我是這么理解的,一般性的網(wǎng)站我們也可以看成是廣義上的Web Service,但是Web Service并不僅局限行一般性的網(wǎng)站,他更加強(qiáng)大的功能在于提供一個(gè)公開的,標(biāo)準(zhǔn)化的接口,讓所有的客戶都能通過一服務(wù)注冊表,查找到此項(xiàng)服務(wù),并對此項(xiàng)服務(wù)進(jìn)行綁定。客戶可以通過這個(gè)公開的,標(biāo)準(zhǔn)化的API接口,進(jìn)行遠(yuǎn)程的服務(wù)調(diào)用。這些服務(wù)如,查詢天氣預(yù)報(bào),查詢機(jī)場服務(wù),在一個(gè)網(wǎng)絡(luò)商場進(jìn)行下訂單操作,等等。只要服務(wù)商愿意公開他的Web服務(wù),并在服務(wù)注冊表發(fā)布其服務(wù),所有的潛在客戶都可以通過在服務(wù)注冊表中查找此服務(wù),并得到關(guān)于此項(xiàng)服務(wù)的一些具體的描述,從而在服務(wù)商與客戶之間建立bind關(guān)系,遠(yuǎn)程調(diào)用這些服務(wù)。
? 在Web服務(wù)中,我們可以看到有三個(gè)不同的角色。他們之間的交互關(guān)系如下圖所示。
??

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

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