Web service 的認(rèn)知

一,解釋:
WebService是一種跨編程語言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)。

所謂跨編程語言和跨操作平臺(tái),就是說服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然!跨操作系統(tǒng)平臺(tái)則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運(yùn)行。
所謂遠(yuǎn)程調(diào)用,就是一臺(tái)計(jì)算機(jī)a上的一個(gè)程序可以調(diào)用到另外一臺(tái)計(jì)算機(jī)b上的一個(gè)對象的方法,譬如,銀聯(lián)提供給商場的pos刷卡系統(tǒng),商場的POS機(jī)轉(zhuǎn)賬調(diào)用的轉(zhuǎn)賬方法的代碼其實(shí)是跑在銀行服務(wù)器上。再比如,amazon,天氣預(yù)報(bào)系統(tǒng),淘寶網(wǎng),校內(nèi)網(wǎng),百度等把自己的系統(tǒng)服務(wù)以webservice服務(wù)的形式暴露出來,讓第三方網(wǎng)站和程序可以調(diào)用這些服務(wù)功能,這樣擴(kuò)展了自己系統(tǒng)的市場占有率,往大的概念上吹,就是所謂的SOA應(yīng)用。

WebService平臺(tái)需要一套協(xié)議來實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺(tái)都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,WebService平臺(tái)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同平臺(tái)、編程語言和組件模型中的不同類型系統(tǒng)。Web service平臺(tái)必須提供一種標(biāo)準(zhǔn)來描述Web service,讓客戶可以得到足夠的信息來調(diào)用這個(gè)Web service。最后,我們還必須有一種方法來對這個(gè)Web service進(jìn)行遠(yuǎn)程調(diào)用,這種方法實(shí)際是一種遠(yuǎn)程過程調(diào)用協(xié)議(RPC)。為了達(dá)到互操作性,這種RPC協(xié)議還必須與平臺(tái)和編程語言無關(guān)

二,WebService平臺(tái)技術(shù)
XML+XSD,SOAP和WSDL就是構(gòu)成WebService平臺(tái)的三大技術(shù)。
XML+XSD:
WebService采用HTTP協(xié)議傳輸數(shù)據(jù),采用XML格式封裝數(shù)據(jù)(即XML中說明調(diào)用遠(yuǎn)程服務(wù)對象的哪個(gè)方法,傳遞的參數(shù)是什么,以及服務(wù)對象的返回結(jié)果是什么)。XML是WebService平臺(tái)中表示數(shù)據(jù)的格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺(tái)無關(guān)的,又是廠商無關(guān)的。

SOAP:
WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時(shí),發(fā)送的請求內(nèi)容和結(jié)果內(nèi)容都采用XML格式封裝,并增加了一些特定的HTTP消息頭,以說明HTTP消息的內(nèi)容格式,這些特定的HTTP消息頭和XML內(nèi)容格式就是SOAP協(xié)議。SOAP提供了標(biāo)準(zhǔn)的RPC方法來調(diào)用Web Service。

SOAP協(xié)議 = HTTP協(xié)議 + XML數(shù)據(jù)格式

SOAP協(xié)議定義了SOAP消息的格式,SOAP協(xié)議是基于HTTP協(xié)議的,SOAP也是基于XML和XSD的,XML是SOAP的數(shù)據(jù)編碼方式。打個(gè)比喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護(hù)欄,SOAP就是普通公路經(jīng)過加隔離帶和防護(hù)欄改造過的高速公路。

WSDL:
WebService務(wù)器端首先要通過一個(gè)WSDL文件來說明自己家里有啥服務(wù)可以對外調(diào)用,服務(wù)是什么(服務(wù)中有哪些方法,方法接受的參數(shù)是什么,返回值是什么),服務(wù)的網(wǎng)絡(luò)地址用哪個(gè)url地址表示,服務(wù)通過什么方式來調(diào)用。

