摘要:為解決農(nóng)民因信息渠道不暢而利益受損的問題,構(gòu)建了基于Ajax的多層體系結(jié)構(gòu)的農(nóng)業(yè)技術(shù)信息平臺。平臺采用基于實例的方式發(fā)布信息,通過自動查詢或嵌入手機短信實現(xiàn)農(nóng)業(yè)信息的自動配對和跟蹤指導(dǎo);開辟經(jīng)驗交流模塊,使農(nóng)民自助參與網(wǎng)站內(nèi)容的豐富和技術(shù)的積累?;贏jax技術(shù)的異步通信改善了動態(tài)事件的響應(yīng)機制,實現(xiàn)無刷新下動態(tài)局部頁面數(shù)據(jù)更新。平臺簡單易用、便捷高效、可讀可寫,能快捷準確地收集、整理和傳遞國內(nèi)外農(nóng)業(yè)技術(shù)信息,實現(xiàn)農(nóng)業(yè)技術(shù)信息的資源共享。
關(guān)鍵詞:農(nóng)業(yè)技術(shù)信息平臺;Ajax;多層體系結(jié)構(gòu);異步通信
中圖分類號:TP393;S126 文獻標識碼:A 文章編號:0439-8114(2013)17-4221-03
Construction of Information Platform about Agricultural Technology Based on Ajax
HUANG Xin-jian1,HOU Yan-jun2,YUAN Wen-zhuo3
(1.Zhumadian Party School of CCP, Zhumadian 463000,Henan,China;2.School of Mechanical Engineering, North China University of Water Conservancy and Hydroelectric Power, Zhengzhou 450045,China;3.Henan Provincial Commerce Department, Zhengzhou 450003, China)
Abstract: To decrease the benefit loss of farmers due to inaccessible information channels, an information platform about agricultural technology based on Ajax multi-tier architecture was set up. Information publishing was based on true examples. Agricultural information automatic pairing and the tracking guide were realized through the automatic query when information was released or embedded into mobile phone short message. Experience communication module was developed so that farmers could have self-help access to website content enrichment and technique accumulation. The asynchronous communication based on Ajax improved the responding mechanism of dynamic state affairs, and achieved local data updated without refreshed in dynamic pages. The platform was easy to use, convenient, highly effective, and read-write. It could quickly and correctly collect, sort out and deliver domestic and international agriculture technique information, and carry out the resources share of agricultural technique information.
Key words: information platform about agricultural technology; Ajax; multi-tier architecture;asynchronous communication
收稿日期:2013-01-10
基金項目:水利部公益性行業(yè)專項(201201074);河南省教育廳自然科學(xué)研究計劃項目(2011B450001)
作者簡介:黃新建(1977-),男,河南平輿人,講師,碩士,主要從事計算機應(yīng)用的研究工作,(電話)13503961309(電子信箱)782873928@qq.com。
中國作為農(nóng)業(yè)大國,“三農(nóng)”問題關(guān)系到國民素質(zhì)、經(jīng)濟發(fā)展,關(guān)系到社會穩(wěn)定、國富民強,而農(nóng)業(yè)技術(shù)信息化是解決“三農(nóng)”問題的重要途徑之一。近年來,各類涉農(nóng)網(wǎng)站不斷涌現(xiàn),并且勢頭迅猛,中國農(nóng)業(yè)信息網(wǎng)絡(luò)的建設(shè)和發(fā)展已從根本上改變了傳統(tǒng)的信息獲取方式,極大地提高了信息傳播的速度和效率。但現(xiàn)有網(wǎng)站大多以信息發(fā)布為主,互動較少。而對農(nóng)民而言,文化水平較低,對信息的篩選能力較弱,他們往往最需要的是問題如何解決。一些網(wǎng)站只是推廣新品種、新技術(shù),而農(nóng)民常常在買回種子后對著說明書也不知如何下種、如何進行田間管理等。
此文旨在構(gòu)建一個簡單易用、可讀可寫、服務(wù)先導(dǎo)的交互性農(nóng)業(yè)技術(shù)信息平臺。通過互聯(lián)網(wǎng)的開放性、民間性、全球性,快捷準確地收集、整理和傳遞國內(nèi)外農(nóng)業(yè)技術(shù)信息,實現(xiàn)農(nóng)業(yè)技術(shù)信息的資源共享,為農(nóng)民提供技術(shù)服務(wù)和市場導(dǎo)向。
1 基于Ajax的多層體系結(jié)構(gòu)
Ajax(Asynchronous JavaScript and XML)[1,2]是Web 2.0的主流應(yīng)用技術(shù),它可以將笨拙的Web界面轉(zhuǎn)化成強交互性的Ajax應(yīng)用程序。Ajax不是一種新的編程語言,而是多種成熟技術(shù)的有機結(jié)合,主要包括:DOM(文檔對象模型)進行動態(tài)顯示、XHTML和CSS(層疊樣式表)實現(xiàn)基于各種標準的呈現(xiàn)、采用XML數(shù)據(jù)格式傳輸與交換數(shù)據(jù)、XMLHttpRequest對象負責(zé)與服務(wù)器異步通訊,最后通過JavaScript腳本語言對各部分進行封裝,使之能夠協(xié)同工作,形成一整套完整的程序框架。
與傳統(tǒng)的Web應(yīng)用不同,Ajax采用異步交互過程,從而改變了同步交互過程中的“處理—等待—處理—等待”的模式,實現(xiàn)Web頁面不用打斷交互過程,動態(tài)地更新頁面局部數(shù)據(jù)。Ajax技術(shù)按需取數(shù)據(jù)、節(jié)省服務(wù)器帶寬和減輕服務(wù)器處理負擔(dān)。
Ajax技術(shù)的關(guān)鍵是添加了一個中間層在服務(wù)層和客戶層之間,使數(shù)據(jù)的異步訪問得以實現(xiàn)??蛻舳丝梢酝瑫r向服務(wù)器端發(fā)出多個請求,不用刷新Web頁面就能實現(xiàn)數(shù)據(jù)的動態(tài)實時更新?;贏jax的多層體系結(jié)構(gòu)如圖1[3-5]?;贏jax技術(shù)的異步通信改善了動態(tài)事件的響應(yīng)機制,極大地提高了平臺的用戶體驗效果,并彌補了B/S架構(gòu)的不足[6]。
2 系統(tǒng)設(shè)計
2.1 功能模塊的劃分
農(nóng)業(yè)技術(shù)信息平臺分為系統(tǒng)管理模塊、技術(shù)展示模塊、農(nóng)業(yè)技術(shù)供求信息模塊、綜合查詢模塊、農(nóng)業(yè)技術(shù)交易模塊、跟蹤咨詢服務(wù)模塊、經(jīng)驗探討模塊及幫助8個功能模塊。
系統(tǒng)管理模塊包括用戶管理、權(quán)限管理及數(shù)據(jù)的維護。技術(shù)展示模塊提供一些技術(shù)資料、視頻材料供用戶下載。農(nóng)業(yè)技術(shù)供求信息模塊是主要模塊,完成用戶供求信息查詢、發(fā)布,供求信息對接。供求信息對接即供求配對,提交信息時系統(tǒng)自動查詢相應(yīng)配對信息并彈出告知,供求直接網(wǎng)上對接。如果配對不成功,當后續(xù)有相關(guān)配對信息時采用嵌入短信發(fā)布的方式通知用戶。為了使信息發(fā)布更便捷,也考慮農(nóng)民首次使用的困難,信息發(fā)布提供基于實例的模式,可在實例的基礎(chǔ)上更改發(fā)布。綜合查詢模塊是站內(nèi)的綜合信息查詢,支持模糊和準確查詢。農(nóng)業(yè)技術(shù)交易模塊提供交易平臺。跟蹤咨詢服務(wù)模塊包括跟蹤、咨詢和服務(wù)3部分。跟蹤主要采用短信模式,在技術(shù)交易成立時嵌入系統(tǒng)提示短信,根據(jù)技術(shù)自身實際在合適的時間將相關(guān)內(nèi)容發(fā)給相關(guān)人。用戶反饋可采用短信或留言的方式提供給技術(shù)提供方。咨詢包括在線咨詢和留言。服務(wù)包括病蟲害、土壤、政策、天氣等信息公告及農(nóng)技百科。經(jīng)驗探討模塊采用BBS模式,供用戶進行經(jīng)驗探討。幫助模塊一方面提供系統(tǒng)應(yīng)用幫助,另一方面用戶可通過電話、短信等告知需求,由系統(tǒng)管理人員幫助其完成需求。
2.2 多媒體技術(shù)應(yīng)用
多媒體技術(shù)就是具有集成性、實時性和交互性的計算機綜合處理聲音、文字、圖像的多種媒體信息的技術(shù)[7]。該平臺制作過程中大量采用多媒體技術(shù),網(wǎng)頁內(nèi)容用三維動畫、圖片、視頻等形式來展現(xiàn),更生動、形象,易于被廣大農(nóng)民接受。農(nóng)業(yè)技術(shù)往往涉及大量的概念、定義,比較抽象、難以理解、不易記憶,且操作性強,需要大量的實踐才能掌握。鑒于此,平臺充分運用了近年來新興的傳媒方式——視頻點播。通過視頻點播,打破了傳統(tǒng)的下載在時間和空間上的限制,實現(xiàn)音頻、視頻等多媒體資料隨時隨地的點播。這些多媒體信息在網(wǎng)絡(luò)上的傳輸主要采用了實時流協(xié)議(Real time streaming protocol,RTSP)。
2.3 層疊樣式表的應(yīng)用
層疊樣式表(Cascading style sheets,CSS)是一系列格式規(guī)則,用以控制網(wǎng)頁內(nèi)容的外觀。用CSS樣式可以靈活并很好地控制網(wǎng)頁外觀,控制的范圍包括從精確的布局定位到特定的字體和樣式。CSS樣式可以控制許多用HTML無法控制的屬性。平臺設(shè)計中通過使用CSS樣式確保多個頁面中字體的類型、顏色、像素單位保持一致,使網(wǎng)頁讓用戶看起來整齊、美觀、大方。
2.4 數(shù)據(jù)庫設(shè)計
農(nóng)業(yè)技術(shù)信息平臺的關(guān)鍵是信息的收集、處理、對接和檢索。該平臺的數(shù)據(jù)結(jié)構(gòu)采用關(guān)系模型,采用Power Designer軟件進行數(shù)據(jù)庫的設(shè)計,然后導(dǎo)入到SQL Server數(shù)據(jù)庫中。在數(shù)據(jù)庫的設(shè)計過程中,既要考慮數(shù)據(jù)的完整性,又要避免冗余、不一致的數(shù)據(jù),避免不規(guī)則的添加、修改和刪除。不規(guī)則的添加、修改和刪除是數(shù)據(jù)操作的問題,用戶繁多、文化程度不同,從用戶入手避免數(shù)據(jù)誤操作是不可能的,那就需要從系統(tǒng)入手,也即需要合理設(shè)計數(shù)據(jù)庫。設(shè)計時要遵循關(guān)系型數(shù)據(jù)庫的規(guī)范化,即要滿足第1范式(無重復(fù)的屬性)、第2范式(非主屬性非部分依賴于主碼)和第3范式(屬性不依賴于非主屬性)。以供求部分的數(shù)據(jù)庫表為例(圖2),在供應(yīng)和求購信息表中都設(shè)有有效期限,系統(tǒng)定期據(jù)此將無用數(shù)據(jù)刪除,避免了無用數(shù)據(jù)長期占用資源,并減少了系統(tǒng)管理員的勞動量。
3 基于Ajax技術(shù)的系統(tǒng)實現(xiàn)
農(nóng)業(yè)技術(shù)信息平臺采用基于Ajax的多層體系結(jié)構(gòu),用JAVA作為主要開發(fā)語言,輔以HTML、CSS、JavaScript等標記、腳本語言,選用Tomcat作服務(wù)器, 數(shù)據(jù)庫管理系統(tǒng)使用的是功能強大的易于維護的SQL Server,用Sybase Power Designer進行數(shù)據(jù)庫設(shè)計。在數(shù)據(jù)校驗、按需求獲取的級聯(lián)菜單、多級下拉列表框、動態(tài)重載表單內(nèi)容等方面采用了Ajax技術(shù)。
Ajax采用異步交互,通過XMLHttpRequest對象動態(tài)地更新頁面局部數(shù)據(jù)。XMLHttpRequest對象可以實現(xiàn)發(fā)送和接收超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)的請求與響應(yīng)信息,從而實現(xiàn)客戶端與服務(wù)器異步通信功能。XMLHttpRequest對象創(chuàng)建如下[8,9]:
var xmlHReq=1;
fuction setXMLHttpRequest()
{ if(window.XMLHttpRequest) //Mozilla/FireFox瀏覽器
{ xmlHReq =new XMLHttpRequest();}
elseif(window.ActiveXObject) //IE瀏覽器
{
try{ xmlHReq =new activeXObject(\"Msxml2.XMLHTTP\") ;}
catch(e) { try{ xmlHReq =new activexobject(\"Microsoft.XMLHTTP\") ;}
catch(e){ }
}
}
}
創(chuàng)建XMLHTTPRequest對象后,就可以使用XMLHTTPRequest對象的方法完成相應(yīng)的操作,XMLHTTPRequest對象的方法主要有Send()、Open()、abort()、getAllResponseHeaders()等。要把請求發(fā)送到服務(wù)器,需要使用open()和send()方法。用Open()和send()方法向服務(wù)器發(fā)出請求取得XML數(shù)據(jù)程序如下:
function sendRequest (url) //發(fā)送請求函數(shù)
{ setXMLHttpRequest()
xmlHReq.Open(\"GET\",url,true) ; // true表示請求是異步的
xmlHReq.onreadystatechange= proResfun;//指定響應(yīng)函數(shù)
xmlHReq.send(1) ; // 將請求送往服務(wù)器
}
在異步方式下工作,需要設(shè)置異步的事件處理函數(shù)。onreadystatechange是XMLHTTPRequest對象的屬性之一,存有處理服務(wù)器響應(yīng)的函數(shù),它是狀態(tài)改變的事件觸發(fā)器。XMLHTTPRequest對象的屬性還有readyState、responseText、responseXML、status、statusText。readyState 屬性存有服務(wù)器響應(yīng)的狀態(tài)信息。每當 readyState 改變時,onreadystatechange 函數(shù)就會被執(zhí)行。下面是用來檢查MLHTTPRequest文檔是否已經(jīng)解析完畢的proResfun ()。
function proResfun ()
{ if(xmlHReq. readyState==4 xmlHReq.status==200) //檢查是否正確取得數(shù)據(jù)
{ xmldoc= xmlHReq.responseXML;
doSthing();//實現(xiàn)瀏覽器用戶界面中的功能
}
else{window.alert(\"頁面有異常。\")}
}
至此,取得了XML格式的響應(yīng)數(shù)據(jù)。下面就可以在doSthing()方法中實現(xiàn)瀏覽器用戶界面中的功能了。
4 小結(jié)
采用基于Ajax的多層體系結(jié)構(gòu),以JAVA為主要開發(fā)語言,采用SQL Server數(shù)據(jù)庫,設(shè)計了一簡單、實用、高效的農(nóng)業(yè)技術(shù)信息平臺系統(tǒng)。通過在信息發(fā)布時系統(tǒng)自動查詢,或通過系統(tǒng)嵌入的手機短信,實現(xiàn)了信息自動配對,減少了對計算機網(wǎng)絡(luò)的依賴,也使后期跟蹤服務(wù)更方便有效。為擴大使用群體、提高系統(tǒng)的易用性,設(shè)計中采用了基于實例的信息發(fā)布方式。需要在客戶端和服務(wù)器間頻繁傳送少量的數(shù)據(jù)時,使用Ajax引擎實現(xiàn)異步數(shù)據(jù)通信而無刷新頁面,從而減少了網(wǎng)絡(luò)開銷,改善了用戶體驗,增強了互動性。
參考文獻:
[1] GARRETT J J. Ajax: A New Approach to Web Applications[EB/OL]. http://www.adaptivepath.com/ideas/essays/archives/000385. php,2005-02-18.
[2] 孟慶瑞,田兆鋒,閻楚良.Ajax技術(shù)在農(nóng)業(yè)裝備信息網(wǎng)中的應(yīng)用[J].農(nóng)業(yè)機械學(xué)報,2008,39(12):132-135.
[3] 任 毅,王 平,龔亞麗,等.Ajax和Web服務(wù)在空間信息發(fā)布中的應(yīng)用研究[J].計算機工程與設(shè)計,2009,30(11):2698-2701, 2717.
[4] 李 健,黃晗文,劉 芳,等. Ajax在Web中的應(yīng)用研究[J].計算機與現(xiàn)代化,2009(7):84-87.
[5] 李 娟,汪厚祥,焦志強,等.動態(tài)ERP系統(tǒng)中Ajax/SOA系統(tǒng)架構(gòu)模型的構(gòu)造[J].計算機應(yīng)用與軟件,2010,27(7):65-66.
[6] 翟彥博,楊桂麗,劉 陽.基于B/S模式的儀器設(shè)備管理WEB系統(tǒng)的設(shè)計與功能實現(xiàn)[J].沈陽建筑大學(xué)學(xué)報(社會科學(xué)版),2008,10(3):298-301.
[7] 孫曉玲.多媒體技術(shù)在網(wǎng)站設(shè)計中的藝術(shù)運用[D].濟南:山東大學(xué),2010.
[8] 馮曼菲.精通AJAX:基礎(chǔ)概念、核心技術(shù)與典型案例[M].北京:人民郵電出版社,2008.
[9] 張桂元,賈燕楓,姜 波.征服Ajax——Web 2.0快速入門與項目實踐(Java)[M].北京:人民郵電出版社,2006.
(責(zé)任編輯 王曉芳)