webservice
web service是一個應用元件,它邏輯性的為其他應用程式提供資料與服務.各應用程式通過網絡協定和規定的一些标準資料格式(http,xml,soap)來通路web service,通過web service内部執行得到所需結果.
web service可以執行從簡單的請求到複雜商務處理的任何功能。一旦部署以後,其他web service應用程式可以發現并調用它部署的服務。
------------------
在建構和使用web service時,主要用到以下幾個關鍵的技術和規則:
1.xml:描述資料的标準方法.
2.soap:表示資訊交換的協定.
3.wsdl:web服務描述語言.
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 的如下方面:
(1)服務的端口(接收soap消息的端口)
(2)服務提供的操作
(3)操作的輸入輸出格式的定義(通過xmlschema 定義輸入輸出格式)
有了web service 的描述檔案(wsdl ),我們就知道怎樣調用這個web service 中定義的操作了。
(1)通過服務提供的操作找到你想調用的操作
(2)找到這個操作的輸入格式的定義(xmlschema ),按照這種輸入格式構造一個soap消息
(3)将這個soap消息發送到服務的指定端口
(4)準備接收一個從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>
definition of types........
</types>
definition of a message....
</message>
definition of a port.......
</porttype>
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 name="gettermresponse">
<part name="value" type="xs:string"/>
<porttype name="glossaryterms">
<operation name="getterm">
<input message="gettermrequest"/>
<output message="gettermresponse"/>
</operation>
在這個例子中,<porttype> 元素把 "glossaryterms" 定義為某個端口的名稱,把 "getterm" 定義為某個操作的名稱。
操作 "getterm" 擁有一個名為 "gettermrequest" 的輸入消息,以及一個名為 "gettermresponse" 的輸出消息。
<message> 元素可定義每個消息的部件,以及相關聯的資料類型。
對比傳統的程式設計,glossaryterms 是一個函數庫,而 "getterm" 是帶有輸入參數 "gettermrequest" 和傳回參數 gettermresponse 的一個函數。
最新内容請見作者的github頁:http://qaseven.github.io/