1. 程式人生 > >.NET中使用WebService,以及和一般處理程式、類庫的區別

.NET中使用WebService,以及和一般處理程式、類庫的區別

 

首先我們來看一下如何建立Web Service

首先在解決方案中新建項,選擇ASP.NETWeb應用程式

然後選擇一個空的專案就可以,單擊確定

專案建完之後,在專案上右鍵-->新增-->新建項,選擇 Web服務(ASMX),新增

如果想要新增新的函式,必須在函式上方打上WebMethod標籤

接下來就是呼叫,首先在我們專案的引用中,右鍵-->新增服務引用  

單擊發現

選擇要新增的asmx檔案,下面的名稱空間也可以修改,然後點選確定,如果出現下面的彈框,新增失敗的話,生成-->重新生成解決方案 然後在次新增就好了

新增完成之後,該專案中會出現一個ConnectedService,開啟之後會出現引用的Service服務

然後在程式中就可以使用了,使用之前先新增名稱空間,using  專案名稱.剛才設定的名稱空間,例如:

呼叫

//使用using釋放資源
//例項化DateTimeServiceSoapClient物件,該物件的型別是WebService中的型別加上SoapClient
using (DateTimeServiceSoapClient client = new DateTimeServiceSoapClient()) {
    //開啟
    client.Open();
    //呼叫方法,接收返回值
    DateTime dt = client.GetDateTimeNow();
    //顯示
    Console.WriteLine(dt);
}

如果更新WebService中的函式的主體,重新生成之後,呼叫的話是不需要做出任何改變的

如果WebService中添加了新的函式,先重新生成解決方案,然後要右鍵服務引用-->更新服務引用即可

WebService的用法給我的第一感覺就是和類庫並沒有太大的區別,都是新增引用,呼叫方法。可是實際上內部的原理確是天差地別。

WebService使用的是soap協議進行通訊,本質上還是使用http請求進行通訊,通過http請求傳送soap格式的xml檔案,伺服器會對xml檔案進行解析,然後伺服器端返回的也是soap格式的xml檔案,然後客戶端進行解析。

然後我們來看一下沒有被解析過的HTTP POST協議返回的xml檔案是什麼樣子的,右鍵asmx檔案,單擊在瀏覽器中進行檢視

點開我們剛才寫的這個方法

點選呼叫

這個就是HTTP POST請求返回的格式

而新增普通引用的話,實際上會在bin目錄下將所引用程式的dll檔案複製過來,如果專案不在同一個解決方案,被引用的專案有改動的話,還需要把dll檔案再次複製一份放到bin目錄下,是非常麻煩的。

WebService從執行的流程上來看,和ajax+一般處理程式差不多,都是請求然後處理請求。就我個人而言,WebService用於後端操作較為方便,因為操作都是封裝好的,不需要自己建立HttpWebRequest物件傳送請求,也不需要對返回的xml檔案進行解碼;而一般處理程式和ajax使用,用來處理前臺傳送來的資料更為方便。個人見解,如果大家有其他想法的話,可以多多發言