qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          SoapUI學(xué)習(xí)(1)- WebService基礎(chǔ)

          WebService
            它是一種構(gòu)建應(yīng)用程序的普遍模型,可以在任何支持網(wǎng)絡(luò)通信的操作系統(tǒng)中實施運行;
            它是一種新的web應(yīng)用程序分支,是自包含、自描述、模塊 化的應(yīng)用,可以發(fā)布、定位、通過web調(diào)用。
            Web Service是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù).各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標準數(shù)據(jù)格式(Http,XML,Soap)來訪問Web Service,通過Web Service內(nèi)部執(zhí)行得到所需結(jié)果.
            Web Service可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。
            ------------------
            在構(gòu)建和使用Web Service時,主要用到以下幾個關(guān)鍵的技術(shù)和規(guī)則:
            1.XML:描述數(shù)據(jù)的標準方法.
            2.SOAP:表示信息交換的協(xié)議.
            3.WSDL:Web服務(wù)描述語言.
            4.UDDI通用描述、發(fā)現(xiàn)與集成,它是一種獨立于平臺的,基于XML語言的用于在互聯(lián)網(wǎng)上描述商務(wù)的協(xié)議。
            http://www.webxml.com.cn/zh_cn/index.aspx   這個網(wǎng)站中有不少免費的WebService可用
            ------------------我個人覺得下面的這個理解起來更容易些,甚至我都覺得他有點想API,只是放到web中了而已-------------------------
            1,什么是 Web Service ?
            Web Service 就是一個網(wǎng)絡(luò)組件(一個可以通過網(wǎng)絡(luò)訪問的程序)。
            它有一個或多個端口(Port),這些端口用于接收客戶端的請求,并返回響應(yīng)
            請求和響應(yīng)的 都是一種基于XML的消息。 不過這種消息遵循特定的格式(SOAP )。
            2,怎樣調(diào)用 Web Service?
            可能這樣說不太準確,應(yīng)該是“怎樣調(diào)用Web Service中定義的操作 ”
            每個Web Service 都有一個描述文件(WSDL ),
            它描述 一個 Web Service 的如下方面:
            (1)服務(wù)的端口(接收SOAP消息的端口)
            (2)服務(wù)提供的操作
            (3)操作的輸入輸出格式的定義(通過XMLSchema 定義輸入輸出格式)
            有了Web Service 的描述文件(WSDL ),我們就知道怎樣調(diào)用這個Web Service 中定義的操作了。
            (1)通過服務(wù)提供的操作找到你想調(diào)用的操作
            (2)找到這個操作的輸入格式的定義(XMLSchema ),按照這種輸入格式構(gòu)造一個SOAP消息
            (3)將這個SOAP消息發(fā)送到服務(wù)的指定端口
            (4)準備接收一個從Web Service服務(wù)器返回的 SOAP 響應(yīng)吧 !
            3, Web Service服務(wù)器
            一個Web Service服務(wù)器,本質(zhì)上和一個Web服務(wù)器是相同的。
            它主要做下面這些事:
            --> 監(jiān)聽網(wǎng)絡(luò)端口(監(jiān)聽服務(wù)端口)
            --> 接收客戶端請求(接收SOAP請求)
            --> 解析客戶端請求(解析SOAP消息,將SOAP消息轉(zhuǎn)換為數(shù)據(jù)對象)
            --> 調(diào)用業(yè)務(wù)邏輯 (調(diào)用Web Service實現(xiàn)類的特定操作,參數(shù)是由SOAP消息轉(zhuǎn)換而來的數(shù)據(jù)對象)
            --> 生成響應(yīng) (將返回值轉(zhuǎn)換為SOAP消息)
            --> 返回響應(yīng) (返回SOAP響應(yīng))

            XML
            什么是 XML?
            ·  XML 指可擴展標記語言(EXtensible Markup Language)
            ·  XML 是一種標記語言,很類似 HTML
            ·  XML 的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
            ·  XML 標簽沒有被預(yù)定義。您需要自行定義標簽。
            ·  XML 被設(shè)計為具有自我描述性。
            ·  XML 是 W3C 的推薦標準
            XML 與 HTML 的主要差異
            XML 不是 HTML 的替代。
            XML 和 HTML 為不同的目的而設(shè)計:
            XML 被設(shè)計為傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內(nèi)容。
            HTML 被設(shè)計用來顯示數(shù)據(jù),其焦點是數(shù)據(jù)的外觀。
            HTML 旨在顯示信息,而 XML 旨在傳輸信息。
            沒有任何行為的 XML。XML 是不作為的。也許這有點難以理解,但是 XML 不會做任何事情。XML 被設(shè)計用來結(jié)構(gòu)化、存儲以及傳輸信息。
            下面是 John 寫給 George 的便簽,存儲為 XML:
          <note>
          <to>George</to>
          <from>John</from>
          <heading>Reminder</heading>
          <body>Don't forget the meeting!</body>
          </note>
            這個標簽有標題以及留言。它也包含了發(fā)送者和接受者的信息。但是,這個 XML 文檔仍然沒有做任何事情。它僅僅是包裝在 XML 標簽中的純粹的信息。我們需要編寫軟件或者程序,才能傳送、接收和顯示出這個文檔。
            XML 僅僅是純文本
            XML 沒什么特別的。它僅僅是純文本而已。有能力處理純文本的軟件都可以處理 XML。
            不過,能夠讀懂 XML 的應(yīng)用程序可以有針對性地處理 XML 的標簽。標簽的功能性意義依賴于應(yīng)用程序的特性。
            通過 XML 您可以發(fā)明自己的標簽
            上例中的標簽沒有在任何 XML 標準中定義過(比如 <to> 和 <from>)。這些標簽是由文檔的創(chuàng)作者發(fā)明的。這是因為 XML 沒有預(yù)定義的標簽。在 HTML 中使用的標簽(以及 HTML 的結(jié)構(gòu))是預(yù)定義的。HTML 文檔只使用在 HTML 標準中定義過的標簽(比如 <p> 、<h1> 等等)。XML 允許創(chuàng)作者定義自己的標簽和自己的文檔結(jié)構(gòu)。
            XML 不是對 HTML 的替代
            XML 是對 HTML 的補充。XML 不是對 HTML 的替代,理解這一點很重要。在大多數(shù) web 應(yīng)用程序中,XML 用于傳輸數(shù)據(jù),而 HTML 用于格式化并顯示數(shù)據(jù)。
            XML 應(yīng)用于 web 開發(fā)的許多方面,常用于簡化數(shù)據(jù)的存儲和共享。
            XML 把數(shù)據(jù)從 HTML 分離
            如果你需要在 HTML 文檔中顯示動態(tài)數(shù)據(jù),那么每當數(shù)據(jù)改變時將花費大量的時間來編輯 HTML。通過 XML,數(shù)據(jù)能夠存儲在獨立的 XML 文件中。這樣你就可以專注于使用 HTML 進行布局和顯示,并確保修改底層數(shù)據(jù)不再需要對 HTML 進行任何的改變。通過使用幾行 JavaScript,你就可以讀取一個外部 XML 文件,然后更新 HTML 中的數(shù)據(jù)內(nèi)容。
            XML 簡化數(shù)據(jù)共享
            在真實的世界中,計算機系統(tǒng)和數(shù)據(jù)使用不兼容的格式來存儲數(shù)據(jù)。XML 數(shù)據(jù)以純文本格式進行存儲,因此提供了一種獨立于軟件和硬件的數(shù)據(jù)存儲方法。這讓創(chuàng)建不同應(yīng)用程序可以共享的數(shù)據(jù)變得更加容易。
            XML 簡化數(shù)據(jù)傳輸
            通過 XML,可以在不兼容的系統(tǒng)之間輕松地交換數(shù)據(jù)。對開發(fā)人員來說,其中一項最費時的挑戰(zhàn)一直是在因特網(wǎng)上的不兼容系統(tǒng)之間交換數(shù)據(jù)。由于可以通過各種不兼容的應(yīng)用程序來讀取數(shù)據(jù),以 XML 交換數(shù)據(jù)降低了這種復(fù)雜性。
            XML 簡化平臺的變更
            升級到新的系統(tǒng)(硬件或軟件平臺),總是非常費時的。必須轉(zhuǎn)換大量的數(shù)據(jù),不兼容的數(shù)據(jù)經(jīng)常會丟失。XML 數(shù)據(jù)以文本格式存儲。這使得 XML 在不損失數(shù)據(jù)的情況下,更容易擴展或升級到新的操作系統(tǒng)、新應(yīng)用程序或新的瀏覽器。
            XML 使您的數(shù)據(jù)更有用
            由于 XML 獨立于硬件、軟件以及應(yīng)用程序,XML 使您的數(shù)據(jù)更可用,也更有用。不同的應(yīng)用程序都能夠訪問您的數(shù)據(jù),不僅僅在 HTML 頁中,也可以從 XML 數(shù)據(jù)源中進行訪問。通過 XML,您的數(shù)據(jù)可供各種閱讀設(shè)備使用(手持的計算機、語音設(shè)備、新聞閱讀器等),還可以供盲人或其他殘障人士使用。
            XML 用于創(chuàng)建新的 Internet 語言
            很多新的 Internet 語言是通過 XML 創(chuàng)建的:
            其中的例子包括:
            ·  XHTML - 最新的 HTML 版本
            ·  WSDL - 用于描述可用的 web service
            ·  WAP 和 WML - 用于手持設(shè)備的標記語言
            ·  RSS - 用于 RSS feed 的語言
            ·  RDF 和 OWL - 用于描述資源和本體
            ·  SMIL - 用于描述針針對 web 的多媒體
            假如開發(fā)人員都是理性的
            假如他們都是理性的,就讓未來的應(yīng)用程序使用 XML 來交換數(shù)據(jù)吧。
            未來也許會出現(xiàn)某種字處理軟件、電子表格程序以及數(shù)據(jù)庫,它們可以使用純XML
           WSDL
            什么是 WSDL?
            ·  WSDL 指網(wǎng)絡(luò)服務(wù)描述語言
            ·  WSDL 使用 XML 編寫
            ·  WSDL 是一種 XML 文檔
            ·  WSDL 用于描述網(wǎng)絡(luò)服務(wù)
            ·  WSDL 也可用于定位網(wǎng)絡(luò)服務(wù)
            ·  WSDL 還不是 W3C 標準
            WSDL 可描述網(wǎng)絡(luò)服務(wù)(Web Services)
            WSDL 指網(wǎng)絡(luò)服務(wù)描述語言 (Web Services Description Language)。
            WSDL 是一種使用 XML 編寫的文檔。這種文檔可描述某個 Web service。它可規(guī)定服務(wù)的位置,以及此服務(wù)提供的操作(或方法)。
            WSDL 文檔僅僅是一個簡單的 XML 文檔。
            它包含一系列描述某個 web service 的定義。
            WSDL 文檔結(jié)構(gòu)
            WSDL 文檔是利用這些主要的元素來描述某個 web service 的:
            元素
            定義
          <portType>
          web service 執(zhí)行的操作
          <message>
          web service 使用的消息
          <types>
          web service 使用的數(shù)據(jù)類型
          <binding>
          web service 使用的通信協(xié)議
            一個 WSDL 文檔的主要結(jié)構(gòu)是類似這樣的:
          <definitions>
          <types>
          definition of types........
          </types>
          <message>
          definition of a message....
          </message>
          <portType>
          definition of a port.......
          </portType>
          <binding>
          definition of a binding....
          </binding>
          </definitions>
            PS:實際上以上的結(jié)構(gòu),可以用瀏覽器打開一個具體的webservice來看,比如以下查詢手機歸屬地的wsdl格式的webservice
            http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl
            WSDL 文檔可包含其它的元素,比如 extension 元素,以及一個 service 元素,此元素可把若干個 web services 的定義組合在一個單一的 WSDL 文檔中。
            WSDL 端口
            <portType> 元素是最重要的 WSDL 元素。 它可描述一個 web service、可被執(zhí)行的操作,以及相關(guān)的消息。 可以把 <portType> 元素比作傳統(tǒng)編程語言中的一個函數(shù)庫(或一個模塊、或一個類)。
            WSDL 消息
            <message> 元素定義一個操作的數(shù)據(jù)元素。 每個消息均由一個或多個部件組成。可以把這些部件比作傳統(tǒng)編程語言中一個函數(shù)調(diào)用的參數(shù)。
            WSDL types
            <types> 元素定義 web service 使用的數(shù)據(jù)類型。 為了最大程度的平臺中立性,WSDL 使用 XML Schema 語法來定義數(shù)據(jù)類型。
            WSDL Bindings
            <binding> 元素為每個端口定義消息格式和協(xié)議細節(jié)。
            WSDL 實例
            這是某個 WSDL 文檔的簡化的片段:
          <message name="getTermRequest">
          <part name="term" type="xs:string"/>
          </message>
          <message name="getTermResponse">
          <part name="value" type="xs:string"/>
          </message>
          <portType name="glossaryTerms">
          <operation name="getTerm">
          <input message="getTermRequest"/>
          <output message="getTermResponse"/>
          </operation>
          </portType>
            在這個例子中,<portType> 元素把 "glossaryTerms" 定義為某個端口的名稱,把 "getTerm" 定義為某個操作的名稱。
            操作 "getTerm" 擁有一個名為 "getTermRequest" 的輸入消息,以及一個名為 "getTermResponse" 的輸出消息。
            <message> 元素可定義每個消息的部件,以及相關(guān)聯(lián)的數(shù)據(jù)類型。
            對比傳統(tǒng)的編程,glossaryTerms 是一個函數(shù)庫,而 "getTerm" 是帶有輸入?yún)?shù) "getTermRequest" 和返回參數(shù) getTermResponse 的一個函數(shù)。

          posted on 2013-11-28 11:33 順其自然EVO 閱讀(551) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 荥阳市| 宜章县| 汶川县| 华蓥市| 克山县| 罗甸县| 抚远县| 衡水市| 五大连池市| 泰来县| 清新县| 太保市| 庆元县| 永康市| 佛山市| 东丽区| 安阳县| 佛学| 交口县| 西吉县| 大庆市| 泰安市| 十堰市| 金川县| 普兰县| 盐山县| 长治县| 长治市| 大埔区| 綦江县| 贺州市| 营山县| 许昌县| 余江县| 洪泽县| 亚东县| 榆树市| 开平市| 彰化县| 黄龙县| 黑河市|