1.什么是webservice?
webservice是一種跨編程語言和跨操作系統平台的遠程調用技術。
所謂的遠程調用,就是一台計算機a上的一個程序可以調用另一台計算機b上的一個對象的方法,比如:銀聯提供給商場的pos機刷卡系統。
什么情況下可能用到遠程調用技術呢?
例如,amazon,天氣預報系統,淘寶網,校內網,百度等把自己的系統服務以webservice服務的形式暴露出來,讓第三方網站和程序可以調用這些服務功能,這樣擴展了自己系統的市場占有率,往大的概念上吹,就是所謂的SOA(面向服務體系)應用。
所謂的跨編程語言就是服務端程序采用java語言編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然。
所謂的跨操作系統平台就是服務端程序和客戶端程序可以在不同的操作系統平台上運行。
除了webservice外,常用的遠程調用技術還有RMI(Remote Method Invoke)和CORBA,由於webservice的跨編程語言和跨平台的特點,因此比其他兩種技術應用更為廣泛,但性能略低。
2.webservice的調用原理
webservie采用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很容易實現跨編程語言,跨編程語言自然也就跨了操作系統平台。
3.webservice調用之前的工作
WSDL文件 好比我們去商店買東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。
WebService客戶端要調用一個WebService服務,首先要有知道這個服務的地址在哪,以及這個服務里有什么方法可以調用,所以,WebService務器端首先要通過一個WSDL文件來說明自己家里有啥服務可以對外調用,服務是什么(服務中有哪些方法,方法接受的參數是什么,返回值是什么),服務的網絡地址用哪個url地址表示,服務通過什么方式來調用。
WSDL(webservice description language)是基於XML格式的,它是WebService客戶端和服務器端都能理解的標准格式,其中描述的信息可以分為what,where,how等部分! WSDL文件保存在Web服務器上,通過一個url地址就可以訪問到它。
客戶端要調用一個WebService服務之前,要知道該服務的WSDL文件的地址。WebService服務提供商可以通過兩種方式來暴露它的WSDL文件地址: 注冊到UDDI服務器,以便被人查找 直接告訴給客戶端調用者,例如,在自己網站給出信息或郵件告訴。
4.webservice的工作過程

5.webservice的開發應用
WebService開發可以分為服務器端開發和客戶端開發兩個方面: 把公司內部系統的業務方法發布成WebService服務,供遠程合作單位和個人調用。(借助一些WebService框架可以很輕松地把自己的業務對象發布成WebService服務,Java方面的典型WebService框架包括:axis,xfire,cxf等,java ee服務器通常也支持發布WebService服務,例如JBoss。這框架應用不是學習的重點,看看相關的技術手冊都很輕松地掌握,關鍵還是要了解WebService的工作原理。)
6.WebService框架的底層實現原理
技術實現原理: 各類WebService框架的本質就是一個大大的Servlet,當遠程調用客戶端給它通過http協議發送過來soap格式的請求數據時,它分析這個數據,就知道要調用哪個java類的哪個方法,於是去查找或創建這個對象,並調用其方法,再把方法返回的結果包裝成soap格式的數據,通過http響應消息回給客戶端。
(本文是從網上摘抄的,供大家學習參考)
