SoapUI學習(1)- WebService基礎
WebService 它是一種構建應用程序的普遍模型,可以在任何支持網絡通信的操作系統中實施運行; 它是一種新的web應用程序分支,是自包含、自描述、模塊 化的應用,可以發布、定位、通過web調用。 Web Service是一個應用組件,它邏輯性的為其他應用程序提供數據與服務.各應用程序通過網絡協議和規定的一些標準數據格式(Http,XML,Soap)來訪問Web Service,通過Web Service內部執行得到所需結果. Web Service可以執行從簡單的請求到復雜商務處理的任何功能。一旦部署以后,其他Web Service應用程序可以發現并調用它部署的服務。 ------------------ 在構建和使用Web Service時,主要用到以下幾個關鍵的技術和規則: 1.XML:描述數據的標準方法. 2.SOAP:表示信息交換的協議. 3.WSDL:Web服務描述語言. 4.UDDI通用描述、發現與集成,它是一種獨立于平臺的,基于XML語言的用于在互聯網上描述商務的協議。 http://www.webxml.com.cn/zh_cn/index.aspx 這個網站中有不少免費的WebService可用 ------------------我個人覺得下面的這個理解起來更容易些,甚至我都覺得他有點想API,只是放到web中了而已------------------------- 1,什么是 Web Service ? Web Service 就是一個網絡組件(一個可以通過網絡訪問的程序)。 它有一個或多個端口(Port),這些端口用于接收客戶端的請求,并返回響應 請求和響應的 都是一種基于XML的消息。 不過這種消息遵循特定的格式(SOAP )。 2,怎樣調用 Web Service? 可能這樣說不太準確,應該是“怎樣調用Web Service中定義的操作 ” 每個Web Service 都有一個描述文件(WSDL ), 它描述 一個 Web Service 的如下方面: ?。?)服務的端口(接收SOAP消息的端口) ?。?)服務提供的操作 ?。?)操作的輸入輸出格式的定義(通過XMLSchema 定義輸入輸出格式) 有了Web Service 的描述文件(WSDL ),我們就知道怎樣調用這個Web Service 中定義的操作了。 ?。?)通過服務提供的操作找到你想調用的操作 ?。?)找到這個操作的輸入格式的定義(XMLSchema ),按照這種輸入格式構造一個SOAP消息 ?。?)將這個SOAP消息發送到服務的指定端口 ?。?)準備接收一個從Web Service服務器返回的 SOAP 響應吧 ! 3, Web Service服務器 一個Web Service服務器,本質上和一個Web服務器是相同的。 它主要做下面這些事: --> 監聽網絡端口(監聽服務端口) --> 接收客戶端請求(接收SOAP請求) --> 解析客戶端請求(解析SOAP消息,將SOAP消息轉換為數據對象) --> 調用業務邏輯 (調用Web Service實現類的特定操作,參數是由SOAP消息轉換而來的數據對象) --> 生成響應 (將返回值轉換為SOAP消息) --> 返回響應 (返回SOAP響應)
XML 什么是 XML? · XML 指可擴展標記語言(EXtensible Markup Language) · XML 是一種標記語言,很類似 HTML · XML 的設計宗旨是傳輸數據,而非顯示數據 · XML 標簽沒有被預定義。您需要自行定義標簽。 · XML 被設計為具有自我描述性。 · XML 是 W3C 的推薦標準 XML 與 HTML 的主要差異 XML 不是 HTML 的替代。 XML 和 HTML 為不同的目的而設計: XML 被設計為傳輸和存儲數據,其焦點是數據的內容。 HTML 被設計用來顯示數據,其焦點是數據的外觀。 HTML 旨在顯示信息,而 XML 旨在傳輸信息。 沒有任何行為的 XML。XML 是不作為的。也許這有點難以理解,但是 XML 不會做任何事情。XML 被設計用來結構化、存儲以及傳輸信息。 下面是 John 寫給 George 的便簽,存儲為 XML:<note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>
這個標簽有標題以及留言。它也包含了發送者和接受者的信息。但是,這個 XML 文檔仍然沒有做任何事情。它僅僅是包裝在 XML 標簽中的純粹的信息。我們需要編寫軟件或者程序,才能傳送、接收和顯示出這個文檔。 XML 僅僅是純文本 XML 沒什么特別的。它僅僅是純文本而已。有能力處理純文本的軟件都可以處理 XML。 不過,能夠讀懂 XML 的應用程序可以有針對性地處理 XML 的標簽。標簽的功能性意義依賴于應用程序的特性。 通過 XML 您可以發明自己的標簽 上例中的標簽沒有在任何 XML 標準中定義過(比如 <to> 和 <from>)。這些標簽是由文檔的創作者發明的。這是因為 XML 沒有預定義的標簽。在 HTML 中使用的標簽(以及 HTML 的結構)是預定義的。HTML 文檔只使用在 HTML 標準中定義過的標簽(比如 <p> 、<h1> 等等)。XML 允許創作者定義自己的標簽和自己的文檔結構。 XML 不是對 HTML 的替代 XML 是對 HTML 的補充。XML 不是對 HTML 的替代,理解這一點很重要。在大多數 web 應用程序中,XML 用于傳輸數據,而 HTML 用于格式化并顯示數據。 XML 應用于 web 開發的許多方面,常用于簡化數據的存儲和共享。 XML 把數據從 HTML 分離 如果你需要在 HTML 文檔中顯示動態數據,那么每當數據改變時將花費大量的時間來編輯 HTML。通過 XML,數據能夠存儲在獨立的 XML 文件中。這樣你就可以專注于使用 HTML 進行布局和顯示,并確保修改底層數據不再需要對 HTML 進行任何的改變。通過使用幾行 JavaScript,你就可以讀取一個外部 XML 文件,然后更新 HTML 中的數據內容。 XML 簡化數據共享 在真實的世界中,計算機系統和數據使用不兼容的格式來存儲數據。XML 數據以純文本格式進行存儲,因此提供了一種獨立于軟件和硬件的數據存儲方法。這讓創建不同應用程序可以共享的數據變得更加容易。 XML 簡化數據傳輸 通過 XML,可以在不兼容的系統之間輕松地交換數據。對開發人員來說,其中一項最費時的挑戰一直是在因特網上的不兼容系統之間交換數據。由于可以通過各種不兼容的應用程序來讀取數據,以 XML 交換數據降低了這種復雜性。 XML 簡化平臺的變更 升級到新的系統(硬件或軟件平臺),總是非常費時的。必須轉換大量的數據,不兼容的數據經常會丟失。XML 數據以文本格式存儲。這使得 XML 在不損失數據的情況下,更容易擴展或升級到新的操作系統、新應用程序或新的瀏覽器。 XML 使您的數據更有用 由于 XML 獨立于硬件、軟件以及應用程序,XML 使您的數據更可用,也更有用。不同的應用程序都能夠訪問您的數據,不僅僅在 HTML 頁中,也可以從 XML 數據源中進行訪問。通過 XML,您的數據可供各種閱讀設備使用(手持的計算機、語音設備、新聞閱讀器等),還可以供盲人或其他殘障人士使用。 XML 用于創建新的 Internet 語言 很多新的 Internet 語言是通過 XML 創建的: 其中的例子包括: · XHTML - 最新的 HTML 版本 · WSDL - 用于描述可用的 web service · WAP 和 WML - 用于手持設備的標記語言 · RSS - 用于 RSS feed 的語言 · RDF 和 OWL - 用于描述資源和本體 · SMIL - 用于描述針針對 web 的多媒體 假如開發人員都是理性的 假如他們都是理性的,就讓未來的應用程序使用 XML 來交換數據吧。 未來也許會出現某種字處理軟件、電子表格程序以及數據庫,它們可以使用純XML WSDL 什么是 WSDL? · WSDL 指網絡服務描述語言 · WSDL 使用 XML 編寫 · WSDL 是一種 XML 文檔 · WSDL 用于描述網絡服務 · WSDL 也可用于定位網絡服務 · WSDL 還不是 W3C 標準 WSDL 可描述網絡服務(Web Services) WSDL 指網絡服務描述語言 (Web Services Description Language)。 WSDL 是一種使用 XML 編寫的文檔。這種文檔可描述某個 Web service。它可規定服務的位置,以及此服務提供的操作(或方法)。 WSDL 文檔僅僅是一個簡單的 XML 文檔。 它包含一系列描述某個 web service 的定義。 WSDL 文檔結構 WSDL 文檔是利用這些主要的元素來描述某個 web service 的: 元素 定義<portType>web service 執行的操作<message>web service 使用的消息<types>web service 使用的數據類型<binding>web service 使用的通信協議
一個 WSDL 文檔的主要結構是類似這樣的:<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:實際上以上的結構,可以用瀏覽器打開一個具體的webservice來看,比如以下查詢手機歸屬地的wsdl格式的webservice http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl WSDL 文檔可包含其它的元素,比如 extension 元素,以及一個 service 元素,此元素可把若干個 web services 的定義組合在一個單一的 WSDL 文檔中。 WSDL 端口 <portType> 元素是最重要的 WSDL 元素。 它可描述一個 web service、可被執行的操作,以及相關的消息。 可以把 <portType> 元素比作傳統編程語言中的一個函數庫(或一個模塊、或一個類)。 WSDL 消息 <message> 元素定義一個操作的數據元素。 每個消息均由一個或多個部件組成??梢园堰@些部件比作傳統編程語言中一個函數調用的參數。 WSDL types <types> 元素定義 web service 使用的數據類型。 為了最大程度的平臺中立性,WSDL 使用 XML Schema 語法來定義數據類型。 WSDL Bindings <binding> 元素為每個端口定義消息格式和協議細節。
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> 元素可定義每個消息的部件,以及相關聯的數據類型。 對比傳統的編程,glossaryTerms 是一個函數庫,而 "getTerm" 是帶有輸入參數 "getTermRequest" 和返回參數 getTermResponse 的一個函數。
XML
什么是 XML?
· XML 指可擴展標記語言(EXtensible Markup Language)
· XML 是一種標記語言,很類似 HTML
· XML 的設計宗旨是傳輸數據,而非顯示數據
· XML 標簽沒有被預定義。您需要自行定義標簽。
· XML 被設計為具有自我描述性。
· XML 是 W3C 的推薦標準
XML 與 HTML 的主要差異
XML 不是 HTML 的替代。
XML 和 HTML 為不同的目的而設計:
XML 被設計為傳輸和存儲數據,其焦點是數據的內容。
HTML 被設計用來顯示數據,其焦點是數據的外觀。
HTML 旨在顯示信息,而 XML 旨在傳輸信息。
沒有任何行為的 XML。XML 是不作為的。也許這有點難以理解,但是 XML 不會做任何事情。XML 被設計用來結構化、存儲以及傳輸信息。
下面是 John 寫給 George 的便簽,存儲為 XML:
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> |
這個標簽有標題以及留言。它也包含了發送者和接受者的信息。但是,這個 XML 文檔仍然沒有做任何事情。它僅僅是包裝在 XML 標簽中的純粹的信息。我們需要編寫軟件或者程序,才能傳送、接收和顯示出這個文檔。
XML 僅僅是純文本
XML 沒什么特別的。它僅僅是純文本而已。有能力處理純文本的軟件都可以處理 XML。
不過,能夠讀懂 XML 的應用程序可以有針對性地處理 XML 的標簽。標簽的功能性意義依賴于應用程序的特性。
通過 XML 您可以發明自己的標簽
上例中的標簽沒有在任何 XML 標準中定義過(比如 <to> 和 <from>)。這些標簽是由文檔的創作者發明的。這是因為 XML 沒有預定義的標簽。在 HTML 中使用的標簽(以及 HTML 的結構)是預定義的。HTML 文檔只使用在 HTML 標準中定義過的標簽(比如 <p> 、<h1> 等等)。XML 允許創作者定義自己的標簽和自己的文檔結構。
XML 不是對 HTML 的替代
XML 是對 HTML 的補充。XML 不是對 HTML 的替代,理解這一點很重要。在大多數 web 應用程序中,XML 用于傳輸數據,而 HTML 用于格式化并顯示數據。
XML 應用于 web 開發的許多方面,常用于簡化數據的存儲和共享。
XML 把數據從 HTML 分離
如果你需要在 HTML 文檔中顯示動態數據,那么每當數據改變時將花費大量的時間來編輯 HTML。通過 XML,數據能夠存儲在獨立的 XML 文件中。這樣你就可以專注于使用 HTML 進行布局和顯示,并確保修改底層數據不再需要對 HTML 進行任何的改變。通過使用幾行 JavaScript,你就可以讀取一個外部 XML 文件,然后更新 HTML 中的數據內容。
XML 簡化數據共享
在真實的世界中,計算機系統和數據使用不兼容的格式來存儲數據。XML 數據以純文本格式進行存儲,因此提供了一種獨立于軟件和硬件的數據存儲方法。這讓創建不同應用程序可以共享的數據變得更加容易。
XML 簡化數據傳輸
通過 XML,可以在不兼容的系統之間輕松地交換數據。對開發人員來說,其中一項最費時的挑戰一直是在因特網上的不兼容系統之間交換數據。由于可以通過各種不兼容的應用程序來讀取數據,以 XML 交換數據降低了這種復雜性。
XML 簡化平臺的變更
升級到新的系統(硬件或軟件平臺),總是非常費時的。必須轉換大量的數據,不兼容的數據經常會丟失。XML 數據以文本格式存儲。這使得 XML 在不損失數據的情況下,更容易擴展或升級到新的操作系統、新應用程序或新的瀏覽器。
XML 使您的數據更有用
由于 XML 獨立于硬件、軟件以及應用程序,XML 使您的數據更可用,也更有用。不同的應用程序都能夠訪問您的數據,不僅僅在 HTML 頁中,也可以從 XML 數據源中進行訪問。通過 XML,您的數據可供各種閱讀設備使用(手持的計算機、語音設備、新聞閱讀器等),還可以供盲人或其他殘障人士使用。
XML 用于創建新的 Internet 語言
很多新的 Internet 語言是通過 XML 創建的:
其中的例子包括:
· XHTML - 最新的 HTML 版本
· WSDL - 用于描述可用的 web service
· WAP 和 WML - 用于手持設備的標記語言
· RSS - 用于 RSS feed 的語言
· RDF 和 OWL - 用于描述資源和本體
· SMIL - 用于描述針針對 web 的多媒體
假如開發人員都是理性的
假如他們都是理性的,就讓未來的應用程序使用 XML 來交換數據吧。
未來也許會出現某種字處理軟件、電子表格程序以及數據庫,它們可以使用純XML
WSDL
什么是 WSDL?
· WSDL 指網絡服務描述語言
· WSDL 使用 XML 編寫
· WSDL 是一種 XML 文檔
· WSDL 用于描述網絡服務
· WSDL 也可用于定位網絡服務
· WSDL 還不是 W3C 標準
WSDL 可描述網絡服務(Web Services)
WSDL 指網絡服務描述語言 (Web Services Description Language)。
WSDL 是一種使用 XML 編寫的文檔。這種文檔可描述某個 Web service。它可規定服務的位置,以及此服務提供的操作(或方法)。
WSDL 文檔僅僅是一個簡單的 XML 文檔。
它包含一系列描述某個 web service 的定義。
WSDL 文檔結構
WSDL 文檔是利用這些主要的元素來描述某個 web service 的:
元素
定義
<portType> web service 執行的操作 <message> web service 使用的消息 <types> web service 使用的數據類型 <binding> web service 使用的通信協議 |
一個 WSDL 文檔的主要結構是類似這樣的:
<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:實際上以上的結構,可以用瀏覽器打開一個具體的webservice來看,比如以下查詢手機歸屬地的wsdl格式的webservice
http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl
WSDL 文檔可包含其它的元素,比如 extension 元素,以及一個 service 元素,此元素可把若干個 web services 的定義組合在一個單一的 WSDL 文檔中。
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。 它可描述一個 web service、可被執行的操作,以及相關的消息。 可以把 <portType> 元素比作傳統編程語言中的一個函數庫(或一個模塊、或一個類)。
WSDL 消息
<message> 元素定義一個操作的數據元素。 每個消息均由一個或多個部件組成??梢园堰@些部件比作傳統編程語言中一個函數調用的參數。
WSDL types
<types> 元素定義 web service 使用的數據類型。 為了最大程度的平臺中立性,WSDL 使用 XML Schema 語法來定義數據類型。
WSDL Bindings
<binding> 元素為每個端口定義消息格式和協議細節。
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> 元素可定義每個消息的部件,以及相關聯的數據類型。
對比傳統的編程,glossaryTerms 是一個函數庫,而 "getTerm" 是帶有輸入參數 "getTermRequest" 和返回參數 getTermResponse 的一個函數。