標籤:tran 分析 競爭 最大 作業系統 訊息 一個 蘋果 end
一、WebService的定義
WebService有好幾種定義:
- W3C組織對其定義:WebService是一個軟體系統,為了支援跨網路的機器間互操作互動而設計。
- WebService通常被定義為一組模組化的API,我們能夠通過網路進行調用,來運行遠程系統的請求服務。
- WebService就是暴露給外部使用的,可通過web調用的一組API。
- WebService是一種跨程式設計語言和跨作業系統平台的遠程調用技術。
- Web Service = XML+XSD,SOAP和WSDL
事實上這多種定義僅僅是從不同的角度。不同的高度來理解WebService,終雩都殊途同歸。
從表面上看,WebService是應用程式暴露給外部的一個能夠通過Web調用的API。它告訴我們:這裡有一組對象。它有哪些方法,方法名稱是什麼。所須要的參數是什麼。參數類型怎樣,方法會給你返回什麼值。可能會出現哪些異常。你怎麼調用它。使用什麼通訊協定來資料轉送等等這些資訊。這樣就能夠通過編程的方法調用這種方法。獲得這個WebService所提供的服務。這解釋了2,3兩種定義。這是WebService的外在表現形式。
從深層次來講,WebService是構建分布式系統,實現可互操作的新的技術架構。是一個平台,是一套標準。
它定義了怎樣在網路上實現互通性,而無論你使用的是哪種語言。哪種作業系統。它最大的特點就是跨網路,跨平台。實現互通性是它的目的。而互通性就是指在網路間的不同機器之間進行相互操作,否則同一個網路。同一個機器之間須要什麼互通性嗎。
W3C的定義中,機器二字就暗示著無論是windows系統,還是蘋果系統還是Linux系統。無論機器上是使用Java還是C,C#語言等,都能夠實現互操作。這是WebService的內在價值。是一種更高,更深層次的系統架構。
WebService為了構建這樣一個跨語言的,跨網路的分布式平台。它必須提供一套協議或者說標準。不論什麼一個平台都有它自己的資料表示方法和資料類型系統。它必須提供一個統一的類型系統,以溝通不同語言,不同平台,不同組件模型的差異,使它們能夠交流。
它還必須提供一套標準來描寫敘述WebService,讓客戶能夠得到足夠且充分的資訊來調用它。
最後,它須要提供一種遠程調用方法,告訴client以什麼樣的格式或者說方式來調用webService。
這正好對應了WebService的三大技術:XML+XSD,WSDL,SOAP。
Web Service = XML+XSD,SOAP和WSDL這是從技術實現層面上來說明WebService
WebServices與WebService
初看,似乎一個是複數形式。一個是單數形式。然而。WebServices指的是用於架構WebService的總體技術架構,WebService表示使用WebServices技術架構而建立的應用執行個體。
當然有時候WebServices也表示詳細的應用執行個體,僅僅只是這時是泛指(複數)。有時候WebService也表示用於架構服務的總體技術架構。所以這兩個詞所表示的含義須要通過語境來確定,閱讀文檔時需注意。
二、WebService平台技術
XML+XSD,SOAP和WSDL就是構成WebService平台的三大技術。
XML+XSD
WebService採用HTTP協議資料轉送,採用XML格式封裝資料(即XML中說明調用遠程服務物件的哪個方法。傳遞的參數是什麼,以及服務物件的返回結果是什麼)。XML是WebService平台中表示資料的格式。除了易於建立和易於分析外,XML基本的優點在於它既是平台無關的。又是廠商無關的。
無關性是比技術優越性更重要的:軟體廠商是不會選擇一個由競爭者所發明的技術的。
XML攻克了資料表示的問題,但它未定義一套標準的資料類型,更沒有說怎麼去擴充這套資料類型。
比如,整形數究竟代表什嗎?16位,32位,64位?這些細節對實現互通性非常重要。XML Schema(XSD)就是專門解決問題的一套標準。
它定義了一套標準的資料類型。並給出了一種語言來擴充這套資料類型。WebService平台就是用XSD來作為其資料類型系統的。
當你用某種語言(如.NET或Java,C語言)來構造一個Web service時,為了符合WebService標準。全部你使用的資料類型都必須被轉換為XSD類型。你用的工具可能已經自己主動幫你完畢了這個轉換
SOAP:
WebService通過HTTP協議發送請求和接收結果時,必須要有一定的格式,並非說通過Http隨便發送一個請求就能夠的。發送的請求內容和結果內容都採用XML格式封裝,並添加了一些特定的HTTP訊息頭。以說明HTTP訊息的內容格式。這些特定的HTTP訊息頭和XML內容格式就是SOAP協議。
SOAP提供了標準的RPC方法來調用Web Service。
SOAP協議 = HTTP協議 + XML資料格式
SOAP協議定義了SOAP訊息的格式。SOAP協議是基於HTTP協議的,SOAP也是基於XML和XSD的,XML是SOAP的資料編碼方式。
Http是基本協議,而SOAP在基礎協議上加入了一系列的格式限制。打個比喻:HTTP就是普通公路。XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經過加隔離帶和防護欄改造過的快速公路。
WSDL:
WebServiceclient要調用一個WebService服務,首先要Crowdsourced Security Testing道這個服務的地址在哪。以及這個服務裡有什麼方法能夠調用,所以,WebService務器端首先要通過一個WSDL檔案來說明自己家裡有啥服務能夠對外調用。服務是什麼(服務中有哪些方法,方法接受的參數是什麼。傳回值是什麼),服務的網路地址用哪個url地址表示。服務通過什麼方式來調用。WSDL是WebService的描寫敘述。
就好比你買了一輛散裝單車,總得附一個產品說明書吧。告訴你怎麼把單車怎麼組裝起來。各個零件的作用.
WSDL(Web Services Description Language)就是這樣一個基於XML的語言。用於描寫敘述Web Service及其函數、參數和傳回值。它是WebServiceclient和server端都能理解的標準格式。
由於是基於XML的。所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個非常大的優點。
一些最新的開發工具既能根據你的Web service產生WSDL文檔,又能匯入WSDL文檔,產生調用對應WebService的代理類代碼。
WSDL檔案儲存在Webserver上。通過一個url地址就能夠訪問到它。
client要調用一個WebService服務之前。要知道該服務的WSDL檔案的地址。WebService服務提供者能夠通過兩種方式來暴露它的WSDL檔案地址:1.注冊到UDDIserver,以便被人尋找。2.直接告訴給client調用者。
三、WebServices體系架構模型
WebService體繫結構基於三種角色(服務提供者,服務注冊中心。服務要求者)之間的互動。互動詳細涉及到公布、尋找和綁定操作。服務提供者提供WebService描寫敘述而且將服務公布到服務要求者或者服務注冊中心。服務要求者使用尋找操作從本地或者服務注冊中心搜尋服務描寫敘述,然後使用服務描寫敘述與服務提供者綁定,並調用對應的WebService實現、同它互動。服務注冊中心是一個Web服務的注冊地,彙集了非常多線上的Web服務一般來說服務提供者將Web服務安裝到線上server之後,會將Web服務公布到服務注冊中心去,從而使得服務注冊中心包括了越來越多的Web服務的技術資訊。
眼下,服務注冊中心即為UDDI商業注冊中心。
服務提供這和服務要求者角色是邏輯結構,展示了這三者之間的關係和互動。
- 服務提供者(Service Provider)
從企業的角度來看。這是服務的全部者。從體繫結構的角度看,這是託管被訪問服務的平台。
- 服務要求者(Service Requestor)
從企業的角度來看。這是要求滿足特定要求的企業。從體繫結構的角度來看。這是尋找並調用服務、或啟動與服務互動的應用程式。服務要求者角色能夠由瀏覽器來擔當,有人或這無介面的應用程式(比如:還有一個WebService)來控制它。
- 服務注冊中心(Service Registry)
這是可搜尋的服務描寫敘述注冊中心。服務提供者在此公布他們的服務描寫敘述。在靜態繫結開發或動態綁定運行階段,服務要求者在這裡尋找服務並擷取服務的綁定資訊(在服務描寫敘述中)。
對於靜態繫結的服務要求者,服務注冊中心是可選的。由於服務提供者能夠把服務描寫敘述直接發送給服務要求者。
相同服務要求者也能夠從服務注冊中心以外的其它來源中獲得服務描寫敘述。比如:本地檔案,FTP網站,Web網站、ADS文字檔(Advertisement and Discovery of Services)或者DISCO檔案(Discovery of WebServices)。
四、WebServices協議棧
前面說道,WebService為了構建一個跨語言的,跨網路的分布式平台。也為了保證在基本訪問之上的事務、工作流程、安全機制等。它必須提供一套協議或者說標準。
展示了一個概念性的WebServices協議棧。
上層建立在下層協議提供的功能之上。
網路傳輸層
WebService協議棧的基礎是網路傳輸層。
WebService要想被服務要求者調用。就必須是能夠通過網路進行訪問的。Internet上能夠訪問的WebService採用已經普遍部署的網路通訊協定:HTTP。當然在一些特殊應用上,WebService也支援FTP協議(檔案傳輸),和SMTP協議(電子郵件)。而對於Intranet上,WebServices也支援採用中介軟體來作為傳輸互動的基礎架構,比如IBM的MQ Series(已改名為MQ)和CORBA(Common Object Request Broker Architecture)
WebService的優勢之中的一個就是能夠為Internet和Intranet上的服務開發和使用提供統一的編程模型。
因此對於開發人員來說,網路通訊協定和技術的選擇是透明的。
資料表現層
資料表現層的XML為WebServices上層協議提供了資訊、資料描寫敘述手段。XML是眼下全球範圍內描寫敘述資料和交換資料的一種標準方式。
在WebServices的時代,全部的規範、技術都是以XML為底層核心和構架基礎的。
對WebServices而言。無論是WebService的調用(SOAP技術),還是WebService的介面描寫敘述(WSDL技術),還是WebService的發現(UDDI技術)都是將XML作為資訊描寫敘述和交換的標準方式。
資料模型層
在資料表現層之上是資料模型層。描寫敘述資料結構的資料模型(也就是中繼資料),它本身也是一種資料。因此,描寫敘述資料結構的方式也是使用WebServices標準的資料表現方式:XML。
XML Schema是XML世界中標準的資料建模語言,SOAP、WSDL、UDDI的文法都是通過XML Schema來定義和描寫敘述的。XML Schema已經成為XML世界中的標準交流工具,相似於軟體設計中的UML。
基於XML的訊息層
在這一層此,WebServices使用的是基於XML的訊息交換協議SOAP。SOAP是構建於更低的傳輸層之上,這意味這SOAP能夠單獨使用,也能夠與不論什麼傳輸層協議進聯合使用。全部的SOAP訊息都提供前面說過的WebService架構中的公布(Publish)、綁定(Bind)、和尋找(Find)功能。
SOAP由三個部分組成:
- 一個使用XML信封來描寫敘述訊息內容的機制
- 一組編序規則,用來編碼各種各樣的資料格式
- 一個提供遠端程序呼叫(RPC)和響應的機制
服務描寫敘述層
服務描寫敘述為調用WebService提供了詳細的方法。它是基於XML格式的用於定義和描寫敘述WebService服務的實現和介面的基礎標準。這也表示WSDL將服務描寫敘述為兩個部分:服務實現和服務介面。在依照WSDL進行服務實現之前,我們必須先定義服務介面。
WSDL僅僅是服務的基本描寫敘述手段。要指定業務環境、服務品質和服務之間的關係。我們還須要另外的描寫敘述手段。
服務公布層
WSDL文檔僅僅是服務的基本描寫敘述手段。它能夠通過其它服務描寫敘述文檔來補充,以描寫敘述WebServices比如業務環境,服務品質等更進階的資訊。
在服務客戶生命週期內的任一階段,都能夠將WSDL文檔發送給WebService的client。當這一操作被涉及後,我們就須要從服務描寫敘述層進入到下一個服務層次的服務公布層。
在這一層次,服務提供者能夠向服務client發送WSDL文檔。一個可能的範例是通過Email的形式。
同一時候,服務提供者也能夠將WSDL公布到本地的UDDI庫中,或者是公用/私人的UDDI服務注冊中心,服務client能夠通過注冊庫發現WSDL文檔。
服務發現層
服務發現層基於服務公布層。假設服務沒有公布或者不能公布,它就不能被發現。
服務client也能夠選擇在設計階段或運行時階段通過本地WSDL服務注冊中心或者公有/私人的UDDI注冊中心發現WSDL文檔。
服務工作流程層
WebServices工作流程語言(WSFL)是協議棧頂層的服務工作流程層的標準語言。與協議棧中其它的標準不同,WSFL針對的是商務流程建模和工作流程。WSFL用於描寫敘述WebService在工作流程中怎樣互動,以及服務跟服務之間的通訊和協同。這意味這WebService能夠是工作流程的一部分。也能夠動態地被編入工作流程。特別是,這個工作流程有可能發生在買方,賣方和承運方之間。
比如WSFL同意工作流程管理器從一個複合WebServices中,按工作流程來定義根據商業流程賦予的不同功能的,作為其成分的每一個個體WebService。這種商業流程包括財務報表、預測和5年IT計劃等。
web service概念、架構及相關知識