陳丹
(武漢軟件工程職業(yè)學院 湖北 武漢 430205)
在Internet上有各式各樣的信息源,可以從中獲取自己想要的信息。但是每個信息源里可能包含你并不想要的信息,例如,你想查看股票信息時,網(wǎng)頁上有許多廣告。不僅如此,要獲取不同的信息就必須打開訪問不同網(wǎng)站,例如,如果想同時獲取天氣信息和股票信息,就必須打開2個窗口,分別訪問提供天氣信息的網(wǎng)頁和提供股票信息的網(wǎng)頁。如果能夠有一個軟件,直接在一個界面上顯示用戶需要的多種信息,而且沒有廣告等多余的信息,將會十分有用。
基于對以上情況的分析,可以構(gòu)建一個Web服務為用戶提供特定信息的服務,根據(jù)用戶所發(fā)出的信息請求,通過Internet從指定的網(wǎng)站中獲取數(shù)據(jù),進行解析并過濾多余的信息,將解析后有用的信息結(jié)果返回給請求數(shù)據(jù)的客戶端[1-2]。筆者設計的基于XML的Web信息篩選器能實現(xiàn)該Web服務的功能。
在XML基礎上發(fā)展起來的Web服務提供了一個分布式的計算技術(shù),它使用XML作為基本的數(shù)據(jù)通信方式,消除了不同操作系統(tǒng)、組件模型與編程語言之間通信存在的差異,用于在Internet或者Intranet上通過使用標準的XML協(xié)議和信息格式來實現(xiàn)通信和共享、交換數(shù)據(jù)[3]。構(gòu)建Web服務的目標是將應用程序轉(zhuǎn)化為一種可以通過互聯(lián)網(wǎng)訂閱使用的服務,以及使網(wǎng)絡軟件具有更高的互操作性和兼容性。
XML Web Service的核心概念是,基于Web的應用程序能夠在基于標準的環(huán)境中創(chuàng)建,并作為服務將內(nèi)容或信息傳遞給需要使用該服務的客戶端。XML Web Service為基于Web的專用應用程序在Internet上的傳輸提供了一種方式,該方式類似于傳統(tǒng)的基于組件的設計,服務的使用者不需要知道它是怎樣運行的,只要知道它所提供的適當?shù)姆蘸徒Y(jié)果。XML Web Service利用XML和其他Internet標準,使得服務的使用者能夠通過XML得到它們的服務。XML Web Service之間的大多數(shù)交換是通過XML數(shù)據(jù)和技術(shù)完成的[4]。
基于XML的Web信息篩選器能夠從指定的網(wǎng)站上獲取信息并進行過濾,為客戶端用戶提供天氣,股票和新聞數(shù)據(jù)??蛻舳擞脩敉ㄟ^向Web服務發(fā)出請求,獲取指定城市的天氣情況(如天氣狀況、溫度、風力、紫外線和空氣質(zhì)量),指定代碼和股市的股票信息(如 SS(上海)或 SZ(深圳)的股市信息),以及指定媒體的分類新聞(如新浪網(wǎng)的體育新聞)。
整個系統(tǒng)設計的框架可以分為以下兩個部分:
1)Web Service模塊 從Internet上獲取需要的數(shù)據(jù)。
2)客戶端模塊 調(diào)用Web Service模塊的方法獲取數(shù)據(jù),在客戶端界面上顯示。
本系統(tǒng)分為2個模塊。其中,Web Service模塊主要負責信息的獲取和過濾工作。從特定的網(wǎng)址獲取數(shù)據(jù),并對其進行解析。將解析后有用的結(jié)果返回給請求數(shù)據(jù)的客戶端??蛻舳四K負責從Web Service接收數(shù)據(jù)進行顯示。
首先需要使用ASP.NET技術(shù)搭建一個Web服務,該Web服務上采用了數(shù)據(jù)庫和XML文檔的存儲形式,服務發(fā)布后就連接到Internet并啟動新聞搜集線程開始準備獲取數(shù)據(jù),通過搜集特定網(wǎng)站中給定頁面的新聞連接得到新聞網(wǎng)頁的url,然后查找每個頁面的新聞連接,將新聞存儲到數(shù)據(jù)庫中,并以XML的形式返回指定網(wǎng)頁的內(nèi)容[5]。Web服務上定義了一系列的方法可以供客戶端進行調(diào)用,為客戶端用戶提供天氣,股票和新聞數(shù)據(jù),根據(jù)條件返回查詢結(jié)果,再將查詢結(jié)果生成的xml文件用XSL轉(zhuǎn)換成HTML返回給客戶端。
用于對Internet中的網(wǎng)頁信息實現(xiàn)Web信息篩選器的Web服務的總體設計如圖1所示。其中的關鍵技術(shù)包括XML數(shù)據(jù)交換,ADO.NET數(shù)據(jù)訪問技術(shù)和DataSet數(shù)據(jù)集,以及ASP.NET XML Web Service技術(shù)。
圖1 基于XML的Web信息篩選器的設計Fig.1 Design of Web information filters based on XML
由于需要從Internet上獲取信息并將篩選出的有用信息進行保存,以便將結(jié)果返回給請求數(shù)據(jù)的用戶,因此在Web服務端設計了一個數(shù)據(jù)庫News用于相關數(shù)據(jù)的存取,這里選用SQL Server作為數(shù)據(jù)庫服務器[6]。該數(shù)據(jù)庫中共設計了4個數(shù)據(jù)表,包括 Tab_Media(媒體列表)、Tab_Category(新聞類別列表)、Tab_PageUrl(新聞網(wǎng)頁的 url)和 Tab_PagesList(Web網(wǎng)頁的內(nèi)容)。在數(shù)據(jù)庫中還設計了2個數(shù)據(jù)視圖,其中視圖Vew_MediaShortName用于表示與指定媒體對應的新聞網(wǎng)頁的url,視圖Vew_PagesList用于表示媒體中各個新聞類別的網(wǎng)頁內(nèi)容。在Web服務器上還設計了一個XML文檔Cities.xml,用于存放可以獲取天氣信息的城市名列表。
WebService模塊主要實現(xiàn)了以下功能:
1)獲取天氣數(shù)據(jù)的功能:從指定的網(wǎng)站中獲取數(shù)據(jù),進行解析并過濾多余的信息,將天氣數(shù)據(jù)返回給客戶端。
2)獲取股票數(shù)據(jù)的功能:從指定的網(wǎng)站中獲取數(shù)據(jù),進行解析并過濾多余的信息,將股票數(shù)據(jù)返回給客戶端。
3)獲取訂閱新聞的功能:從指定的網(wǎng)站中獲取新聞,在客戶端顯示。
客戶端模塊主要實現(xiàn)以下功能:1)定制天氣、股票、新聞信息;2)顯示天氣、股票、新聞信息;3)每塊信息可放縮,下部的信息塊相應調(diào)整位置;4)定時更新每塊內(nèi)容。股票每分鐘更新一次,新聞每10 min更新一次,天氣每小時更新一次。
系統(tǒng)開發(fā)環(huán)境為Microsoft.NET Framework和SQL Server數(shù)據(jù)庫,使用Microsoft Visual Studio編寫Web服務和客戶端應用程序[7]。
對Web Service中部署的類和文件描述如下。
1)Global類和 Global.asax文件
Global類在Web Service啟動以后定期將新聞數(shù)據(jù)保存到本地的數(shù)據(jù)庫News中。Global類視圖如圖2所示。
圖2 Global類視圖Fig.2 Global Class View
其中涉及的幾個重要方法的功能說明如下:
①void Application_Start(object sender,EventArgs e)
啟動新聞搜集線程,準備數(shù)據(jù)。
②void Application_End(object sender,EventArgs e)
終止搜索線程,關閉數(shù)據(jù)庫連接。
③string[,]GatherNews(string pageUrl)
搜集給定頁面的新聞連接,根據(jù)目標頁面地址返回新聞連接,新聞標題數(shù)組。
④void StoreNews()
將新聞存儲到數(shù)據(jù)庫中。
⑤NewsUrl[]GetPageUrl()
得到新聞網(wǎng)頁的url。
⑥XmlDocument GetPageContent(Uri url)
返回指定網(wǎng)頁的內(nèi)容。
2)DataRetrival類和DataRetrival.asmx文件
DataRetrival類是該Web服務中最重要的類,為Client用戶提供天氣,股票和新聞數(shù)據(jù)。它實現(xiàn)了與客戶端的交互,將客戶端需要的信息返回給客戶端。DataRetrival類視圖如圖3所示。
圖3 DataRetrival類視圖Fig.3 DataRetrival Class View
該類中部署的Web服務描述如下:
①GetCategoryList方法
獲取支持的媒體欄目列表,該列表以CategoryId;Category-Name的形式返回。例如:4;體育新聞。其中CategoryId是用于定制新聞時的參數(shù),CategoryName顯示的是CategoryId對應的友好名稱。
②GetCityNameList方法
獲取可以查詢天氣的城市列表。
③GetMediaList方法
獲取支持的媒體列表,該列表以MediaId;MediaName的形式返回。例如:6;新浪網(wǎng)。其中MediaId是用于定制新聞時的參數(shù),MediaName顯示的是MediaId對應的友好名稱。
④GetStockInfo方法
獲取指定代碼和股市的股票信息。
⑤GetWeatherInfo()
獲取指定城市的天氣情況,提供當天的天氣數(shù)據(jù)。返回的string數(shù)組內(nèi)容依次為:天氣狀況、溫度、風力、紫外線和空氣質(zhì)量。
3)CustomizationNews類
該類用于顯示用戶定制的新聞內(nèi)容,根據(jù)條件返回查詢結(jié)果,再將查詢結(jié)果生成的xml文件用XSL轉(zhuǎn)換成HTML。CustomizationNews類視圖如圖4所示??梢酝ㄟ^類似以下的網(wǎng)址來訪問該頁面:
http://localhost/CustomizationNews.aspxMedia=6&Category=3
其中Media由DataRetrival類的GetMediaList方法獲得。Category由DataRetrival類的GetCategoryList方法獲得。
圖4 CustomizationNews類視圖Fig.4 CustomizationNews Class View
客戶端模塊由兩部分組成,一部分是名為Shrinkable GroupBox的自定義控件類庫,它實現(xiàn)了自動收縮的功能。另一部分就是SideBar窗體應用程序,實現(xiàn)了SideBar的主界面和設置界面,調(diào)用WebService獲取信息。
1)ShrinkableGroupBox類庫
①ExtendButton類
此類實現(xiàn)了ShrinkableGroupBox中的按鈕。當用戶鼠標移動到上面時,鼠標形狀會發(fā)生變化,文字會高亮顯示。單擊后箭頭方向會改變,并對ShrinkableGroupBox進行放縮。
②ShrinkableGroupBox類
此類實現(xiàn)了放縮功能,在縮放后激發(fā)事件。
2)SideBar項目
SideBar是一個Windows窗體項目,它是客戶端的主界面,顯示了天氣、股票和新聞信息。其中的可收縮框使用ShrinkableGroupBox。另外,它還提供了定制這些信息的界面,將設置保存到配置文件中。它通過調(diào)用WebService獲取需要顯示的信息。
①MainForm類
此類是客戶端的主界面。
②SettingForm類
此類負責設置并保存用戶的定制信息。
③Settings類
此類用于映射配置文件中的信息。
啟動服務器端,發(fā)布Web服務DataRetrival Web Service。運行客戶端應用程序SideBar,調(diào)用Web服務獲取指定網(wǎng)站上的默認城市天氣情況、股票信息以及分類新聞內(nèi)容。通過“配置”對話框,可以查詢北京或上海的股市信息、選擇要查看天氣的城市名稱、定制不同網(wǎng)絡媒體的分類新聞信息。
該系統(tǒng)采用了XML相關技術(shù)和Web服務,設計了一個基于XML的Web信息篩選器應用實例,實現(xiàn)了對特定網(wǎng)站信息的獲取和過濾,為用戶提供了有效信息。經(jīng)過對實例評價分析,Web服務端所提供的服務能夠根據(jù)用戶的定制要求成功完成對指定網(wǎng)頁的信息獲取和過濾,實現(xiàn)了Web篩選器的功能。
[1]胡軼眾.基于.NET的動態(tài)信息發(fā)布系統(tǒng)的設計與實現(xiàn)[D].四川:重慶大學,2007.
[2]袁新坤.基于XML與Web Services數(shù)據(jù)交換平臺的研究與實現(xiàn)[D].太原:太原理工大學,2008.
[3]李俊.XML數(shù)據(jù)轉(zhuǎn)換技術(shù)的研究和改進[D].上海:同濟大學軟件學院,2008.
[4]李偉超.基于XML的網(wǎng)絡服務研究[D].鄭州:鄭州大學,2006.
[5]林莉.XML數(shù)據(jù)交換技術(shù)在高校信息化平臺中的應用[D].大連:大連理工大學,2009.
[6]謝劍剛.XML數(shù)據(jù)在Microsoft+SQL+Server+2005中的存儲和優(yōu)化[D].廣東:中山大學,2007.
[7]微軟公司.Web應用開發(fā)——ASP.NET 2.0[M].北京:高等教育出版社,2007.