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

  • 2019 年 10 月 3 日
  • 筆記

 

首先我們來看一下如何創建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使用,用來處理前台發送來的數據更為方便。個人見解,如果大家有其他想法的話,可以多多發言