溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WebService的示例分析

發(fā)布時間:2021-09-10 13:45:18 來源:億速云 閱讀:98 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“WebService的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“WebService的示例分析”這篇文章吧。

一、序言

  大家或多或少都聽過 WebService(Web服務(wù)),有一段時間很多計算機(jī)期刊、書籍和網(wǎng)站都大肆的提及和宣傳WebService技術(shù),其中不乏很多吹噓和做廣告的成 分。但是不得不承認(rèn)的是WebService真的是一門新興和有前途的技術(shù),那么WebService到底是什么?何時應(yīng)該用?

  當(dāng)前的應(yīng)用程序開發(fā)逐步的呈現(xiàn)了兩種迥然不同的傾向:一種是基于瀏覽器的瘦客戶端應(yīng)用程序,一種是基于瀏覽器的富客戶端應(yīng)用程序(RIA),當(dāng)然后一種技術(shù)相對來說更加的時髦一些(如現(xiàn)在很流行的Html5技術(shù)),這里主要講前者。

  基于瀏覽器的瘦客戶端應(yīng)用程序并不是 因為瘦客戶能夠提供更好的用戶界面,而是因為它能夠避免花在桌面應(yīng)用程序發(fā)布上的高成本。發(fā)布桌面應(yīng)用程序成本很高,一半是因為應(yīng)用程序安裝和配置的問 題,另一半是因為客戶和服務(wù)器之間通信的問題。傳統(tǒng)的Windows富客戶應(yīng)用程序使用DCOM來與服務(wù)器進(jìn)行通信和調(diào)用遠(yuǎn)程對象。配置好DCOM使其在 一個大型的網(wǎng)絡(luò)中正常工作將是一個極富挑戰(zhàn)性的工作,同時也是許多IT工程師的噩夢。事實上,許多IT工程師寧愿忍受瀏覽器所帶來的功能限制,也不愿在局 域網(wǎng)上去運(yùn)行一個DCOM。關(guān)于客戶端與服務(wù)器的通信問題,一個完美的解決方法是使用HTTP協(xié)議來通信。這是因為任何運(yùn)行Web瀏覽器的機(jī)器都在使用 HTTP協(xié)議。同時,當(dāng)前許多防火墻也配置為只允許HTTP連接。許多商用程序還面臨另一個問題,那就是與其他程序的互操作性。如果所有的應(yīng)用程序都是使 用COM或.NET語言寫的,并且都運(yùn)行在Windows平臺上,那就天下太平了。然而,事實上大多數(shù)商業(yè)數(shù)據(jù)仍然在大型主機(jī)上以非關(guān)系文件(VSAM) 的形式存放,并由COBOL語言編寫的大型機(jī)程序訪問。而且,目前還有很多商用程序繼續(xù)在使用C++、Java、Visual Basic和其他各種各樣 的語言編寫?,F(xiàn)在,除了最簡單的程序之外,所有的應(yīng)用程序都需要與運(yùn)行在其他異構(gòu)平臺上的應(yīng)用程序集成并進(jìn)行數(shù)據(jù)交換。這樣的任務(wù)通常都是由特殊的方法, 如文件傳輸和分析,消息隊列,還有僅適用于某些情況的的API,如IBM的高級程序到程序交流(APPC)等來完成的。在以前,沒有一個應(yīng)用程序通信標(biāo) 準(zhǔn),是獨立于平臺、組建模型和編程語言的。只有通過Web Service,客戶端和服務(wù)器才能夠自由的用HTTP進(jìn)行通信,不論兩個程序的平臺和編程語言是什么。

