簡單瞭解webservice

webservice是什麼

WebService是一種跨編程語言、跨操做系統平臺的遠程調用技術。java

  • 遠程調用技術:遠程調用是指一臺設備上的程序A能夠調用另外一臺設備上的方法B。
  • 跨編程語言:是指服務端、客戶端程序的編程語言能夠不一樣。
  • 跨操做系統平臺:是指服務端、客戶端可在不一樣的操做系統上運行。

Web服務定義瞭如何在異構系統之間實現通訊的標準化方法,從而就使得 Web 服務能夠跨越運行平臺和實現語言,同時也使得 Web 服務成爲了實現SOA(面向服務的架構)中服務的主要技術。
WebServices提供一個創建分佈式應用的平臺,使得運行在不一樣操做系統和不一樣設備上的軟件,或者是用不一樣的程序語言和不一樣廠商的軟件開發工具開發的軟件,全部可能的已開發和部署的軟件,可以利用這一平臺實現分佈式計算的目的。
從表面上看,WebService是指一個應用程序向外界暴露了一個能經過Web調用的API接口,咱們把調用這個WebService的應用程序稱做客戶端,把提供這個WebService的應用程序稱做服務端。
從深層上看,WebService是創建可互操做的分佈式應用程序的新平臺,是一個平臺,是一套標準。它定義了應用程序如何經過Web實現互操做性,經過WebService標準對服務進行查詢和訪問。
WebServices的思想是:使得應用程序也具備Web分佈式編程模型的鬆散耦合性。
web

何爲遠程調用

遠程調用的過程是這樣的
先從客戶端和服務端的角度考慮,客戶端向服務端發送服務請求,服務端接收請求並處理,再向客戶端回覆請求,客戶端接收回復。
從請求自己的角度考慮,請求和回覆各自表現爲一組數據,數據具備某種表示形式(XML)和類型標準(XSD),數據經過傳輸協議(HTTP)進行網絡傳輸。客戶端進行服務的遠程調用前,須要知道服務的地址與服務有什麼方法能夠調用。
所以,WebService服務端經過一個文件(WSDL)來講明本身家裏有啥服務能夠對外調用,服務是什麼(服務中有哪些方法,方法接受 的參數是什麼,返回值是什麼),服務的網絡地址用哪一個url地址表示,服務經過什麼方式來調用。
WSDL(Web Services Description Language)是一個基於XML的語言,用於描述Web Service及其函數、參數和返回值。它是WebService客戶端和服務器端都能理解的標準格式。由於是基於XML的,因此WSDL既是機器可閱讀的,又是人可閱讀的。一些最新的開發工具既能根據你的 Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應WebService的代理類代碼。WSDL 文件保存在Web服務器上,經過一個url地址就能夠訪問到它。
客戶端要調用一個WebService服務以前,要知道該服務的WSDL文件的地址。WebService服務提供商能夠經過兩種方式來暴露它的WSDL文件地址:1.註冊到UDDI服務器,以便被人查找;2.直接告訴給客戶端調用者。編程

WebServices的特色:

(1)WebServices 是自包含的。即在客戶端不須要附加任何軟件,只要客戶機支持HTTP和XML就能夠了。服務器

(2)WebServices 是自我描述的。在客戶端和服務端都不須要知道除了請求和響應消息的格式和內容外的任何東西。網絡

(3)WebServices 是跨平臺和跨語言的。客戶端和服務端都可以在不一樣的平臺和語言環境中實現,同時,沒必要爲了支持WebServices而更改現有的代碼。數據結構

(4)WebServices 是基於開放和標準的。XML和HTTP是WebServices 的主要技術基礎,而 XML和HTTP早就成了業內標準了。架構

(5)WebServices 是動態的。框架

(6)WebServices 是能夠組合的。也就是經過一個WebService訪問另一個WebService來達到組合的目的。經過組合WebServices即可以將簡單的WebServices聚合成爲實現更多複雜功能的複雜的服務。編程語言

(7)WebServices 是鬆散耦合的。它徹底解耦了客戶端和服務端。分佈式

(8)WebServices 提供編程訪問的能力。換句話說,就是能夠經過編寫程序來訪問Web服務。

(9)WebServices 是基於通過考驗的成熟技術上構建的。好比XML和HTTP。

(10)WebServices 提供打包現有應用程序的能力。

(11)WebServices 經過網絡進行發佈,查找和使用。

WebServices體系結構

在Web服務的體系結構中,涉及到三個角色和三類動做。

三個角色:

一個是Web服務提供者,一個是Web服務中介者,一個是Web服務請求者。

  • Web服務提供者:能夠發佈Web服務,而且對使用自身服務的請求進行響應。也就是Web服務的擁有者,它會等待其餘的服務或者是應用程序訪問本身。

  • Web服務請求者:也就是Web服務功能的使用者,它經過服務註冊中心也就是Web服務中介者查找到所須要的服務,再利用SOAP消息向Web服務提供者發送請求以得到服務。

  • Web服務中介者:也稱爲服務代理,用來註冊已經發布的Web服務提供者,並對其進行分類,同時提供搜索服務,簡單來講,Web服務中介者的做用就是把一個Web服務請求者和合適的Web服務提供者聯繫在一塊兒,充當一個管理者的角色,通常是經過 UDDI來實現。

三類動做,即發佈,查找,綁定。

  • 發佈:經過發佈操做,可使Web服務提供者向Web服務中介者註冊本身的功能以及訪問的接口。

  • 發現(查找):使得Web服務請求者能夠經過Web服務中介者來查找到特定種類的Web服務。

  • 綁定:綁定就是實現讓服務請求者可以使用服務提供者提供的服務。

WebServices三種基本元素之WSDL(WSDL,UDDI,SOAP)

WSDL 即Web Services Description Language也就是 Web 服務描述語言。是基於XML的用於描述Web服務以及如何訪問Web服務的語言。服務提供者經過服務描述將全部用於訪問Web服務的規範傳送給服務請求者,要實現Web服務體系結構的鬆散耦合,服務描述是一個關鍵,不論是請求者仍是服務提供者,經過服務描述即可以沒必要了解對方的底層平臺,編程語言等。

WSDL描述了Web服務的三個基本屬性:

(1)服務所提供的操做
(2)如何訪問服務
(3)服務位於何處(經過URL地址來肯定就能夠)

WebServices三種基本元素之UDDI

UDDI即 Universal Description,Discovery and Integration,也就是通用的描述,發現以及整合。
UDDI是一個跨產業,跨平臺的開放性架構,能夠幫助 Web 服務提供商在互聯網上發佈 Web 服務的信息。也是一種目錄服務,企業能夠經過UDDI來註冊和搜索Web服務。簡單來講,UDDI就是一個目錄,只不過在這個目錄中存放的是一些關於Web服務的信息而已。而且UDDI經過SOAP進行通信,構建於.Net之上。 UDDI是一種規範,它主要提供基於Web服務的註冊和發現機制,爲Web服務提供三個重要的技術支持:
①標準、透明、專門描述Web服務的機制;②調用Web服務的機制;③能夠訪問的Web服務註冊中心。通俗來講就是用來管理,分發,查詢webService。

WebServices三種基本元素之SOAP

描述傳遞信息的格式,能夠和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。SOAP使用基於XML的數據結構和超文本傳輸協議(HTTP)的組合定義了一個標準的方法來使用Internet上各類不一樣操做環境中的分佈式對象。soap協議是使用http做爲傳輸協議,xml做爲數據結構的。

下圖是一個soap的簡單示例

WebService平臺技術

XML+XSD,SOAP和WSDL就是構成WebService平臺的三大技術。

XML+XSD

  WebService採用HTTP協議傳輸數據,採用XML格式封裝數據(即XML中說明調用遠程服務對象的哪一個方法,傳遞的參數是什麼,以及服務對象的 返回結果是什麼)。XML是WebService平臺中表示數據的格式。除了易於創建和易於分析外,XML主要的優勢在於它既是平臺無關的,又是廠商無關 的。無關性是比技術優越性更重要的:軟件廠商是不會選擇一個由競爭對手所發明的技術的。
  XML解決了數據表示的問題,但它沒有定義一套標準的數據類型,更沒有說怎麼去擴展這套數據類型。例如,整形數到底表明什麼?16位,32位,64位?這 些細節對實現互操做性很重要。XML Schema(XSD)就是專門解決這個問題的一套標準。它定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。WebService平臺就 是用XSD來做爲其數據類型系統的。當你用某種語言(如VB.NET或C#)來構造一個Web service時,爲了符合WebService標準,所 有你使用的數據類型都必須被轉換爲XSD類型。你用的工具可能已經自動幫你完成了這個轉換,但你極可能會根據你的須要修改一下轉換過程。

SOAP

WebService經過HTTP協議發送請求和接收結果時,發送的請求內容和結果內容都採用XML格式封裝,並增長了一些特定的HTTP消息頭,以說明 HTTP消息的內容格式,這些特定的HTTP消息頭和XML內容格式就是SOAP協議。SOAP提供了標準的RPC方法來調用Web Service。

SOAP協議 = HTTP協議 + XML數據格式

SOAP協議定義了SOAP消息的格式,SOAP協議是基於HTTP協議的,SOAP也是基於XML和XSD的,XML是SOAP的數據編碼方式。打個比 喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防禦欄,SOAP就是普通公路通過加隔離帶和防禦欄改造過的高速公路。

WSDL

  比如咱們去商店買東西,首先要知道商店裏有什麼東西可買,而後再來購買,商家的作法就是張貼廣告海報。 WebService也同樣,WebService客戶端要調用一個WebService服務,首先要有知道這個服務的地址在哪,以及這個服務裏有什麼方 法能夠調用,因此,WebService務器端首先要經過一個WSDL文件來講明本身家裏有啥服務能夠對外調用,服務是什麼(服務中有哪些方法,方法接受 的參數是什麼,返回值是什麼),服務的網絡地址用哪一個url地址表示,服務經過什麼方式來調用。
  WSDL(Web Services Description Language)就是這樣一個基於XML的語言,用於描述Web Service及其函數、參數和返回值。它是WebService客戶端和服務器端都 能理解的標準格式。由於是基於XML的,因此WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的 Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應WebService的代理類代碼。

  WSDL 文件保存在Web服務器上,經過一個url地址就能夠訪問到它。客戶端要調用一個WebService服務以前,要知道該服務的WSDL文件的地址。 WebService服務提供商能夠經過兩種方式來暴露它的WSDL文件地址:1.註冊到UDDI服務器,以便被人查找;2.直接告訴給客戶端調用者。

WebService開發

  WebService開發能夠分爲服務器端開發和客戶端開發兩個方面

服務端開發

  把公司內部系統的業務方法發佈成WebService服務,供遠程合做單位和我的調用。(藉助一些WebService框架能夠很輕鬆地把本身的業務對象發佈成WebService服務,Java方面的典型WebService框架包括:axis,xfire,cxf 等,java ee服務器一般也支持發佈WebService服務,例如JBoss。)

客戶端開發

  調用別人發佈的WebService服務,大多數人從事的開發都屬於這個方面,例如,調用天氣預報WebService服務。(使用廠 商的WSDL2Java之類的工具生成靜態調用的代理類代碼;使用廠商提供的客戶端編程API類;使用SUN公司早期標準的jax-rpc開發包;使用 SUN公司最新標準的jax-ws開發包。固然SUN已被ORACLE收購)

WebService 的工做調用原理

對客戶端而言,咱們給這各種WebService客戶端API傳遞wsdl文件的url地址,這些API就會建立出底層的代理類,我調用這些代理,就能夠訪問到webservice服務。代理類把客戶端的方法調用變成soap格式的請求數據再經過HTTP協議發出去,並把接收到的soap數據變成返回值返回。對服務端而言,各種WebService框架的本質就是一個大大的Servlet,當遠程調用客戶端給它經過http協議發送過來soap格式的請求數據時,它分析這個數據,就知道要調用哪一個java類的哪一個方法,因而去查找或建立這個對象,並調用其方法,再把方法返回的結果包裝成soap格式的數據,經過http響應消息回給客戶端。

相關文章
相關標籤/搜索