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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web Service概念梳理

發布時間:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web Service概念梳理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  計算機技術難理解的很多,Web Service 對我來說就是一個很難理解的概念;為了弄清它到底是什么,我花費了兩周的時間,總算有了一些收獲,參考了不少網上的資料,但有些概念說法不一。我以w3c和 一些早期介紹Web Service的書為準。如有錯誤,歡迎指正!

--------------------------------------------------------------

提前預警!概念太多,你需要仔細閱讀,或要閱讀兩遍。

?

SOA ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

  Service Oriented Ambiguity?中文一般理解為,面向服務架構,簡稱SOA

  SOA的提出是在企業計算領域,就是要將緊耦合的系統,劃分為面向業務的,粗粒度,松耦合,無狀態的服務。服務發布出來供其他服務調用,一組互相依賴的服務就構成了SOA架構下的系統。

  既然說是一種架構的話,所以一般認為SOA是包含了運行環境,編程模型,架構風格和相關方法論等在內的一整套新的分布式軟件系統構造方法和環境,涵蓋服務的整個生命周期。

  Service-architecture.com?SOA定義為:

  本質上是服務的集合。服務間彼此通信,這種通信可能是簡單的數據傳送,也可能是兩個或更多的服務協調進行某些活動。服務間需要某些方法進行連接。

  所謂服務就是精確定義、封裝完善、獨立于其他服務所處環境和狀態的函數。

  雖然不同廠商或個人對?SOA有著不同的理解,但是我們仍然可以從上述的定義中看到?SOA的幾個關鍵特性:一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。

?

(這不由的讓我想到了另一個概念---“敏捷測試”,它強調擁抱變化,溝通、減少文檔、快速迭代等。至于不同的公司或團隊如何具體的實施并沒有詳細的規范,只要符合以上幾點要求的公司或團隊都可以認為實施了敏捷測試。)

對于SOA來說,讀者并不需要太過較真SOA到是一個怎樣的架構。只要符合它的定義和規范的軟件系統都可以認為是SOA架構。

?

SOA Web Service ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

  早在1996Gartner就前瞻性地提出了面向服務架構的思想(SOA)Web Service不知為何物,SOA還只是束之高閣的理論概念。直到2000年以后,W3C才成立了相關的委員會,開始討論Web Service的相關標準,各大廠商一邊積極參與標準制定,一邊推出了一系列實實在在的產品。新的技術和新的產品出現,SOA找到了可以依托的憑借。隨著 Web Service技術的推出和應用,SOA的思想被一個個效益顯著的信息系統建設項目不斷的示范,才逐漸成為現今的熱門話題。

  因為現在幾乎所有的SOA應用場合都是和Web Service綁定的,所以不免有時候這兩個概念混用。不可否認Web Service是現在最適合實現SOA的技術,SOA的走紅在很大程度上歸功于Web Service標準的成熟和應用普及。因為現在大家基本上認同Web Service技術在幾方面體現了SOA的需要:

  首先,是基于標準訪問的獨立功能實體滿足了松耦合要求:在Web Service中所有的訪問都通過SOAP訪問進行,用WSDL定義的接口封裝,通過UDDI進行目錄查找,可以動態改變一個服務的提供方而無需影響客戶端的配置,外界客戶端是根本不關心訪問服務器端的實現。

  其次,適合大數據量低頻率訪問符合服務大顆粒度功能:基于性能和效率平衡的要求,SOA的服務提供的是大顆粒度的應用功能,而且跨系統邊界的訪問頻率也不會象程序間函數調用那么頻繁。通過使用WSDL和基于文本(Literal)SOAP請求,可以實現能一次性接收處理大量數據。

  最后,基于標準的文本消息傳遞為異構系統提供通訊機制:Web Service所有的通訊是通過SOAP進行的,而SOAP是基于XML的,XML是結構化的文本消息。從最早的EDI開始,文本消息也許是異構系統間通訊最好的消息格式,適用于SOA強調的服務對異構后天宿主系統的透明性。

  綜合上述觀點,Web Service不愧為當前SOA的最好選擇。然而,就SOA思想本身而言,并不一定要局限于Web Service方式的實現。更應該看到的是SOA本身強調的是實現業務邏輯的敏捷性要求,是從業務應用角度對信息系統實現和應用的抽象。隨著人們認識的提高,還會有新技術不斷的發明出來,更好的來滿足這個要求。

  上面涉及的名詞太多,我們等一下還會單一的來介紹,用一句話總結它們之間的關系。 SOA不是Web ServiceWeb Service是目前最適合實現SOA的技術。

?

Web Service ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

在解釋 Web Service 之前,先拋出一個問題。有沒有一種辦法可以實現跨應用程序進行通信和跨平臺進行通信呢?

跨應用程序,主要是指我家開發的系統和別人家開發的系統之間是否可以通信。

