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