国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Web Services的簡單介紹

2024-07-21 02:25:15
字體:
供稿:網(wǎng)友
國內(nèi)最大的酷站演示中心!
web services 是網(wǎng)格服務(wù)的基礎(chǔ), 也是ogsa和iogsi的奠基石(gt3). 理解webservice的架構(gòu)是使用gt3,編寫網(wǎng)格服務(wù)的基礎(chǔ)。
  最近 有很多關(guān)于"web services"的議論并且許多公司也開始為他們的企業(yè)應(yīng)用作出反應(yīng)。那么,web services究竟是什么?簡單的說,他們是另一個(gè)分布計(jì)算技術(shù)(像corba, rmi, ejb等等),容許我們創(chuàng)建客戶端/服務(wù)端應(yīng)用。
  舉個(gè)例子,讓我們假設(shè)我不得不為一個(gè)連鎖店開發(fā)一個(gè)程序。這家連鎖店分布在全國各地,但是我的產(chǎn)品主目錄(master catalog of product)只存放在我的中心辦公室的數(shù)據(jù)庫中,并且分店的軟件必須能夠訪問這個(gè)產(chǎn)品目錄.我可以通過一個(gè)被稱為shopservice的web service 來發(fā)布這些目錄。

  重要的是:在網(wǎng)站上發(fā)布的時(shí)候不能出錯(cuò)。在網(wǎng)站上的信息(像你正在讀到的一樣)是為人編寫的。而在web service上的信息可以被軟件訪問,并不時(shí)直接被人訪問(盡管存在人用這個(gè)軟件的可能)。雖然web service 很大程度上依賴現(xiàn)有的web技術(shù)(像我們正在看到的http),但他們和web瀏覽器與html沒有聯(lián)系。我們?cè)僦貜?fù)一遍: 網(wǎng)站是為人服務(wù)的,而web service 是為軟件服務(wù)的 :-)

  客戶端(在商店的pc)在那個(gè)時(shí)候?qū)⒁B接(服務(wù)器上的)webservice,并發(fā)送一個(gè)需要目錄的服務(wù)請(qǐng)求。服務(wù)器將會(huì)通過一個(gè)服務(wù)響應(yīng)返回目錄信息。當(dāng)然這是一個(gè)描述web service如何工作的非常潦草的例子。等一下,我們將會(huì)看到一個(gè)非常詳細(xì)的解釋。


  我們中的一些人可能會(huì)這么想:"嘿,等一下!我可以通過rmi,corba,ejbs,等很多其他技術(shù)來實(shí)現(xiàn)??!"。那么。為什么還要web service? 好的,web service 也有很多優(yōu)于其他技術(shù)的地方:

web service由于使用標(biāo)準(zhǔn)的xml語言因而是平臺(tái)無關(guān)、語言無關(guān)的,這就意味著我們的客戶端可以用c++編寫在windows下運(yùn)行,而web service使用java編寫而運(yùn)行在linux下
大部分web service 使用http傳輸消息(像服務(wù)請(qǐng)求和響應(yīng))。如果你想建立一個(gè)internet范圍的程序,這是一個(gè)主要的優(yōu)點(diǎn),因?yàn)榇蟛糠謎nternet's的代理和防火墻都不會(huì)破壞http的傳輸(不像corba會(huì)在穿過防火墻時(shí)遇到麻煩)

當(dāng)然了,web service也存在以下一些缺點(diǎn):

壓力過大。很明顯所有在xml中的數(shù)據(jù)沒有定義好的二進(jìn)制代碼效率高。在你贏得通用性的同時(shí)降低了效率。盡管那樣,這個(gè)壓力通常是可以被大部分應(yīng)用程序所接受的,


用途狹窄。目前,由于他們只支持很基本的服務(wù)種類,所以web service 的用途不是很多。例如corba提供給編程者很多正在支持的服務(wù)(像持續(xù)服務(wù),通知,生命周期管理,轉(zhuǎn)換等等)。事實(shí)上,在下一頁我們可以看到網(wǎng)格服務(wù)可以真正的補(bǔ)償了用途狹窄的缺點(diǎn)。
  然而,分布式的web service有一個(gè)很重要的特點(diǎn)。像corba和ejb技術(shù)是面向關(guān)系緊密的分布式系統(tǒng)的,它們的客戶端和服務(wù)端彼此非常依賴。但web services是面向松散關(guān)系的系統(tǒng),客戶端可以直到真正調(diào)用web service才知道web service的知識(shí),例如基于網(wǎng)格的應(yīng)用。

一個(gè)典型的web service的調(diào)用
  這些都是如何工作的呢?讓我們看一下一個(gè)完整的web service調(diào)用的全部的調(diào)用步驟?,F(xiàn)在還不要擔(dān)心那些縮寫詞(soap,wsdl,...),等一下我們將會(huì)詳細(xì)的解釋它們。







正如我們前面所說的,一個(gè)客戶端可以不知道web service是如何調(diào)用的.所以我們第一步是尋找滿足我們要求的web servicede 的位置,例如我們想要找一個(gè)可以告訴我們美國城市溫度的web service。我們可以通過與uddi注冊(cè)點(diǎn)聯(lián)系得到web service的位置。
uddi注冊(cè)器將會(huì)返回告訴我們哪個(gè)服務(wù)器可以提供給我們我們想要的服務(wù)(像美國城市的溫度)
我們現(xiàn)在知道web service的位置了,但我們還不知道如何使用它。我們確實(shí)知道它可以給我們美國城市的溫度,但是真是的服務(wù)是如何調(diào)用的呢?我們調(diào)用的方法可能被稱為temperature getcitytemperature(int citypostalcode),但是它也可以是
int getuscitytemp(string cityname, bool isfarenheit).我們必須問web service 如何描述自己。(告訴我們?nèi)绾问褂盟?
用被稱為wsdl的語言返回信息。
我們終于知道web service的位置和如何調(diào)用它。調(diào)用方法是通過soap來實(shí)現(xiàn)的。那樣我們就發(fā)送soap請(qǐng)求要求一個(gè)城市的溫度。
web service 將會(huì)溫和的返回一個(gè)包含我們想要的溫度的soap響應(yīng),或者是當(dāng)我們的請(qǐng)求信息錯(cuò)誤時(shí)返回一個(gè)錯(cuò)誤信息。

web service的尋址
  我們剛剛看到了一個(gè)簡單web service的調(diào)用過程。在一點(diǎn)上uddi注冊(cè)服務(wù)"告訴"了客戶端web service的位置。但是....如何準(zhǔn)確的尋址web service?這個(gè)答案非常的簡單:就像我們的網(wǎng)頁。我們使用樸素而簡單的uris(uniform resource identifiers)。如果你熟悉 url (uniform resource locator)這個(gè)名詞的話,那就不要擔(dān)心:uri和url事實(shí)上是同一樣?xùn)|西。

例如uddi注冊(cè)服務(wù)期可能會(huì)返回如下 uri:

http://webservices.mysite.com/weather/us/weatherservice

   這個(gè)很容易被認(rèn)為是一個(gè)網(wǎng)頁的地址。然而web service 是通過軟件來記住這個(gè)地址的(不再是讓人直接記住)。如果你寫一個(gè)web service的uri進(jìn)你的web瀏覽器,你可能會(huì)的到一個(gè)錯(cuò)誤信息或者是難以理解的代碼(一些web service 會(huì)顯示給你一個(gè)漂亮的界面,但是這個(gè)界面和通常的不一樣)。當(dāng)你擁有一個(gè)web service 的uri時(shí),你通常需要將這個(gè)uri交給一個(gè)程序。事實(shí)上,我們寫的大部分的客戶端程序都會(huì)把網(wǎng)格服務(wù)uri作為一個(gè)命令參數(shù)來接收。

web services 的架構(gòu)
  現(xiàn)在我們已經(jīng)看到了在web service調(diào)用過程中的不同活動(dòng)者,讓我們來更清楚地了解web service的架構(gòu)吧!


service discovery: 這部分容許我們尋找滿足需要的web service。這部分通常由uddi(universal description, discovery, and integration)來處理。gt3目前不支持uddi.


service description: web service最有趣特點(diǎn)之一就是他們能夠自我描述。這意味著一旦你定位了web service,你能要求他"描述自己"并告訴你如何操作和使用它。這是通過web services description language (wsdl)來處理的


service invocation: 調(diào)用一個(gè)web service(和一般的任何類似corba對(duì)象或者enterprise java beand的分布式服務(wù))的過程中包含在客戶端與服務(wù)端之間傳輸?shù)男畔?。soap (simple object access protocol)規(guī)范了我們?nèi)绾胃袷交屯?wù)器的請(qǐng)求信息和如何格式化服務(wù)器本身的響應(yīng)信息。在理論上,我們還可以使用其它調(diào)用語言(例如xml_rpc或者 even some ad hoc xml language).然而,soap是web service更樂意的選擇。


