本人對于VS2003 WebService的簡介與學習
我們必須了解什么是VS2003 WebService,就概念上來說,可能比較復雜,不過我們可以有個宏觀的了解,VS2003 WebService就是個對外的接口,里面有函數可供外部客戶調用(注意:里面同樣有客戶不可調用的函數)。
webservice傳遞的數據只能是序列化的數據,典型的就是xml數據,這里我們也只討論xml數據的傳輸.
有了一些對xmlwebservice的初步了解后,我們將切入正題,即是用一個具體的webservice事例的形式來講解具體的webservice用法,用具體的事例來講解一個概念我想怎么也要比單純的說理能讓人容易理解吧.
這里,我們將以一個簡單的分布式課件搜索系統為例來講解.使用VS2003為編譯環境,C#為語言,SqlServcer2000為數據庫.(這個例子來源于一位網上朋友的文章的啟發,覺得很能代表webservice的特點,就按那個想法做了這么個系統來示例了)
首先,明確我們要做什么.我們需要一個對客戶的接口,也就是個站點,我們把它稱做ServiceGatherSite,它是何種形式都無所謂,甚至它本身并不需要數據庫,它只是提供給用戶一個查詢的接口,真正的服務,普通用戶是不接觸到的.然后,這里我們還需要若干個提供服務的站點,我們可以稱它們為資源站,這里為簡單起見,假設有兩個資源站,分別叫WebSiteA,WebSiteB,它們可以是不對外公布的,只是為了豐富查詢數據而存在.最后,是我們最需要關注的東西---資源站提供給ServiceGatherSite的服務.兩個資源站,就有兩個服務,我們稱為SiteAService和SiteBService.兩個服務間沒有任何關系,內部提供的方法也完全沒關聯,只是需要把方法如何使用告訴ServiceGatherSite,意思是,服務只提供查詢接口,返回的數據如何處理,服務本身并不管,全由使用服務的站點分配.#t#
寫了這么多,算是簡要的介紹了下有關xmlwebservice的概念和我們這個例子的結構,下篇文章,我們將開始真正進入代碼的設計階段.
上篇文章介紹了些VS2003 WebService的基本特性和我們例子的結構,這篇文章我們將開始具體的代碼編寫工作.這個專題主要講述的是webservice,因此這里我們的代碼以Webservice相關為主,而其他工程,例如:ServiceGatherSite,WebSiteA等,只將簡略介紹.在VS2003中,開發一個webservice并不是件困難的事,首先,我們新建一個webservice項目(文件->新建->項目->C#->Web服務應用程序)
建完這個工程,我們將看到一個叫Service1.asmx的文件,這就是VS2003 WebService的標準文件,它也有UI的概念,不過我們一般不關注,因此,我們查看其cs代碼文件.如果你什么都還沒做的話,將看見一個被注釋掉的helloworld的WebMethod,把注釋去掉,在運行,你就可以得到最簡單的webservice運行實例了.點擊"helloworld"將執行其方法.顯然,這個函數對我們的意義只在于宏觀的了解了下web服務的寫法.
下面,我們將開始具體介紹VS2003 WebService的寫法.在代碼文件里,如果我們寫了一個函數后,希望此函數成為外部可調用的接口函數,我們必須在函數上面添上一行代碼[WebMethod(Description="函數的描述信息")],如果你的函數沒有這個申明,它將不能被用戶引用.如:
- [WebMethod(Description="最簡單的方法")]
- public string HelloWorld()
- {
- return "Hello World";
- }
這個函數就是外部可調用的接口函數,對用戶來說相當于一個API.如果某用戶在引用了這個服務后,他調用HelloWorld()方法,他就將獲得"HelloWorld"這個返回值.看到這里,我們是不是發現,其實VS2003 WebService并不是那么的神秘,它也不過只是個接口,對我們而言,側重點依然是接口函數的編寫.下面,我將給出我們的例子所需要的接口函數。