日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Web Service

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web Service 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Web Service微軟提出的基于互聯(lián)網(wǎng)的開發(fā)模型,一經(jīng)提出即收到業(yè)界的廣泛推從。本文將總結(jié)了一些Web Services相關(guān)的一些重要概念,解釋了什么是Web Service,詳細(xì)說(shuō)明了Web Service的體系結(jié)構(gòu),如何運(yùn)用Web Service,如果你是初次接觸Web Service,那么你一定會(huì)有不少的收獲。

  體系結(jié)構(gòu)描述

  概念

  定義一:

  Web Services是自包含的、模塊化的應(yīng)用程序,它可以在網(wǎng)絡(luò)(通常為Web)中被描述、發(fā)布、查找以及調(diào)用。

  定義二:

  Web Services是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作。

  定義三:

  所謂Web服務(wù),它是指由企業(yè)發(fā)布的完成其特別商務(wù)需求的在線應(yīng)用服務(wù),其他公司或應(yīng)用軟件能夠通過(guò)Internet來(lái)訪問(wèn)并使用這項(xiàng)應(yīng)用服務(wù)。(UDDI規(guī)范2.0)

  體系結(jié)構(gòu)

  Web 服務(wù)的一個(gè)主要思想,就是未來(lái)的應(yīng)用將由一組應(yīng)用了網(wǎng)絡(luò)的服務(wù)組合而成。只要兩個(gè)等同的服務(wù)使用統(tǒng)一標(biāo)準(zhǔn)和中性的方法在網(wǎng)絡(luò)上宣傳自己,那么從理論上說(shuō),一個(gè)應(yīng)用程序就可以根據(jù)價(jià)格或者性能的標(biāo)準(zhǔn),從兩個(gè)彼此競(jìng)爭(zhēng)的服務(wù)之中選出一個(gè)。除此之外,一些服務(wù)允許在機(jī)器之間復(fù)制,因而可以通過(guò)把有用的服務(wù)復(fù)制到本地儲(chǔ)存庫(kù),來(lái)提高允許運(yùn)行在特定的計(jì)算機(jī)(群)上的應(yīng)用程序的性能。

  Web Services體系結(jié)構(gòu)是面向?qū)ο蠓治雠c設(shè)計(jì)(OOAD)的一種合理發(fā)展(logical evolution),同時(shí)也是電子商務(wù)解決方案中,面向體系結(jié)構(gòu)、設(shè)計(jì)、實(shí)現(xiàn)與部署而采用的組件化的合理發(fā)展(logical evolution of components geared towards the architecture, design, implementation, and deployment of e-business solutions)。這兩種方式在復(fù)雜的大型系統(tǒng)中經(jīng)受住了考驗(yàn)。和面向?qū)ο笙到y(tǒng)一樣,封裝、消息傳遞、動(dòng)態(tài)綁定、服務(wù)描述和查詢也是Web Services中的基本概念,而且,Web Services另外一個(gè)基本概念就是:所有東西都是服務(wù),這些服務(wù)發(fā)布一個(gè)API供網(wǎng)絡(luò)中的其他服務(wù)使用,并且封裝了實(shí)現(xiàn)細(xì)節(jié)。

  下面我們就來(lái)看一下Web Services的體系結(jié)構(gòu)--面向服務(wù)的體系結(jié)構(gòu)(SOA)。


    圖1:面向服務(wù)的體系結(jié)構(gòu)(SOA)?

  從圖1可以看出,SOA結(jié)構(gòu)中共有三種角色:

  ① Service provider:發(fā)布自己的服務(wù),并且對(duì)使用自身服務(wù)的請(qǐng)求進(jìn)行響應(yīng)

  ② Service broker:注冊(cè)已經(jīng)發(fā)布的Service provider,對(duì)其進(jìn)行分類,并提供搜索服務(wù)

  ③ Service requester:利用Service broker查找所需的服務(wù),然后使用該服務(wù)

  SOA體系結(jié)構(gòu)中的組件必須具有上述一種或多種角色。

  在這些角色之間使用了三種操作:

  ① publish操作:使Service provider可以向Service broker注冊(cè)自己的功能及訪問(wèn)接口

  ② find操作:使Service requester可以通過(guò)Service broker查找特定種類的服務(wù)

  ③ bind操作:使Service requester能夠真正使用Service provider

  為支持結(jié)構(gòu)中的三種操作(publish、find和bind),SOA需要對(duì)服務(wù)進(jìn)行一定的描述,這種服務(wù)描述(Service Description)應(yīng)具有下面幾個(gè)重要特點(diǎn):首先,它要聲明Service provider的語(yǔ)義特征。Service broker使用語(yǔ)義特征將Service provider進(jìn)行分類,以幫助具體服務(wù)的查找。Service requester根據(jù)語(yǔ)義特征來(lái)匹配那些滿足要求的Service provider。(因此,語(yǔ)義特征中重要的一點(diǎn)就是對(duì)Service provider的分類。)其次,服務(wù)描述應(yīng)該聲明接口特征,以訪問(wèn)特定的服務(wù)。最后,服務(wù)描述還應(yīng)聲明各種非功能特征,如安全要求,事務(wù)要求,使用Service provider的費(fèi)用等等。接口特征和非功能特征也可以用來(lái)幫助Service requester對(duì)Service provider的查找。

  注意,服務(wù)描述和服務(wù)實(shí)現(xiàn)是分離的,這使得Service requester可以在Service provider的一個(gè)具體實(shí)現(xiàn)(implementation)正處于開發(fā)階段、部署階段或完成(execution)階段時(shí),對(duì)其(具體實(shí)現(xiàn))進(jìn)行綁定。