transport: 最后,這些所有的信息可以在服務(wù)端和客戶端之間傳輸。架構(gòu)這部分選擇的協(xié)議是http(hypertext transfer protocol),與訪問internet上的普通網(wǎng)頁的協(xié)議相同!在理論上我們?nèi)匀荒苁褂闷渌麉f(xié)議,但http協(xié)議是目前使用最廣泛的了。
web service 應(yīng)用看起來是什么?
  ok,你現(xiàn)在對(duì)什么是web service已經(jīng)有了一個(gè)概念了,你可能可望立刻開始編寫wev service.在你這么做之前,你可能像直到基于web service的應(yīng)用程序的結(jié)構(gòu)式什么樣的。如果你曾經(jīng)編寫過corba或者rmi,這個(gè)結(jié)構(gòu)會(huì)看起

  首先,你應(yīng)該知道盡管存在很多協(xié)議和在周圍浮現(xiàn)的眾多語言,web service 編程者通常不用寫一行soap或者wsdl的代碼。一旦我們到了我們的客戶端需要調(diào)用一個(gè)web service那一刻時(shí),我們授權(quán)給軟件中一塊叫本地stub(a client stub)的任務(wù)。好消息是有很多可以利用的工具為我們自動(dòng)產(chǎn)生基于wsdl的web service描述的本地stub(a client stub)。

  這樣你不需要逐字地解釋"典型的調(diào)用"對(duì)話過程。一個(gè)web service客戶端通常不會(huì)在一個(gè)調(diào)用過程中經(jīng)過所有步驟。一個(gè)更正確的事件流程如下:

我們通過uddi定位一個(gè)滿足我們需要的web service。
我們獲得關(guān)于這個(gè)web service的wsdl描述。
我們產(chǎn)生stub,然后在我們的應(yīng)用程序中包含它們。
這個(gè)應(yīng)用程序會(huì)在每次調(diào)用web service 時(shí)使用stub。
  服務(wù)端的編程比較容易。我們不用必須寫一個(gè)復(fù)雜的需要?jiǎng)討B(tài)解釋soap請(qǐng)求和產(chǎn)生soap響應(yīng)的服務(wù)程序,我們能簡單的實(shí)現(xiàn)我們web service的所有功能,然后產(chǎn)生一個(gè)服務(wù)器stub(the term skeleton is also used),這個(gè)stub負(fù)責(zé)解釋請(qǐng)求然后將這些請(qǐng)求轉(zhuǎn)交給服務(wù)器的實(shí)現(xiàn)部分。當(dāng)服務(wù)器實(shí)現(xiàn)部分包含一個(gè)結(jié)果時(shí),它將會(huì)把這個(gè)結(jié)果交給服務(wù)器stub,這樣就產(chǎn)生了合適的soap響應(yīng)。這個(gè)服務(wù)器stub還能通過wsdl描述產(chǎn)生,或者從其他語言(像idl)定義的接口。此外的是服務(wù)器實(shí)現(xiàn)和服務(wù)器stub都通過軟件中被稱為web service容器的代碼來管理,這個(gè)容器會(huì)確保提交給web servvicehttp請(qǐng)求直接交給服務(wù)器stub。

下圖描述了調(diào)用一個(gè)web service的步驟。



我們來假設(shè)我們的客戶端已經(jīng)定位了web service,從wsdl描述產(chǎn)生了客戶端stub,并且服務(wù)端程序也產(chǎn)生了服務(wù)端stub。

無論客戶端什么時(shí)候需要調(diào)用web service,它都需要調(diào)用客戶端stub。這個(gè)客戶端stub會(huì)將這個(gè)本地調(diào)用轉(zhuǎn)換為合適的soap請(qǐng)求。這步經(jīng)常被稱為編組過程(marshalling process).
soap請(qǐng)求使用http協(xié)議通過網(wǎng)絡(luò)發(fā)送出去。web service容器接收到soap的請(qǐng)求后將它交給服務(wù)器stub。服務(wù)器stub把soap請(qǐng)求轉(zhuǎn)換服務(wù)器實(shí)現(xiàn)程序能夠理解的形式。這步經(jīng)常被稱為解散。
服務(wù)器實(shí)現(xiàn)部分收到從服務(wù)器stub轉(zhuǎn)來的請(qǐng)求后,執(zhí)行所請(qǐng)求的工作。例如我們調(diào)用了 int add(int a, int b) 方法,服務(wù)器實(shí)現(xiàn)執(zhí)行加法功能。
執(zhí)行請(qǐng)求的結(jié)果由服務(wù)器stub處理轉(zhuǎn)換為soap響應(yīng)。
soap響應(yīng)使用http協(xié)議通過網(wǎng)絡(luò)發(fā)送。客戶端stub收到soap響應(yīng)并將它轉(zhuǎn)換為客戶端應(yīng)用可以理解的形式。
最終客戶端應(yīng)用接受到調(diào)用web service的結(jié)果并使用這個(gè)結(jié)果。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赫章县| 许昌县| 元阳县| 永顺县| 彰化县| 璧山县| 铜鼓县| 竹北市| 五常市| 高安市| 汾阳市| 西青区| 囊谦县| 什邡市| 汤阴县| 西藏| 平果县| 炎陵县| 宁安市| 渭南市| 偃师市| 瑞丽市| 沁源县| 十堰市| 县级市| 温宿县| 东城区| 若羌县| 喜德县| 铁力市| 宁波市| 南皮县| 永胜县| 许昌市| 鄂尔多斯市| 永宁县| 师宗县| 通渭县| 潼关县| 灵川县| 普宁市|