WebService 工作原理及例項教程
一、WebService到底是什麼?
先來看下標準的定義:Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並通過UDDI進行註冊。
其實,一言以蔽之:WebService是一種跨程式語言和跨作業系統平臺的遠端呼叫技術。
還可以從多個角度來理解WebService,從表面看,WebService就是一個應用程式向外界暴露出一個能通過Web進行呼叫的API,也就是說能用程式設計的方法通過Web來呼叫這個應用程式。我們把呼叫這個WebService的應用程式叫做客戶端,而把提供這個WebService的應用程式叫做服務端。從深層次看,WebService是建立可互操作的分散式應用程式的新平臺,是一個平臺,是一套標準。它定義了應用程式如何在Web上實現互操作性,你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。
二、WebService平臺技術
SOAP、WSDL、UDDI(UniversalDescriptionDiscovery andIntegration)三者構成了WebService的三要素。下面,詳細闡述這三大技術:
-
SOAP
WebService通過HTTP協議傳送請求和接收結果時,傳送的請求內容和結果內容都採用XML格式封裝,並增加了一些特定的HTTP訊息頭,以說明HTTP訊息的內容格式,這些特定的HTTP訊息頭和XML內容格式就是SOAP協議。SOAP提供了標準的RPC方法來呼叫Web Service。 SOAP協議組成: SOAP協議 = HTTP協議 + XML資料格式 SOAP協議定義了SOAP訊息的格式,SOAP協議是基於HTTP協議的,SOAP也是基於XML和XSD的,XML是SOAP的資料編碼方式。打個比喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經過加隔離帶和防護欄改造過的高速公路。
-
WSDL
好比我們去商店買東西,首先要知道商店裡有什麼東西可買,然後再來購買,商家的做法就是張貼廣告海報。 WebService也一樣,WebService客戶端要呼叫一個WebService服務,首先要有知道這個服務的地址在哪,以及這個服務裡有什麼方法可以呼叫,所以,WebService務器端首先要通過一個WSDL檔案來說明自己家裡有啥服務可以對外呼叫,服務是什麼(服務中有哪些方法,方法接受的引數是什麼,返回值是什麼),服務的網路地址用哪個url地址表示,服務通過什麼方式來呼叫。 WSDL(Web Services Description Language)就是這樣一個基於XML的語言,用於描述Web Service及其函式、引數和返回值。它是WebService客戶端和伺服器端都能理解的標準格式。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web service生成WSDL文件,又能匯入WSDL文件,生成呼叫相應WebService的代理類程式碼。
-
UDDI
UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新專案。在使用者能夠呼叫Web服務之前,必須確定這個服務內包含哪些商務方法,找到被呼叫的介面定義,還要在服務端來編制軟體,UDDI是一種根據描述文件來引導系統查詢相應服務的機制。UDDI利用SOAP訊息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查詢註冊資訊。它採用XML格式來封裝各種不同型別的資料,並且傳送到註冊中心或者由註冊中心來返回需要的資料。
三、WebService呼叫原理
實現一個完整的Web服務工作流程:
-
Web服務提供者設計實現Web服務,並將除錯正確後的Web服務通過Web服務中介者釋出,並在UDDI註冊中心註冊;
-
Web服務請求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI註冊中心,為請求者尋找滿足請求的服務;
-
Web服務中介者向Web服務請求者返回滿足條件的Web服務描述資訊,該描述資訊用WSDL寫成,各種支援Web服務的機器都能閱讀;
-
利用從Web服務中介者返回的描述資訊生成相應的SOAP訊息,傳送給Web服務提供者,以實現Web服務的呼叫;
-
Web服務提供者按SOAP訊息執行相應的Web服務,並將服務結果返回給Web服務請求者。
四、WebService例項教程
以.Net建立WebService服務為例: 1. 啟動VisualStudio(本教程用VisualStudio2017為例),新建網站專案;
2.選擇新建ASP.NET 空網站,點選“確定”,繼續;
3.點選新建的專案名稱 右鍵–>新增–>新增新項;
4.在新增新項列表中選擇Web服務(ASMX),點選“確定”, 繼續;
5.在webservice.cs中新增自定義測試功能程式碼;
//自定義測試功能
[WebMethod(Description = "返回兩數之和")]
public int GetSum(int a, int b)
{
return a + b;
}
- 1
- 2
- 3
- 4
- 5
- 6
6.我們開始執行一下WebService.asmx檔案;
如果執行的效果和上面的截圖一致,那麼你的WebService執行正確,現在記住這個服務地址(即瀏覽器中的地址)。接下來,我們一起看看在ASP.NET網站中如何呼叫這個服務呢?
我們,繼續!
7.和第二步一樣,新建一個空網站專案;
8.點選新建的專案名稱 右鍵–>新增–>新增新項,在新增新項列表中選擇Web窗體,點選“確定”, 繼續;
9.在新建的Add.aspx頁面中 ,在工具箱中拖出三個控制元件:textbox1,textbox2,label分別用來顯示 整數a,整數b,計算的和用label顯示。
那麼,如何新增Web服務呢?
10.選中你的網站專案,右鍵–>新增服務引用;
11.將你的服務地址(教程中的第六步)複製到位址列中,點選“轉到”—>開啟服務“WebService”—>點選“確定”按鈕,同時留意名稱空間;
12.新增服務後,如果你的目錄結構是這樣的,那麼你成功新增服務了!
13.我們在Add.aspx中新增一個按鈕控制元件,並在對應的Add.aspx.cs檔案中新增對應業務邏輯,例項化建立一個服務物件:
protected void Button1_Click(object sender, EventArgs e)
{
ServiceReference1.WebServiceSoap ws = new ServiceReference1.WebServiceSoapClient();
Label1.Text = Convert.ToString(ws.GetSum(Convert.ToInt32(TextBox1.Text.Trim()), Convert.ToInt32(TextBox2.Text.Trim())));
}
- 1
- 2
- 3
- 4
- 5
14.現在執行我們的Add.aspx頁面:
執行兩個數,點選“呼叫WebService按鈕”,輸出結果為3,我們成功啦!!
--------------------- 本文來自 胡大炮的妖孽人生 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/huplion/article/details/72770381?utm_source=copy