另外,SOA中的組件相互之間必須能夠進(jìn)行交互,才能進(jìn)行上述三種操作。所以Web Services體系結(jié)構(gòu)的另一個(gè)基本原則就是使用標(biāo)準(zhǔn)的技術(shù),包括服務(wù)描述、通訊協(xié)議以及數(shù)據(jù)格式等。這樣一來(lái),開發(fā)者就可以開發(fā)出平臺(tái)獨(dú)立、編程語(yǔ)言獨(dú)立的Web Services,從而能夠充分利用現(xiàn)有的軟硬件資源和人力資源。

  最后,SOA體系結(jié)構(gòu)沒有對(duì)Web Service的粒度進(jìn)行限制,因此一個(gè)Web Service即可以是一個(gè)組件(小粒度),該組件必須和其他組件結(jié)合才能進(jìn)行完整的業(yè)務(wù)處理;Web Service也可以是一個(gè)應(yīng)用程序(大粒度)。


相關(guān)技術(shù)規(guī)范

  協(xié)議及消息傳遞(Protocol and Messaging)

  SOAP

  即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級(jí)協(xié)議。它有三個(gè)主要方面:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架;將程序?qū)ο缶幋a成為XML對(duì)象的規(guī)則;執(zhí)行遠(yuǎn)程過(guò)程調(diào)用(RPC)的約定。

  SOAP 可以運(yùn)行在任何其它傳輸協(xié)議上。例如,您可以使用 SMTP,即因特網(wǎng)電子郵件協(xié)議來(lái)傳遞SOAP消息。在傳輸層之間的頭是不同的,但XML有效負(fù)載保持相同。

  性能:

  SOAP 用 XML 將消息編碼,因此在調(diào)用過(guò)程的任何一步都極易處理消息。另外,調(diào)試 SOAP 消息的方便性使各種 SOAP 執(zhí)行能快速聚合在一起,這點(diǎn)很重要因?yàn)?SOAP 就是要達(dá)到大范圍的協(xié)同工作。(CORBA、DCOM 和 RMI 對(duì)參數(shù)和返回值使用二進(jìn)制編碼。除此之外,他們假設(shè)發(fā)送端和接收端充分了解消息的前后關(guān)系,因此對(duì)諸如參數(shù)名稱或類型的任何元信息都不編碼。這種方法產(chǎn)生了良好的性能,但使中介很難處理消息。因?yàn)槊總€(gè)系統(tǒng)使用不同的二進(jìn)制編碼,所以建立互操作的系統(tǒng)很難)。

  表面看來(lái),基于 XML 的模式本應(yīng)比基于二進(jìn)制的慢,但它并不像表面那么簡(jiǎn)單。首先,當(dāng)SOAP被用于通過(guò)因特網(wǎng)發(fā)送消息時(shí),在每個(gè)端點(diǎn)給消息編碼/解碼的時(shí)間與在端點(diǎn)間傳輸字節(jié)的時(shí)間相比較是微不足道的,所以這種情況下使用 XML 沒太大問(wèn)題。

  其次,當(dāng)SOAP用于封閉環(huán)境下的點(diǎn)對(duì)點(diǎn)間的消息傳送,如在同一公司部門間的傳送時(shí),各端點(diǎn)可能將運(yùn)行相同的SOAP執(zhí)行。這樣,這個(gè)特定執(zhí)行就擁有專門的優(yōu)化機(jī)會(huì)。例如,一個(gè)SOAP客戶端可添加一個(gè) HTTP header 標(biāo)記到 SOAP 請(qǐng)求上,這個(gè)請(qǐng)求說(shuō)明它支持一個(gè)特定的優(yōu)化。如果SOAP服務(wù)器也支持那個(gè)優(yōu)化,它會(huì)在第一個(gè)SOAP響應(yīng)中返回一個(gè) HTTP header 標(biāo)記,告訴客戶端可以在下面的通信中使用這種優(yōu)化。接下來(lái),客戶端和服務(wù)器可以開始使用這種優(yōu)化了。

