Webservice原理
WebService原理
WebService是一種跨編程語言和跨操作系統平臺的遠程調用技術
所謂遠程調用,就是一臺計算機a上的一個程序可以調用到另外一臺計算機b上的一個對象的方法,譬如,銀聯提供給商場的pos刷卡系統(采用交互提問的方式來加深大家對此技術的理解)。
遠程調用技術有什么用呢?商場的POS機轉賬調用的轉賬方法的代碼是在銀行服務器上,還是在商場的pos機上呢?
什么情況下可能用到遠程調用技術呢?例如,amazon,天氣預報系統,淘寶網,校內網,百度等把自己的系統服務以webservice服務的形式暴露出來,讓第三方網站和程序可以調用這些服務功能,這樣擴展了自己系統的市場占有率,往大的概念上吹,就是所謂的SOA應用。
所謂跨編程語言和跨操作平臺,就是說服務端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然!跨操作系統平臺則是指服務端程序和客戶端程序可以在不同的操作系統上運行。
除了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協議的,兩者的關系就好比高速公路是基于普通公路改造的,在一條公路上加上隔離欄后就成了高速公路。
商店的服務員只要收到了錢就給客戶提供貨物,商店服務員不用關心客戶是什么性質的人,客戶也不用關心商店服務員是什么性質的人。同樣,WebService客戶端只要能使用HTTP協議把遵循某種格式的XML請求數據發送給WebService服務器,WebService服務器再通過HTTP協議返回遵循某種格式的XML結果數據就可以了,WebService客戶端與服務器端不用關心對方使用的是什么編程語言。
?HTTP協議和XML是被廣泛使用的通用技術,各種編程語言對HTTP協議和XML這兩種技術都提供了很好的支持,WebService客戶端與服務器端使用什么編程語言都可以完成SOAP的功能,所以,WebService很容易實現跨編程語言,跨編程語言自然也就跨了操作系統平臺
WSDL文件
? 好比我們去商店買東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。WebService客戶端要調用一個WebService服務,首先要有知道這個服務的地址在哪,以及這個服務里有什么方法可以調用,所以,WebService務器端首先要通過一個WSDL文件來說明自己家里有啥服務可以對外調用,服務是什么(服務中有哪些方法,方法接受的參數是什么,返回值是什么),服務的網絡地址用哪個url地址表示,服務通過什么方式來調用。
? WSDL(webservicedescription language)是基于XML格式的,它是WebService客戶端和服務器端都能理解的標準格式,其中描述的信息可以分為what,where,how等部分!?
WSDL文件保存在Web服務器上,通過一個url地址就可以訪問到它。客戶端要調用一個WebService服務之前,要知道該服務的WSDL文件的地址。WebService服務提供商可以通過兩種方式來暴露它的WSDL文件地址:
1.注冊到UDDI服務器,以便被人查找
2.直接告訴給客戶端調用者,例如,在自己網站給出信息或郵件告訴。
說明:
我們平常寫的程序都是在同一個程序中調用其他對象的方法,而webservice是怎樣實現調用其它計算機中的對象的方法的呢?
其基本原理是在客戶端程序的本地有一個代理對象,這個代理對象和遠程對象具有相同的方法聲明,這個代理程序不用我們自己編寫,工具可以幫我們生成??蛻舳顺绦蛘{用本地代理對象的方法時,代理對象會通過某種網絡傳送技術去聯系遠程的程序,遠程程序再調用代理對象請求的相應本地對象的方法,然后將方法執行的結果返回給客戶端代理程序。遠程調用技術就是要解決客戶端如何將請求信息傳送給遠程的程序,遠程的程序如何將結果回應給客戶端,并且其實現技術對開發人員來說是透明的,即不需要開發人員自己的考慮和實現這些細節。
1.WSDL(網絡服務描述語言,WebServices Description Language)是一門基于 XML 的語言,用于描述 Web Services 以及如何對它們進行訪問。
2.UDDI 是一種目錄服務,企業可以使用它對 Web services 進行注冊和搜索。
UDDI,英文為"Universal Description, Discovery and Integration",可譯為“通用描述、發現與集成服務”。