Web Service學習整理
以下內容摘自百度:
Web service是一個平臺獨立的,低耦合的,自包含的、基於可程式設計的web的應用程式,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、釋出、發現、協調和配置這些應用程式,用於開發分散式的互操作的應用程式。
Web Service技術, 能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什麼, 都可以相互交換資料。Web Service是自描述、 自包含的可用網路模組, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的整合提供了一個通用機制。
簡單地說,Web Service是一種可以從內聯網(Intranet)或網際網路(Internet)中接受、處理和釋出請求的通訊技術。
在運用Web Service中,我們不僅作為服務端存在,也可以作為客戶端存在。
舉個例子,我寫了一個網站,網站中提供了一個可以計算a+b的服務:使用者可以通過網站中的表單訪問Web Service,提交之後顯示a+b的結果,這就是一個Web Service的例項,此中我作為服務端接受使用者要計算a+b的請求,處理後釋出a+b=c;同樣地,在另一個例項中,加入我想要在我的程式中展示更復雜的服務,比如天氣預報、地理座標等等,那麼我就可以作為一個客戶端,向一個系統傳送請求,這個系統接受到請求後響應我的請求,返回我所需的內容,這同樣也是Web Service。
Web Service的三要素:
SOAP(Simple Object Access Protocol):即簡單物件訪問協議。基於XML(Extensible Markup Language,可擴充套件標記語言),在WEB上交換傳遞資訊的格式。
UDDI(Universal Description Discovery and Integration):即統一描述、發現和整合。UDDI是一種目錄服務,用來管理,分發,查詢Web Service。
WSDL (WebServices Description Language):即Web服務描述語言。基於XML,使其能同時被及其和人閱讀,用以描述如何訪問具體的介面,也就是說如何呼叫Web Service。
呼叫原理
如上圖,一個完整的Web Service應該包括以下幾步:
- 服務提供者釋出服務。
- 使用者向服務註冊中心請求。
- 服務註冊中心根據使用者請求的服務,通過UDDI找到服務端,並詢問服務端具體的呼叫方法。
- 服務端返回給服務註冊中心一個WSDL描述的xml文件,內有它所能提供的各類方法介面。
- 服務註冊中心將xml封裝成http(SOAP方式),傳送給使用者端。
- 使用者端生成相應的SOAP訊息傳送給Web服務提供者,以實現Web服務的呼叫。
- 服務端按SOAP訊息執行相應的Web服務,並將服務結果返回給使用者端。
摘自W3school的一個例項:
一個例項:ASP.NET Web Service
在這個例子中,我們會使用 ASP.NET 來建立一個簡單的 Web Service。
<%@ WebService Language="VB" Class="TempConvert" %> Imports System Imports System.Web.Services Public Class TempConvert :Inherits WebService <WebMethod()> Public Function FahrenheitToCelsius (ByVal Fahrenheit As Int16) As Int16 Dim celsius As Int16 celsius = ((((Fahrenheit) - 32) / 9) * 5) Return celsius End Function <WebMethod()> Public Function CelsiusToFahrenheit (ByVal Celsius As Int16) As Int16 Dim fahrenheit As Int16 fahrenheit = ((((Celsius) * 9) / 5) + 32) Return fahrenheit End Function End Class
此文件是一個 .asmx 檔案。這是用於 XML Web Services 的 ASP.NET 副檔名。
使用我們的 ASP.NET Web Service 例子
請在此測試華氏度轉換攝氏度函式:華氏度轉換為攝氏度
請在此測試攝氏度轉換華氏度函式:攝氏度轉換為華氏度
這些函式會向您傳送一個 XML 回答
本測試使用 HTTP POST,會發送類似這樣的 XML 響應:
<?xml version="1.0" encoding="utf-8" ?> <short xmlns="http://tempuri.org/">38</short>
使用表單來訪問 Web Service
通過使用表單和 HTTP POST,您可以把 web service 置於您的站點上,比如這樣:
華氏度轉換為攝氏度:攝氏度轉換為華氏度:您可以把 web service 置於您的站點上
您可以使用這些程式碼把 web service 放置在您的站點上:
<form target="_blank" action='http://w3school.com.cn/webservices/tempconvert.asmx/FahrenheitToCelsius' method="POST"> <label>華氏度轉換為攝氏度:</label> <p> <span> <input class="frmInput" type="text" size="30" name="Fahrenheit"> </span> <span> <input type="submit" value="提交" class="button"> </span> </p> </form> <form target="_blank" action='http://w3school.com.cn/webservices/tempconvert.asmx/CelsiusToFahrenheit' method="POST"> <label>攝氏度轉換為華氏度:</label> <p> <span> <input class="frmInput" type="text" size="30" name="Celsius"> </span> <span> <input type="submit" value="提交" class="button"> </span> </p> </form>