跨平臺,主要是指我家用Java開發的系統和別人家用.NET開發的系統是否可以通信。

  像這樣的需求有很多,例如騰訊QQ上面自帶的天氣功能。

  騰訊要想獲得實時的天氣信息怎么辦呢?有一種辦法,那就是騰訊公司放個衛星上天,并且在公司中成立一個氣象部門,天天關注于天氣,然后每時每刻更新騰訊QQ上的這個天氣預報信息;這顯然不是一種明智的做法,只是想獲取一下天氣信息,居然要如此高的成本。

  更簡單的做法是讓中國氣象臺提供實時的天氣信息,然后,通過提供接口的方式給騰訊調用。那么這就遇到我上面所說的問題,如何跨應用與跨平臺調用接口。

  這個時候有聰明的讀者會跳出來說,你傻啊!用HTTP協議啊,主流的編程語言都可以實現基于HTTP協議的應用開發。讓中國氣象臺寫個基于HTTP協議的天氣接口給騰訊調用就可以了。當然,這是完全可以的。不過,Web Service之所以在HTTP之后被提出自然有它的特點。

  當然,這里拿Web Service HTTP進行比較是不合適。因為HTTP是互聯網上應用最為廣泛的一種網絡協議。而Web Service是一種部署在Web上的對象或者是應用程序組件,Web Service數據的傳輸同樣需要借助HTTP協議。

  更詳細的定義:

  Web service是一個平臺獨立的,低耦合的,自包含的、基于可編程的web的應用程序,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、發布、發現、協調和配置這些應用程序,用于開發分布式的互操作的應用程序。

?

?

SOAP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

  Simple?Object?Access?Protocol,中文為簡單對象訪問協議,簡稱SOAP

  SOAP是基于XML在分散或分布式的環境中交換信息的簡單的協議。允許服務提供者和服務客戶經過防火墻在INTERNET進行通訊交互。

  SOAP的設計是為了在一個松散的、分布的環境中使用XML對等地交換結構化的和類型化的信息提供了一個簡單且輕量級的機制。

  XML是可以擴展標記語言。

<bookstore><book category="COOKING"><title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> </bookstore>

?

  SOAP 消息的基本結構

<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Header>......</soap:Header><soap:Body>......<soap:Fault>......</soap:Fault></soap:Body></soap:Envelope>

  當SOAP消息真正需要在網絡上實際傳輸的時候,SOAP消息能夠與不同的底層傳輸協議進行綁定,同時,SOAP消息可以在很多種消息傳輸模式中使用。包括超文本傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用協議(RPC)等大量的應用程序。

  當然,最多的情況還是綁定在HTTP協議上面傳輸。這就導致大多數人認為SOAP就是HTTP + XML,或者認為SOAP是HTTP post請求的一個專用版本,遵循一種特殊的XML消息格式。

雖然,我們看到的大多情況確實如此,但這并不是SOAP本質與全部。

  這個請求你用fiddler可抓不到,我是用wireshark抓的,它可以截獲網卡的所有請求。

?

?

WSDL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Web Services Description Language,網絡服務描述語言,簡稱WSDL。它是一門基于 XML 的語言,用于描述 Web Services 以及如何對它們進行訪問。

WSDL 文檔主要使用以下幾個元素來描述某個 web service

<portType>??web service 執行的操作

<message>??web service 使用的消息

<types>?????web service 使用的數據類型

<binding>???web service 使用的通信協議

<wsdl:definitions ?xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" ?xmlns:tns="tns" ? xmlns:plink="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" ?xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:senc="http://schemas.xmlsoap.org/soap/encoding/" ?xmlns:s12env="http://www.w3.org/2003/05/soap-envelope/" ?xmlns:s12enc="http://www.w3.org/2003/05/soap-encoding/" ?xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ?xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/" ?xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="tns" ?name="Application"><wsdl:types><xs:schema ? targetNamespace="tns" ? elementFormDefault="qualified"><xs:import ? namespace="http://www.w3.org/2001/XMLSchema" /><xs:complexType ? name="say_hello"><xs:sequence><xs:element ? name="name" ? type="xs:string" ?minOccurs="0" ? nillable="true" /></xs:sequence></xs:complexType><xs:complexType ? name="say_helloResponse"><xs:sequence><xs:element ? name="say_helloResult" ? type="xs:string" ?minOccurs="0" ? nillable="true" /></xs:sequence></xs:complexType><xs:element ? name="say_hello" ? type="tns:say_hello" /><xs:element ? name="say_helloResponse" ?type="tns:say_helloResponse" /></xs:schema></wsdl:types><wsdl:message ? name="say_hello"><wsdl:part ? name="say_hello" ? element="tns:say_hello" /></wsdl:message><wsdl:message ? name="say_helloResponse"><wsdl:part ? name="say_helloResponse" ?element="tns:say_helloResponse" /></wsdl:message><wsdl:portType ? name="Application"><wsdl:operation ? name="say_hello" ? parameterOrder="say_hello"><wsdl:input ? name="say_hello" ? message="tns:say_hello" /><wsdl:output ? name="say_helloResponse" ?message="tns:say_helloResponse" /></wsdl:operation></wsdl:portType><wsdl:binding ? name="Application" ? type="tns:Application"><soap:binding ? style="document" ?transport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operation ? name="say_hello"><soap:operation ? soapAction="say_hello" ? style="document" /><wsdl:input ? name="say_hello"><soap:body ? use="literal" /></wsdl:input><wsdl:output ? name="say_helloResponse"><soap:body ? use="literal" /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service ? name="Application"><wsdl:port ? name="Application" ? binding="tns:Application"><soap:address ? location="http://10.2.70.10:7789/SOAP/?wsdl" /></wsdl:port></wsdl:service> </wsdl:definitions>

WSDL 端口

<portType>?元素是最重要的 WSDL 元素。

它可描述一個 web service、可被執行的操作,以及相關的消息。可以把 <portType> 元素比作傳統編程語言中的一個函數庫(或一個模塊、或一個類)。

WSDL 消息

<message>?元素定義一個操作的數據元素。

每個消息均由一個或多個部件組成。可以把這些部件比作傳統編程語言中一個函數調用的參數。

WSDL types

<types>?元素定義 web service 使用的數據類型。

為了最大程度的平臺中立性,WSDL 使用 XML Schema 語法來定義數據類型。

WSDL Bindings

<binding>?元素為每個端口定義消息格式和協議細節。

?

對于接口來說,接口文檔非常重要,它描述如何訪問接口。那么WSDL就可以看作Web Service接口的一種標準格式的“文檔”。我們通過閱讀WSDL就知道如何調用Web Service接口了。

?

UDDI ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

Universal Description, Discovery and Integration",可譯為通用描述、發現與集成服務,簡稱UDDI

WSDL用來描述了訪問特定的 Web Service的一些相關的信息,那么在互聯網上,或者是在企業的不同部門之間,如何來發現我們所需要的 Web Service呢?而 Web Service提供商又如何將自己開發的 Web Serivce公布到因特網上呢?這就需要使用到 UDDI 了。

UDDI 是一個獨立于平臺的框架,用于通過使用 Internet 來描述服務,發現企業,并對企業服務進行集成。

UDDI 指的是通用描述、發現與集成服務

UDDI 是一種用于存儲有關 web services 的信息的目錄。

UDDI 是一種由 WSDL 描述的 web services 界面的目錄。

UDDI 經由 SOAP 進行通信

UDDI 被構建入了微軟的 .NET 平臺

下面,提供兩張圖,體會一下UDDI的安裝與發布。

?

UDDI可以幫助 Web 服務提供商在互聯網上發布 Web services的信息。UDDI 是一種目錄服務,企業可以通過 UDDI 來注冊和搜索 Web services。

?

通過前面的介紹,SOAPWSDLUDDI就構成了web Service的三要素。

?

?

Web Services體系結構 ? ? ? ? ? ? ? ? ?

Web Serivce的體系結構中涉及到三個角色,一個是 Web Service提供者,一個是 Web Service中介,還有一個就是 Web Service請求者;同時還涉及到三類動作,即發布,查找,綁定,

  Web Service提供者:

可以發布 Web Service,并且對使用自身服務的請求進行響應,Web Service的擁有者,它會等待其他的服務或者是應用程序訪問自己。

  Web Service請求者:

也就是 Web Service功能的使用者,它通過服務注冊中心也就是 Web Service中介者查找到所需要的服務,再利用 SOAP?消息向 Web Service提供者發送請求以獲得服務。

  Web Service中介:

也稱為服務代理,用來注冊已經發布的 Web Service提供者,并對其進行分類,同時提供搜索服務,簡單來說的話,Web Service中介者的作用就是把一個 Web Service請求者和合適的 Web Service提供者聯系在一起,充當一個管理者的角色,一般是通過 UDDI來實現。

發布:

通過發布操作,可以使 Web?Serivce提供者向 Web Service中介注冊自己的功能以及訪問的接口。

發現(查找):

使得 Web Service請求者可以通過 Web Service中介者來查找到特定種類的 Web Service 接口。

綁定:

這里就是實現讓Web?Serivce請求者能夠使用Web Serivce提供者提供的Web Serivce接口。

?

============================================

好了,最后終于回答前面的問題了,Web Service相對于HTTP有什么優點?。

1.接口中實現的方法和要求參數一目了然

2.不用擔心大小寫問題

3.不用擔心中文urlencode問題

4.代碼中不用多次聲明認證(賬號,密碼)參數。

5.傳遞參數可以為數組,對象等

?

那么,第二個問題,Web Service能被HTTP替代么? 答案是肯定的。

===============================================

最后,花了這么多時間了解一個過時的技術,真是日了狗了!最近再研究接口測試, Web Service是個繞不開的技術。當然,我的了解還包含了Web Service的開發 和測試。

?

轉載于:https://www.cnblogs.com/fnng/p/5524801.html

總結

以上是生活随笔為你收集整理的Web Service概念梳理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。