WSDL(Web Services Description Language)就是這樣一個(gè)基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。它是WebService客戶端和服務(wù)器端都能理解的標(biāo)準(zhǔn)格式。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個(gè)很大的好處。一些最新的開發(fā)工具既能根據(jù)你的Web service生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)WebService的代理類代碼。
WSDL文件保存在Web服務(wù)器上,通過一個(gè)url地址就可以訪問到它。客戶端要調(diào)用一個(gè)WebService服務(wù)之前,要知道該服務(wù)的WSDL文件的地址。WebService服務(wù)提供商可以通過兩種方式來暴露它的WSDL文件地址:1.注冊到UDDI服務(wù)器,以便被人查找;2.直接告訴給客戶端調(diào)用者。

三,WebService開發(fā)

WebService開發(fā)可以分為服務(wù)器端開發(fā)和客戶端開發(fā)兩個(gè)方面:

服務(wù)端開發(fā):把公司內(nèi)部系統(tǒng)的業(yè)務(wù)方法發(fā)布成WebService服務(wù),供遠(yuǎn)程合作單位和個(gè)人調(diào)用。(借助一些WebService框 架可以很輕松地把自己的業(yè)務(wù)對象發(fā)布成WebService服務(wù),Java方面的典型WebService框架包括:axis,xfire,cxf等,java ee服務(wù)器通常也支持發(fā)布WebService服務(wù),例如JBoss。)

客戶端開發(fā):調(diào)用別人發(fā)布的WebService服務(wù),大多數(shù)人從事的開發(fā)都屬于這個(gè)方面,例如,調(diào)用天氣預(yù)報(bào)WebService服務(wù)。

WebService的工作調(diào)用原理:對客戶端而言,我們給這各類WebService客戶端API傳遞wsdl文件的url地址,這些API就會(huì)創(chuàng)建出底層的代理類,我調(diào)用這些代理,就可以訪問到webservice服務(wù)。代理類把客戶端的方法調(diào)用變成soap格式的請求數(shù)據(jù)再通過HTTP協(xié)議發(fā)出去,并把接收到的soap數(shù)據(jù)變成返回值返回。對服務(wù)端而言,各類WebService框架的本質(zhì)就是一個(gè)大大的Servlet,當(dāng)遠(yuǎn)程調(diào)用客戶端給它通過http協(xié)議發(fā)送過來soap格式的請求數(shù)據(jù)時(shí),它分析這個(gè)數(shù)據(jù),就知道要調(diào)用哪個(gè)java類的哪個(gè)方法,于是去查找或創(chuàng)建這個(gè)對象,并調(diào)用其方法,再把方法返回的結(jié)果包裝成soap格式的數(shù)據(jù),通過http響應(yīng)消息回給客戶端。

目前:對web service的認(rèn)知就到這里了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、Java基礎(chǔ) 1.寫出下面代碼的執(zhí)行結(jié)果 2.寫出下面代碼的執(zhí)行結(jié)果 3.寫出下面代碼的執(zhí)行結(jié)果 (此題需寫出...
    joshul閱讀 543評論 0 1
  • 概覽 CXF frontends 是一組編程的API,被用來開發(fā)和發(fā)布webservice。CXF支持兩種類型的f...
    JohnShen閱讀 1,351評論 2 2
  • 大家或多或少都聽過WebService(Web服務(wù)),有一段時(shí)間很多計(jì)算機(jī)期刊、書籍和網(wǎng)站都大肆的提及和宣傳Web...
    含辭未吐氣若幽蘭閱讀 19,069評論 3 63
  • 又是全天寫文案的日子。昨天花半天寫完了三分之一,今天應(yīng)該可以把世界讀書日這個(gè)專題的文案全部搞定。自從進(jìn)了這個(gè)做移動(dòng)...
    WaiWaii閱讀 304評論 0 0
  • 朋友們,經(jīng)過一個(gè)夏天的減肥,你們都瘦了嗎?如果發(fā)現(xiàn)自己沒瘦也不要灰心啦,現(xiàn)在開始控制好飲食也不晚。 那么在這個(gè)大補(bǔ)...
    小易教瘦閱讀 512評論 0 2