中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      SOAP Web服務介紹

      時間:2024-10-31 02:54:17 Web Services 我要投稿
      • 相關(guān)推薦

      SOAP Web服務介紹

        當今最為常見的兩種 Web 服務類型分別是: REST 和 SOAP 。不過,從趨勢來看,越來越多人已經(jīng)開始使用 REST 風格的 Web 服務。而 SOAP 大多也開始或已經(jīng)轉(zhuǎn)型 REST,應該說 REST 會慢慢成為主流。這篇文章不會對 REST 介紹太多,主要的重點還是介紹一下 SOAP 風格的 Web 服務。

        Web Service 三要素

        實際上,現(xiàn)在說 “Web Service 三要素”應該是不算很準確了,不過這個概念一直這樣沿用,而且本文我們?yōu)榱烁芮宄U釋 SOAP Web 服務,那么就這樣定義。

        Web Service 的三個要素分別是:

        SOAP(Simple Object Access Protoco) 簡單對象訪問協(xié)議;

        WSDL(Web Services Description Language) 網(wǎng)絡服務描述語言;

        UDDI(Universal Description Discovery and Integration)一個用來發(fā)布和搜索 WEB 服務的協(xié)議(非必須);

        SOAP 用來描述傳遞信息的格式規(guī)范, WSDL 用來描述如何訪問具體的接口(比如它會告訴你該服務有哪些接口可以使用,參數(shù)是什么等等), UDDI 用來管理、分發(fā)和查詢 Web Service。下面我們將逐一詳細介紹這三個要素,并通過結(jié)合實例來進行闡釋。

        為了把這三個要素說得更清楚,我們將會使用一個免費的 SOAP Web 服務作為例子進行闡述。該服務只提供一個接口即:根據(jù) QQ 號,獲取 QQ 在線狀態(tài)。查看該服務

        SOAP

        它是一個協(xié)議,可以簡單的理解為:它定義了一個基于 XML 的可擴展消息信封格式。因為客戶端與服務器進行交互,由于大家的平臺和應用程序都不一樣,所以大家約定都采用 SOAP 這個協(xié)議來規(guī)范交互時的需要傳遞的消息。

        請求接口時,發(fā)送的消息例子:

        <?xml version="1.0" encoding="utf-8"?>

        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

        <soap:Body>

        <qqCheckOnline xmlns="http://WebXml.com.cn/">

        <qqCode>8698053</qqCode>

        </qqCheckOnline>

        </soap:Body>

        </soap:Envelope>

        接口響應時,返回的消息例子:

        <?xml version="1.0" encoding="utf-8"?>

        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

        <soap:Body>

        <qqCheckOnlineResponse xmlns="http://WebXml.com.cn/">

        <qqCheckOnlineResult>Y</qqCheckOnlineResult>

        </qqCheckOnlineResponse>

        </soap:Body>

        </soap:Envelope>

        注:以上例子是使用 SOAP 1.1 發(fā)送的消息,SOAP 1.2 發(fā)送的消息格式其實大同小異,具體自己查看接口文檔。

        下面對它結(jié)構(gòu)進行詳細說明。

        XML 聲明

        <?xml version="1.0" encoding="utf-8"?>

        該行是 XML 聲明。它定義 XML 的版本 (1.0) 和所使用的編碼(utf-8)。

        Envelope 元素

        <soap:Envelope

        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:xsd="http://www.w3.org/2001/XMLSchema">

        ....

        </soap:Envelope>

        Envelope 元素是 SOAP 消息的固定根元素,SOAP 協(xié)議規(guī)定的,不能變,其中 xmlns 是 XML Namespace 的縮寫,表示 XML 命名空間。xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 是 Envelope的一個屬性,它表示定義個以soap 為前綴的命名空間 http://schemas.xmlsoap.org/soap/envelope/,即命名空間的名字是:http://schemas.xmlsoap.org/soap/envelope/,而它的前綴是 soap,這樣子就把 soap 前綴與該命名空間進行了綁定。即任何用 soap 為前綴的元素都屬于該命名空間的,包括根元素 Envelope 。舉個例子:

        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

        <soap:Body>

        <qqCheckOnline xmlns="http://WebXml.com.cn/">

        <qqCode>8698053</qqCode>

        </qqCheckOnline>

        </soap:Body>

        </soap:Envelope>

        其中,Envelope 和 Body 元素就是以 soap 為前綴的,那么 Envelope 和 Body 元素都是屬于http://schemas.xmlsoap.org/soap/envelope/ 這個命名空間的。

        同時,SOAP 協(xié)議中規(guī)定,SOAP 消息必須使用 SOAP Envelope 命名空間,所以http://schemas.xmlsoap.org/soap/envelope/ 這個命名空間是固定的不能變(注意:這里只針對 SOAP 1.1 版本,SOAP 1.2 會有所不同)。所有 SOAP 消息元素,比如:Envelope、Header、Body、Fault 也都必須屬于該命名空間。

        Body 元素

        <soap:Body>

        <qqCheckOnline xmlns="http://WebXml.com.cn/">

        <qqCode>8698053</qqCode>

        </qqCheckOnline>

        </soap:Body>

        Body 元素里面,一般都是放一些請求和響應的內(nèi)容。qqCheckOnline 表示要調(diào)用的接口方法,而 qqCode 就是調(diào)用該方法時,傳入的參數(shù),當然參數(shù)可以有多個。

        其中,qqCheckOnline 元素上也定義了一個命名空間 http://WebXml.com.cn/。值得注意的是,這里在定義命名空間時,并沒有設置命名空間前綴(namespace prefix)。這種設置方式,會把當前元素及其所有子元素,都歸屬于該命名空間。了解 XML 命名空間。

        我們看到,SOAP 消息元素和應用程序本身的元素是屬于不同的命名空間,這樣有利于把 SOAP 消息元素與其他元素區(qū)分開來,當然也防止了與自定義元素重名的問題。

        Header 元素

        <?xml version="1.0" encoding="utf-8"?>

        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

        <soap:Header>

        <AuthenHeader xmlns="http://www.example.com">

        <sAuthenticate>string</sAuthenticate>

        </AuthenHeader>

        </soap:Header>

        <soap:Body>

        ......

        </soap:Body>

        </soap:Envelope>

        有些接口需要提供 Header 元素,它和 Body 信息一起發(fā)送,它一般用于身份驗證等作用。例子中的 AuthenHeader 和sAuthenticate 都是接口自定義的參數(shù)。

        Fault 元素

        當調(diào)用服務發(fā)生錯誤時,錯誤信息一般會被放置在 Fault 元素內(nèi)。例如:

        <?xml version="1.0" encoding="utf-8"?>

        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

        <soap:Body>

        <soap:Fault>

        <faultcode>soap:Client</faultcode>

        <faultstring>Input string was not in a correct format.</faultstring>

        <detail/>

        </soap:Fault>

        </soap:Body>

        </soap:Envelope>

        Fault 元素內(nèi)還有 faultcode、faultstring、detail,用于描述錯誤信息用的。在上一篇文章:《SOAP 介紹》中已經(jīng)對該知識點進行了比較詳細的說明,有興趣可以看看。

        WSDL

        一個 XML 格式的文檔。它用于描述該服務有哪些可用方法、參數(shù)的數(shù)據(jù)類型、命名空間等等信息。它的目的是讓你知道該如何使用該服務,包括調(diào)用的各種細節(jié)信息。WSDL 文檔通常用來輔助生成服務器和客戶端代碼及配置信息。

        契約先行與代碼先行模式

        在開發(fā) Web Service 過程中有兩種實現(xiàn)模式:契約先行(Contract first)模式和代碼先行(Code first)模式。

        契約先行模式:首要工作是定義針對這個 Web 服務的接口的 WSDL(Web Services Description Language,Web 服務描述語言 ) 文件。WSDL 文件中描述了 Web 服務的位置,可提供的操作集,以及其他一些屬性。WSDL 文件也就是 Web 服務的 “契約”。“契約” 訂立之后,再據(jù)此進行服務器端和客戶端的應用程序開發(fā)。

        代碼先行模式:與契約先行模式不同,代碼先行模式中,第一步工作是實現(xiàn) Web 服務端,然后根據(jù)服務端的實現(xiàn),用某種方法(自動生成或手工編寫)生成 WSDL 文件。

        實際上,一個 WSDL 文件也挺復雜的,一般自己也不會去直接看這個文件,而是需要用到某個方法時,直接看該方法的調(diào)用說明就好。比如:獲得騰訊QQ在線狀態(tài)

        UDDI

        UDDI 是一個專門用來管理 Web 服務的地方。Web Service 服務提供商可以通過兩種方式來暴露它的 WSDL 文件地址:

        注冊到 UDDI 服務器,以便被人查找;

        直接告訴給客戶端調(diào)用者;

        是否需要注冊到 UDDI 實際上是可選的,一般公司內(nèi)部使用的服務,也不會注冊到 UDDI。只有那些希望所有人都知道該服務的地址,才會注冊到 UDDI。

        最后

        這篇文章寫得有點亂了,主要還是自己對 SOAP 的了解還不夠,最起碼我并沒有真正開發(fā)過 SOAP 服務。不過沒關(guān)系吧,慢慢來,文章可以隨著知識的增長慢慢潤色。上文其實有一些問題沒有說清楚的,比如說:SOAP 服務的適合用在哪里,不適合用在哪里等等。如果你有興趣,可以看看文章最后的幾篇參考文獻。

      【SOAP Web服務介紹】相關(guān)文章:

      SOAP語法07-06

      Windows 2003的Web服務器配置方法介紹07-19

      關(guān)于網(wǎng)格與Web服務的結(jié)合09-30

      Web服務中的異常處理09-17

      安裝Web服務器07-16

      教你制作iPhone的SOAP應用07-25

      WEB服務器的優(yōu)化方法10-30

      Web服務器常規(guī)維護10-16

      關(guān)于web個人介紹的范文10-11

      java實現(xiàn)web服務器的方法10-14

      主站蜘蛛池模板: 国产一级黄色片在线观看| 国产精品国产三级国产在线观| 盐津县| 91精品在线免费| 中文字幕人妻一区二区三区四区| 城市| AV中文码一区二区三区| 最新日韩av在线不卡| 精品中文字幕一二三四区人妻| 永久免费不卡在线观看黄网站| 精品国产日韩无 影视| 日韩最新在线不卡av| 中文字幕日韩人妻高清在线| 中国少妇久久一区二区| 永州市| 一区二区av日韩免费| 亚洲av午夜福利精品一区二区| 国产亚洲欧美另类久久久| 真人在线射美女视频在线观看| 国产激情视频在线| 浠水县| 凤庆县| 昂仁县| 民勤县| 固原市| 宣威市| 灵山县| 渑池县| 准格尔旗| 吉林省| 亚洲二区三区在线播放| 亚洲美女国产精品久久久久久久久| 午夜无码片在线观看影院y | 久久亚洲日本免费高清一区| 绥宁县| 亚洲精品国产精品av| 乐亭县| 久久精品国产亚洲av麻豆毛片| 大白屁股流白浆一区二区三区| 灵丘县| 韩国无码精品人妻一区二|