天天看點

WebService原理

WebService原理

WebService是一種跨程式設計語言和跨作業系統平台的遠端調用技術

所謂遠端調用,就是一台計算機a上的一個程式能夠調用到另外一台計算機b上的一個對象的方法,譬如,銀聯提供給商場的pos刷卡系統(採用互動提問的方式來加深大家對此技術的了解)。

遠端調用技術有什麼用呢?商場的POS機轉賬調用的轉賬方法的代碼是在銀行server上,還是在商場的pos機上呢?

什麼情況下可能用到遠端調用技術呢?比如,amazon,天氣預報系統,淘寶網,校内網,百度等把自己的系統服務以webservice服務的形式暴露出來,讓第三方站點和程式能夠調用這些服務功能,這樣擴充了自己系統的市場占有率,往大的概念上吹,就是所謂的SOA應用。

所謂跨程式設計語言和跨操作平台,就是說服務端程式採用java編寫,client程式則能夠採用其它程式設計語言編寫,反之亦然!跨作業系統平台則是指服務端程式和client程式能夠在不同的作業系統上執行。

除了WebService外,常見的遠端調用技術還有RMI(Remote method invoke)和CORBA,因為WebService的跨平台和跨程式設計語言特點,是以比其它兩種技術應用更為廣泛,但性能略低。

WebService使用SOAP協定實作跨程式設計語言和跨作業系統平台

WebService採用HTTP協定資料傳輸,採用XML格式封裝資料(即XML中說明調用遠端服務對象的哪個方法,傳遞的參數是什麼,以及服務對象的傳回結果是什麼)。WebService通過HTTP協定發送請求和接收結果時,發送的請求内容和結果内容都採用XML格式封裝,并添加了一些特定的HTTP消息頭,以說明HTTP消息的内容格式,這些特定的HTTP消息頭和XML内容格式就是SOAP協定(simple object access protocol,簡單對象訪問協定) 。

SOAP協定= HTTP協定+ XML資料格式

SOAP協定是基于HTTP協定的,兩者的關系就好比快速公路是基于普通公路改造的,在一條公路上加上隔離欄後就成了快速公路。

商店的服務員僅僅要收到了錢就給客戶提供貨物,商店服務員不用關心客戶是什麼性質的人,客戶也不用關心商店服務員是什麼性質的人。相同,WebServiceclient僅僅要能使用HTTP協定把遵循某種格式的XML請求資料發送給WebServiceserver,WebServiceserver再通過HTTP協定傳回遵循某種格式的XML結果資料就能夠了,WebServiceclient與server端不用關心對方使用的是什麼程式設計語言。

HTTP協定和XML是被廣泛使用的通用技術,各種程式設計語言對HTTP協定和XML這兩種技術都提供了非常好的支援,WebServiceclient與server端使用什麼程式設計語言都能夠完畢SOAP的功能,是以,WebService非常easy實作跨程式設計語言,跨程式設計語言自然也就跨了作業系統平台

WSDL檔案

 好比我們去商店買東西,首先要知道商店裡有什麼東西可買,然後再來購買,商家的做法就是張貼廣告海報。WebServiceclient要調用一個WebService服務,首先要有知道這個服務的位址在哪,以及這個服務裡有什麼方法能夠調用,是以,WebService務器端首先要通過一個WSDL檔案來說明自己家裡有啥服務能夠對外調用,服務是什麼(服務中有哪些方法,方法接受的參數是什麼,傳回值是什麼),服務的網絡位址用哪個url位址表示,服務通過什麼方式來調用。

 WSDL(webservicedescription language)是基于XML格式的,它是WebServiceclient和server端都能了解的标準格式,當中描寫叙述的資訊能夠分為what,where,how等部分!

 WSDL檔案儲存在Webserver上,通過一個url位址就能夠訪問到它。client要調用一個WebService服務之前,要知道該服務的WSDL檔案的位址。WebService服務提供商能夠通過兩種方式來暴露它的WSDL檔案位址:

1.注冊到UDDIserver,以便被人查找

2.直接告訴給client調用者,比如,在自己站點給出資訊或郵件告訴。

WebService原理

說明:

 我們尋常寫的程式都是在同一個程式中調用其他對象的方法,而webservice是如何實作調用其他計算機中的對象的方法的呢?

其基本原理是在client程式的本地有一個代理對象,這個代理對象和遠端對象具有同樣的方法聲明,這個代理程式不用我們自己編寫,工具能夠幫我們生成。client程式調用本地代理對象的方法時,代理對象會通過某種網絡傳送技術去聯系遠端的程式,遠端程式再調用代理對象請求的對應本地對象的方法,然後将方法運作的結果傳回給client代理程式。遠端調用技術就是要解決client怎樣将請求資訊傳送給遠端的程式,遠端的程式怎樣将結果回應給client,而且事實上現技術對開發者來說是透明的,即不須要開發者自己的考慮和實作這些細節。

1.WSDL(網絡服務描寫叙述語言,WebServices Description Language)是一門基于 XML 的語言,用于描寫叙述 Web Services 以及怎樣對它們進行訪問。

2.UDDI 是一種檔案夾服務,企業能夠使用它對 Web services 進行注冊和搜尋。

UDDI,英文為"Universal Description, Discovery and Integration",可譯為“通用描寫叙述、發現與內建服務”。

繼續閱讀