接口描述(Interface Description)

  1. WSDL

  WSDL是用來(lái)描述網(wǎng)絡(luò)(network)服務(wù)或終端(endpoint)的一種XML語(yǔ)言,它用于定義Web Services以及如何調(diào)用它們(描述Web服務(wù)的屬性,例如它做什么,它位于哪里和怎樣調(diào)用它)。WSDL文檔可用于動(dòng)態(tài)發(fā)布Web Services、查找已發(fā)布的Web Services以及綁定Web Services。

  在WSDL中包含了使用SOAP的服務(wù)描述的綁定,也包含了使用簡(jiǎn)單HTTP GET和POST請(qǐng)求的服務(wù)描述的綁定。
WSDL將Web服務(wù)定義成一系列的端口(port),每個(gè)端口用來(lái)表示從抽象端口類型(port type)到用于調(diào)用Web服務(wù)的具體通信協(xié)議的一個(gè)映射。端口類型由一組與Service provider交換信息的操作組成,它支持對(duì)包含消息的數(shù)據(jù)類型的定義。(可參考具體的WSDL文檔定義http://www-900.ibm.com/developerWorks/webservices/ws-peer4/listing1.html

  一個(gè)完整的 WSDL 服務(wù)描述是由一個(gè)服務(wù)接口和一個(gè)服務(wù)實(shí)現(xiàn)文檔組成的。 由于服務(wù)接口表示服務(wù)的可重用定義,它在 UDDI 注冊(cè)中心被作為 tModel 發(fā)布。服務(wù)實(shí)現(xiàn)描述服務(wù)的實(shí)例。每個(gè)實(shí)例都是使用一個(gè) WSDL service 元素定義的。服務(wù)實(shí)現(xiàn)文檔中的每個(gè) service 元素都被用于發(fā)布 UDDI businessService。

  因?yàn)?WSDL 包含了對(duì)服務(wù)接口的完整描述,所以我們可以使用它來(lái)創(chuàng)建能簡(jiǎn)化服務(wù)訪問(wèn)的存根,該存根為一段Java代碼(假設(shè)使用Java),它自動(dòng)生成了訪問(wèn)Web服務(wù)的類。如果我們需要訪問(wèn)Web服務(wù),只需調(diào)用該類中對(duì)應(yīng)的方法即可,而不用在客戶端程序中再寫入那些令人頭疼的配置信息了。通過(guò)IBM提供的工具包可以輕松創(chuàng)建WSDL文檔對(duì)應(yīng)的存根。(由此看出,不用WSDL也可以訪問(wèn)Web服務(wù))

  WSDL取代了IBM的NASSL(Network-Accessible Service Specification Language)和Microsoft的SCL(SOAP Contract Language)。

  2. UDDI

  即Universal Description, Discovery and Integration。它提供了在Web上描述并發(fā)現(xiàn)商業(yè)服務(wù)的框架。UDDI通過(guò)服務(wù)注冊(cè),以及使用SOAP訪問(wèn)這些注冊(cè)信息的約定來(lái)實(shí)現(xiàn)上述目標(biāo)。

  UDDI計(jì)劃的核心組件是UDDI商業(yè)注冊(cè),它使用一個(gè)XML文檔來(lái)描述企業(yè)及其提供的Web服務(wù)。從概念上來(lái)說(shuō),UDDI商業(yè)注冊(cè)所提供的信息包含三個(gè)部分:"白頁(yè)(White Page)" 包括了地址,聯(lián)系方法,和已知的企業(yè)標(biāo)識(shí);"黃頁(yè)(Yellow page)"包括了基于標(biāo)準(zhǔn)分類法的行業(yè)類別;"綠頁(yè)(Green Page)"則包括了關(guān)于該企業(yè)所提供的Web服務(wù)的技術(shù)信息,其形式可能是一些指向文件或是URL的指針,而這些文件或URL是為服務(wù)發(fā)現(xiàn)機(jī)制服務(wù)的。所有的UDDI商業(yè)注冊(cè)信息存儲(chǔ)在UDDI商業(yè)注冊(cè)中心中。

  借助XML 和SOAP ,集成和交互的問(wèn)題將從層次上被簡(jiǎn)化。XML 提供了跨平臺(tái)的數(shù)據(jù)編碼和組織方法,而SOAP 建立在XML 之上,定義了一種跨系統(tǒng)平臺(tái)的信息交換的簡(jiǎn)單包裝方法。綁定于HTTP之上的SOAP協(xié)議,可以跨語(yǔ)言、跨操作系統(tǒng)進(jìn)行遠(yuǎn)程過(guò)程調(diào)用(RPC),實(shí)現(xiàn)了編程語(yǔ)言和系統(tǒng)平臺(tái)的無(wú)關(guān)性。而以前的調(diào)用方式則和復(fù)雜的分布式對(duì)象標(biāo)準(zhǔn)或是中間件有密切的關(guān)系,從長(zhǎng)期的眼光來(lái)看,這些都不是高效的解決方案。XML 和SOAP 這樣的跨語(yǔ)言、跨平臺(tái)的解決方案大大簡(jiǎn)化了不同企業(yè)系統(tǒng)之間的交互問(wèn)題。

  但如果僅僅是XML和SOAP的話,對(duì)于公司間的交流仍存在著巨大的鴻溝。UDDI 規(guī)范在XML 和SOAP 的基礎(chǔ)之上定義了新的一層,在這一層次,不同企業(yè)可以用相同的方法描述自己所能提供的,并能查詢對(duì)方所能提供的服務(wù)。