二、WebService到底是什么

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

   所謂跨編程語言和跨操作平臺,就是說服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然!跨操作系統(tǒng)平臺則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運(yùn)行。

    所謂遠(yuǎn)程調(diào)用,就是一臺計算機(jī)a上 的一個程序可以調(diào)用到另外一臺計算機(jī)b上的一個對象的方法,譬如,銀聯(lián)提供給商場的pos刷卡系統(tǒng),商場的POS機(jī)轉(zhuǎn)賬調(diào)用的轉(zhuǎn)賬方法的代碼其實是跑在銀 行服務(wù)器上。再比如,amazon,天氣預(yù)報系統(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,從表面上看,WebService就是一個應(yīng)用程序向外界暴露出一個能通過Web進(jìn)行調(diào)用的API,也就是說能用編程的方法通過 Web來調(diào)用這個應(yīng)用程序。我們把調(diào)用這個WebService的應(yīng)用程序叫做客戶端,而把提供這個WebService的應(yīng)用程序叫做服務(wù)端。從深層次 看,WebService是建立可互操作的分布式應(yīng)用程序的新平臺,是一個平臺,是一套標(biāo)準(zhǔn)。它定義了應(yīng)用程序如何在Web上實現(xiàn)互操作性,你可以用任何 你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標(biāo)準(zhǔn)對這些服務(wù)進(jìn)行查詢和訪問。 

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

三、WebService平臺技術(shù)

  XML+XSD,SOAP和WSDL就是構(gòu)成WebService平臺的三大技術(shù)。

3.1、XML+XSD

  WebService采用HTTP協(xié)議傳輸數(shù)據(jù),采用XML格式封裝數(shù)據(jù)(即XML中說明調(diào)用遠(yuǎn)程服務(wù)對象的哪個方法,傳遞的參數(shù)是什么,以及服務(wù)對象的 返回結(jié)果是什么)。XML是WebService平臺中表示數(shù)據(jù)的格式。除了易于建立和易于分析外,XML主要的優(yōu)點在于它既是平臺無關(guān)的,又是廠商無關(guān) 的。無關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件廠商是不會選擇一個由競爭對手所發(fā)明的技術(shù)的。 

  XML解決了數(shù)據(jù)表示的問題,但它沒有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,更沒有說怎么去擴(kuò)展這套數(shù)據(jù)類型。例如,整形數(shù)到底代表什么?16位,32位,64位?這 些細(xì)節(jié)對實現(xiàn)互操作性很重要。XML Schema(XSD)就是專門解決這個問題的一套標(biāo)準(zhǔn)。它定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語言來擴(kuò)展這套數(shù)據(jù)類型。WebService平臺就 是用XSD來作為其數(shù)據(jù)類型系統(tǒng)的。當(dāng)你用某種語言(如VB.NET或C#)來構(gòu)造一個Web service時,為了符合WebService標(biāo)準(zhǔn),所 有你使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型。你用的工具可能已經(jīng)自動幫你完成了這個轉(zhuǎn)換,但你很可能會根據(jù)你的需要修改一下轉(zhuǎn)換過程。

3.2、SOAP

   WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時,發(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ù)編碼方式。打個比 喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護(hù)欄,SOAP就是普通公路經(jīng)過加隔離帶和防護(hù)欄改造過的高速公路。

3.3、WSDL

  好比我們?nèi)ド痰曩I東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。 WebService也一樣,WebService客戶端要調(diào)用一個WebService服務(wù),首先要有知道這個服務(wù)的地址在哪,以及這個服務(wù)里有什么方 法可以調(diào)用,所以,WebService務(wù)器端首先要通過一個WSDL文件來說明自己家里有啥服務(wù)可以對外調(diào)用,服務(wù)是什么(服務(wù)中有哪些方法,方法接受 的參數(shù)是什么,返回值是什么),服務(wù)的網(wǎng)絡(luò)地址用哪個url地址表示,服務(wù)通過什么方式來調(diào)用。

  WSDL(Web Services Description Language)就是這樣一個基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。它是WebService客戶端和服務(wù)器端都 能理解的標(biāo)準(zhǔn)格式。因為是基于XML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發(fā)工具既能根據(jù)你的 Web service生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)WebService的代理類代碼。

  WSDL 文件保存在Web服務(wù)器上,通過一個url地址就可以訪問到它??蛻舳艘{(diào)用一個WebService服務(wù)之前,要知道該服務(wù)的WSDL文件的地址。 WebService服務(wù)提供商可以通過兩種方式來暴露它的WSDL文件地址:1.注冊到UDDI服務(wù)器,以便被人查找;2.直接告訴給客戶端調(diào)用者。

四、WebService開發(fā)

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

4.1、服務(wù)端開發(fā)

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

4.2、客戶端開發(fā) 

  調(diào)用別人發(fā)布的WebService服務(wù),大多數(shù)人從事的開發(fā)都屬于這個方面,例如,調(diào)用天氣預(yù)報WebService服務(wù)。(使用廠 商的WSDL2Java之類的工具生成靜態(tài)調(diào)用的代理類代碼;使用廠商提供的客戶端編程API類;使用SUN公司早期標(biāo)準(zhǔn)的jax-rpc開發(fā)包;使用 SUN公司最新標(biāo)準(zhǔn)的jax-ws開發(fā)包。當(dāng)然SUN已被ORACLE收購)

4.3、WebService 的工作調(diào)用原理

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

五、適用場合

1、跨防火墻通信

  如果應(yīng)用程序有成千上萬的用戶,而且分布在世界各地,那么客戶端和服務(wù)器之間的通信將是一個棘手的問題。因為客戶端和服務(wù)器之間通常會有防火墻或者代理服 務(wù)器。在這種情況下,使用DCOM就不是那么簡單,通常也不便于把客戶端程序發(fā)布到數(shù)量如此龐大的每一個用戶手中。傳統(tǒng)的做法是,選擇用瀏覽器作為客戶 端,寫下一大堆ASP頁面,把應(yīng)用程序的中間層暴露給最終用戶。這樣做的結(jié)果是開發(fā)難度大,程序很難維護(hù)。如果中間層組件換成WebService的話, 就可以從用戶界面直接調(diào)用中間層組件。從大多數(shù)人的經(jīng)驗來看,在一個用戶界面和中間層有較多交互的應(yīng)用程序中,使用WebService這種結(jié)構(gòu),可以節(jié) 省花在用戶界面編程上20%的開發(fā)時間。

2、應(yīng)用程序集成

  企業(yè)級的應(yīng)用程序開發(fā)者都知道,企業(yè)里經(jīng)常都要把用不同語言寫成的、在不同平臺上運(yùn)行的各種程序集成起來,而這種集成將花費(fèi)很大的開發(fā)力量。應(yīng)用程序經(jīng)常 需要從運(yùn)行在IBM主機(jī)上的程序中獲取數(shù)據(jù);或者把數(shù)據(jù)發(fā)送到主機(jī)或UNIX應(yīng)用程序中去。即使在同一個平臺上,不同軟件廠商生產(chǎn)的各種軟件也常常需要集 成起來。通過WebService,可以很容易的集成不同結(jié)構(gòu)的應(yīng)用程序。

3、B2B集成

  用WebService集成應(yīng)用程序,可以使公司內(nèi)部的商務(wù)處理更加自動化。但當(dāng)交易跨越供應(yīng)商和客戶、突破公司的界限時會怎么樣呢?跨公司的商務(wù)交易集成通常叫做B2B集成。WebService是B2B集成成功的關(guān)鍵。通過WebService,公司可以把關(guān)鍵的商務(wù)應(yīng)用“暴露”給指定的供應(yīng)商和客戶。例如,把電子下單系統(tǒng)和電子發(fā)票系統(tǒng)“暴露”出來,客戶就可以以電子的方式發(fā)送訂單,供應(yīng)商則可以以電子的方式發(fā)送原料采購發(fā)票。當(dāng)然,這并不是一個 新的概念,EDI(電子文檔交換)早就是這樣了。但是,WebService的實現(xiàn)要比EDI簡單得多,而且WebService運(yùn)行在Internet 上,在世界任何地方都可輕易實現(xiàn),其運(yùn)行成本就相對較低。不過,WebService并不像EDI那樣,是文檔交換或B2B集成的完整解決方案。 WebService只是B2B集成的一個關(guān)鍵部分,還需要許多其它的部分才能實現(xiàn)集成。

  用WebService來實現(xiàn)B2B集成的最大好處在于可以輕易實現(xiàn)互操作性。只要把商務(wù)邏輯“暴露”出來,成為WebService,就可以讓任何指定 的合作伙伴調(diào)用這些商務(wù)邏輯,而不管他們的系統(tǒng)在什么平臺上運(yùn)行,使用什么開發(fā)語言。這樣就大大減少了花在B2B集成上的時間和成本,讓許多原本無法承受 EDI的中小企業(yè)也能實現(xiàn)B2B集成。

4、軟件和數(shù)據(jù)重用

      軟件重用是一個很大的主題,重用的形式很多,重用的程度有大有小。最基本的形式是源代碼模塊或者類一級的重用,一種形式是二進(jìn)制形式的組件重用。采用 WebService應(yīng)用程序可以用標(biāo)準(zhǔn)的方法把功能和數(shù)據(jù)“暴露”出來,供其它應(yīng)用程序使用,達(dá)到業(yè)務(wù)級重用。

六、不適用場合

1、單機(jī)應(yīng)用程序

      目前,企業(yè)和個人還使用著很多桌面應(yīng)用程序。其中一些只需要與本機(jī)上的其它程序通信。在這種情況下,最好就不要用WebService,只要用本地的 API就可以了。COM非常適合于在這種情況下工作,因為它既小又快。運(yùn)行在同一臺服務(wù)器上的服務(wù)器軟件也是這樣。最好直接用COM或其它本地的API來 進(jìn)行應(yīng)用程序間的調(diào)用。當(dāng)然WebService也能用在這些場合,但那樣不僅消耗太大,而且不會帶來任何好處。

2、局域網(wǎng)的同構(gòu)應(yīng)用程序

      在許多應(yīng)用中,所有的程序都是用VB或VC開發(fā)的,都在Windows平臺下使用COM,都運(yùn)行在同一個局域網(wǎng)上。例如,有兩個服務(wù)器應(yīng)用程序需要相互通 信,或者有一個Win32或WinForm的客戶程序要連接局域網(wǎng)上另一個服務(wù)器的程序。在這些程序里,使用DCOM會比SOAP/HTTP有效得多。與 此相類似,如果一個.NET程序要連接到局域網(wǎng)上的另一個.NET程序,應(yīng)該使用.NETremoting。有趣的是,在.NETremoting 中,也可以指定使用SOAP/HTTP來進(jìn)行WebService調(diào)用。不過最好還是直接通過TCP進(jìn)行RPC調(diào)用,那樣會有效得多。

以上是“WebService的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. WebService
  2. WebService 筆記

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI