細說WebService

交给时间發表於2024-08-24

細說WebService

簡介

WebService 是一個應用於客戶端、服務端,基於http協議的web應用程式,他有一個非常重要的特點,那就是可以跨語言、跨平臺進行遠端呼叫,可應用於分散式系統中的不同分支系統之間的遠端呼叫。W3C為Web Service制定了一套傳輸資料型別,使用xml進行描述,即XSD(XML Schema Datatypes),任何語言寫的web Service 介面在傳送資料的時候都要轉換成WebService標準的XSD傳送。

應用場景

異構系統:整體大的系統下,不同語言開發的不同子系統之間的互動

比如我們玩遊戲的時候,會檢測你是否已經成年,其中就會用到人臉識別,我們的遊戲和人臉識別就是兩個系統,如果我們多款遊戲都要去跟人臉識別系統做互動,而這些遊戲的服務端有用C++、有用GO、有用Python開發的,而我們的人臉識別的服務端是用Java開發的,這時候就可以考慮使用WebService來進行互動,當然肯定還有其他方法去處理這個問題,我們此處不過多贅述

webService三要素

SOAP:簡單物件訪問協議(Simple Object Access Protocol)

WSDL:網路服務描述語言(Web Services Description Language)

UDDI:統一 描述、發現和整合( Universal Description Discovery and Integration )

SOAP

簡單物件訪問協議(Simple Object Access Protocol)。Web Service採用標準的SOAP協議傳輸,SOAP協議是基於http的應用層協議傳輸xml資料。HTTP用於實現 SOAP 的RPC 風格的傳輸, 而xml是它的編碼模式。

SOAP由四個部分組成:

  • 封裝:它定義了一個框架模型,說明了具體內容以及內容的處理者,是可選的還是必須得
  • 編碼規則:它定義了一種序列化的機制,用於交換應用程式所定義的資料型別的例項
  • RPC表示:它定義了用於表示遠端過程呼叫和應答的協定
  • 定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定

SOAP訊息基本上是從傳送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP訊息都使用 XML 編碼。一條 SOAP訊息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文件。把 SOAP 繫結到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特徵庫的優點。在HTTP上傳送 SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的對映到 HTTP 語義。在使用 HTTP 作為協議繫結的場合中, RPC 請求對映到 HTTP 請求上,而 RPC 應答對映到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議繫結。SOAP也可以繫結到TCP和UDP協議上。

WSDL

WSDL是WebService的描述語言,是一種介面定義語言,用於描述WebService的介面資訊等,WSDL文件可以分為兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成。

WSDL 功能

怎樣向別人介紹你的Webservice有什麼功能,以及每個函式呼叫時的引數呢?你可能會自己寫一套文件,你甚至可能會口頭上告訴需要使用你的Webservice的人。這些非正式的方法至少都有一個嚴重的問題:當程式設計師坐到電腦前,想要使用你的Webservice的時候,他們的工具(如VisualStudio)無法給他們提供任何幫助,因為這些工具根本就不瞭解你的Webservice。解決方法是:用機器能閱讀的方式提供一個正式的描述文件。Webservice描述語言(WSDL)就是這樣一個基於XML的語言,用於描述Webservice及其函式、引數和返回值。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Webservice生成WSDL文件,又能匯入WSDL文件,生成呼叫相應Webservice的程式碼。

UDDI

UDDI是一種規範,它主要提供基於Web服務的註冊和發現機制,為Web服務提供三個重要的技術支援。

  • 標準、透明、專門描述Web服務的機制
  • 呼叫Web服務的機制
  • 可以訪問的Web服務註冊中心

UUDI其實可以理解為,企業之間的服務共享與彼此發現、互動,程式開發人員透過UDDI機制查詢分佈在網際網路上的Web Service,在獲取其WSDL檔案後,就可以在自己的程式中以SOAP呼叫的格式請求相應的服務了。由於開發人員一般都是呼叫內網服務,所以該技術的關注度並不高。

WebService和http介面呼叫的區別

  • 協議不同,SOAP協議比http協議更為複雜一些
  • 效率不同,http介面呼叫的速度往往比WebService效率更高一些
  • 處理資料複雜度不同,http主要透過PST、GET獲取資訊,WebService基於SOAP能夠處理更加複雜的資料型別
  • 跨域,http不能解決跨域問題,WebService則可以處理不同服務間的資訊傳輸問題

相關文章