當前位置:才華齋>設計>網頁設計>

WebServices簡介

網頁設計 閱讀(9.55K)

SOA ,即Service Oriented Architecture ,中文一般理解為面向服務的架構。既然說是一種架構的話,所以一般認為 SOA 是包含了執行環境、程式設計模型、架構風格和相關方法論等在內的一整套新的分散式軟體系統構造方法和環境,涵蓋服務的整個生命週期。而在 SOA 的架構風格中,服務是最核心的抽象手段。SOA 中的服務是構建在一些開放標準的基礎之上的,Web服務定義瞭如何在異構系統之間實現通訊的標準化方法,從而就使得 Web 服務可以跨越執行平臺和實現語言,同時也使得 Web 服務成為了實現 SOA 中服務的主要技術

WebServices簡介

有沒有一種辦法可以實現跨應用程式通訊和跨平臺通訊呢,也就是如何可以實現應用程式 A 可以和應用程式 B 的通訊?或者說如何實現Java 寫的應用程式和用開發的應用程式之間的通訊?拿騰訊QQ的天氣預報工具來舉例,天氣預報功能是如何實現的呢?有一種辦法,那就是騰訊公司放個衛星上天,並且在公司中成立一個氣象部門,天天關注於天氣,然後實時更新騰訊 QQ 的天氣預報資訊。確實,這種辦法確實行得通,但很蠢。

再舉一個跨平臺的例子,假如有兩個公司,一個公司專案使用. Net 開發,另一個使用 Java 開發,這兩個公司本來相互獨立,但是這兩個公司如果需要把兩個專案結合起來,兩個專案之間需要通訊,此時兩個專案基於不同的平臺。

第三個例子,一個公司使用的伺服器是 Windows Server 2008,那麼它如何和 IT 供應商的UNIX 或是 Linux 伺服器進行連線?

  WebServices特點介紹

WebServices 提供一個建立分散式應用的平臺,使得執行在不同作業系統和不同裝置上的軟體,或者是用不同的程式語言和不同廠商的軟體開發工具開發的軟體,所有可能的已開發和部署的軟體,能夠利用這一平臺實現分散式計算的目的。WebServices的思想是:使得應用程式也具有 Web 分散式程式設計模型的鬆散耦合性。

1. WebServices 是自包含的。即在客戶端不需要附加任何軟體,只要客戶機支援 HTTP 和XML 就 OK 了。

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到底是什麼?

WebServices是基於 XML 和 HTTP 的,(當然這是最基本的 WebServices ,也可以通過 HTTPS 或者是 SMTP 來實現通訊),不論Java平臺還是平臺開發(或者是是使用 Web 服務),這一切都和Web服務無關,只需要關注通過 HTTP 協議來傳輸 XML 就 OK了,至於這些 XML 是如何被服務提供者開發出來的或者這些 XML 是如何被服務請求者使用的(小編按:如何實現很重要,後面會提到),這些都和應用開發無關,這裡可以看出Web服務的另一個優勢,那就是跨語言跨平臺(實現協同工作),通過 Web 服務可以實現不同應用程式和不同平臺之間的通訊,Web服務允許獨立於實現服務的硬體或者是軟體平臺和編寫服務所使用程式語言來實現(小編按:WebServices對硬體基礎、軟體平臺、開發語言不關心)。

以上可以回答開頭引子中提出的三個問題,即:

1)QQ天氣預報問題:通過訪問氣象局釋出的天氣狀況的WebServices來實現

2)Java 應用程式和. Net應用程式之間的通訊

3)解決 Linux 或是UNIX 和 Windows Server 2008 之間進行連線問題。

另外通過使用不同的 Web 服務,我們可以從不同的平臺和作業系統進行訪問,從而提高不同應用程式共享資料和應用的能力。

  WebServices三種基本元素之SOAP

SOAP 即 Simple Object AccessProtocol,也就是簡單物件訪問協議。其指導理念是“唯一一個沒有發明任何新技術的技術”(小編按:通過XML和HTTP就可以實現),是一種用於訪問 Web 服務的協議。即SOAP基於XML和HTTP,其通過XML來實現訊息描述,然後再通過 HTTP 實現訊息傳輸。

SOAP 協議的一個重要特點是它獨立於底層傳輸機制,Web 服務應用程式可以根據需要選擇自己的資料傳輸協議,可以在傳送訊息時來確定相應傳輸機制。

由於 HTTP 協議本身的一些特點和侷限性,使得當 SOAP 使用HTTP 繫結的 Web 服務並不能滿足某些企業應用的需求。比如,HTTP 不是一個可靠傳輸協議,所以有可能在傳輸過程中出現問題,

然後 HTTP 協議基於Request/Response 模型,也就是說客戶端需要在等待響應訊息接收完成後才能繼續執行,從而容易出現時延的問題。

基於上面的這些需求,便需要選擇合適的傳輸協議了。

  WebServices三種基本元素之 WSDL

WSDL 即Web Services Description Language也就是Web服務描述語言,是基於 XML的用於描述 Web 服務以及如何訪問 Web 服務的語言。

服務提供者通過服務描述將所有用於訪問 Web服務的規範傳送給服務請求者,要實現 Web服務體系結構的鬆散耦合,服務描述是一個關鍵,不管是請求者還是服務提供者,通過服務描述便可以不必瞭解對方的底層平臺,程式語言等,服務描述與底層的 SOAP 基礎結構相結合,足以封裝服務請求者的應用程式和服務提供者的 Web服務之間的這個細節。

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

1. 服務所提供的操作

2. 如何訪問服務

3. 服務位於何處(通過 URL 來確定就 OK 了)

  WebServices三種基本元素之 UDDI

UDDI 即 Universal Description,Discovery and Integration,也就是通用的描述、發現以及整合,用來描述了訪問特定的Web服務的一些相關的資訊。

前面說到WSDL是用來描述了訪問特定的 Web 服務的一些相關的資訊,但是如何來發現我們所需要的 Web 服務,而 Web 服務提供商又如何將自己開發的 Web 服務公佈到因特網上?

這就需要使用到 UDDI,它是一個跨產業,跨平臺的開放性架構,可以幫助 Web 服務提供商在網際網路上釋出 Web 服務的資訊。

UDDI 是一種目錄服務,企業可以通過 UDDI 來註冊和搜尋 Web 服務,簡單來說,UDDI 就是一個目錄,只不過在這個目錄中存放的是一些關於 Web 服務的資訊而已。

小編按:WebServices三種基本元素在科普文裡的描述比較難懂,事實上這些理論描述和實際應用的感受完全不同。引用一個非常簡單的比喻,可能更加容易理解:

Web Services:是一個可以將應用程式變為web應用程式,將自己本地的應用程式資訊通過網路,釋出到網路當中,讓別人通過瀏覽器等訪問本地的資訊。

SOAP:是定義訪問Web Services的協議,也就是哪些是可以訪問的,怎樣的格式才能夠訪問,返回的格式又是什麼樣的,這些都是SOAP定義的。

WSDL:是描述SOAP協議的具體語言,用WSDL實現SOAP協議,把它寫成檔案,直接訪問。

UDDI:是把這些web services 收集和儲存起來,這樣當別人訪問這些資訊的時候就從UDDI中查詢,看有沒有這個資訊存在。