互操作

協(xié)議棧? 統(tǒng)一服務(wù)互操作協(xié)議
(這些協(xié)議尚未定義)?
統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議 (UDDI)
簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (SOAP)
擴(kuò)展標(biāo)注語(yǔ)言 (XML)
通用Internet協(xié)議 (HTTP, TCP/IP)


  以下圖表描述了這些協(xié)議的層次關(guān)系:

  UDDI 注冊(cè)使用的核心信息模型由XML Schema 定義。使用XML 是因?yàn)樗峁┝似脚_(tái)無(wú)關(guān)的數(shù)據(jù)描述并很自然的描述了數(shù)據(jù)的層次關(guān)系。而選擇XML Schema 是因?yàn)樗С重S富的數(shù)據(jù)類型,便捷的描述方式及其按信息模型對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證的能力。

  UDDI XML Schema 定義了四種主要信息類型,它們是技術(shù)人員在需要使用合作伙伴所提供的Web 服務(wù)時(shí)必須了解的技術(shù)信息。它們是:商業(yè)實(shí)體信息、服務(wù)信息、綁定信息和服務(wù)調(diào)用規(guī)范的說(shuō)明信息。

  UDDI程序員API規(guī)范分為兩個(gè)邏輯部分:查詢API 和發(fā)布API 。查詢API 又分為兩個(gè)部分:一部分被用來(lái)構(gòu)造搜索和瀏覽UDDI 注冊(cè)信息的程序,另一部分在Web服務(wù)出現(xiàn)錯(cuò)誤時(shí)使用。程序員可以利用發(fā)布API創(chuàng)建各種類型的工具,以直接與UDDI注冊(cè)中心進(jìn)行交互,便于企業(yè)技術(shù)人員管理businessEntity 或tModel 結(jié)構(gòu)的發(fā)布信息。

  UDDI調(diào)用模型

  每一個(gè)獨(dú)立發(fā)布的Web服務(wù)都是使用一個(gè)bindingTemplate結(jié)構(gòu)來(lái)建模的。對(duì)這個(gè)Web服務(wù)的調(diào)用通常通過(guò)緩存bindingTemplate 數(shù)據(jù)來(lái)實(shí)現(xiàn)。注意到這一點(diǎn)后,在你準(zhǔn)備編寫調(diào)用某種Web 服務(wù)的程序時(shí),該如何使用UDDI 就很清楚了。下面列出了基本步驟:

  1.編寫調(diào)用遠(yuǎn)程Web 服務(wù)的程序時(shí),程序員使用UDDI 商業(yè)注冊(cè)中心(通過(guò)使用Web界面或其它基于查詢API 的工具)來(lái)定位businessEntity 信息,這些信息是由(或?yàn)?提供該Web 服務(wù)的企業(yè)注冊(cè)的。

  2.程序員可以進(jìn)一步獲得更詳細(xì)的businessService信息,或是得到一個(gè)完整的businessEntity結(jié)構(gòu)。因?yàn)閎usinessEntity結(jié)構(gòu)包含了有關(guān)已發(fā)布的Web服務(wù)的所有信息,因此程序員只需簡(jiǎn)單地選擇一個(gè)bindingTemplate 并保存留待以后使用。

  3.基于Web服務(wù)在bindingTemplate的tModel中提供的調(diào)用規(guī)范的相關(guān)信息,程序員可以按照該Web服務(wù)的調(diào)用規(guī)范編寫程序。

  4.在運(yùn)行時(shí),程序可以按需要使用已保存下來(lái)的 bindingTemplate的信息來(lái)調(diào)用Web服務(wù)。

  一般說(shuō)來(lái),只要遠(yuǎn)程Web 服務(wù)和調(diào)用它的程序都準(zhǔn)確的實(shí)現(xiàn)了必要的接口(按照在tModel 中所引用的調(diào)用規(guī)范),對(duì)遠(yuǎn)程服務(wù)的調(diào)用就一定會(huì)成功。

  服務(wù)發(fā)現(xiàn)(Service Discovery)

  1. UDDI(同上)

  2. ADS

  即Advertisement and Discovery of Services。這是由IBM提出的建議,它使服務(wù)提供者(service provider)能夠?qū)λ麄兊姆?wù)進(jìn)行廣告宣傳。它允許將這些服務(wù)的信息集中到大家熟悉的地方,而且還提供了連接內(nèi)容及服務(wù)的方式。

  由于ADS提供了可選擇的、分散的服務(wù)公告機(jī)制,因而補(bǔ)充了基于注冊(cè)的訪問(wèn)方案。這遵循了Microsoft的DISCO(Discovery of Web Services)思想,但更為先進(jìn)。

總結(jié)

以上是生活随笔為你收集整理的Web Service的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。