.NET中使用WebService,以及和一般處理程式、類庫的區別
阿新 • • 發佈:2019-08-19
首先我們來看一下如何建立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使用,用來處理前臺傳送來的資料更為方便。個人見解,如果大家有其他想法的話,可以多多發言