張航+明花廷+李乃祥
摘要:為提高天津地區(qū)作物病蟲害防治水平,以Flex和.NET Framework為開發(fā)框架,F(xiàn)lex Builder 3.0和Visual Studio 2008為開發(fā)工具,SQL Server 2008 Express為數(shù)據(jù)庫管理系統(tǒng),F(xiàn)MS為交互媒體服務(wù)器,采用B/S體系結(jié)構(gòu),設(shè)計(jì)開發(fā)了一個(gè)高實(shí)時(shí)性、高集成度和高分布性的作物病蟲害專家在線視頻診斷系統(tǒng)。該系統(tǒng)性能穩(wěn)定,用戶使用方便,安裝維護(hù)簡(jiǎn)單,可以實(shí)現(xiàn)作物病蟲害專家與就診用戶之間的遠(yuǎn)程視頻音頻診斷會(huì)話和文本診斷會(huì)話,有效地提高病蟲害防治水平。
關(guān)鍵詞:作物;病蟲害;視頻診斷;Flex
中圖分類號(hào):S435;TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):0439-8114(2014)18-4427-03
作物病蟲害防治工作是農(nóng)業(yè)生產(chǎn)中的一個(gè)重要環(huán)節(jié),對(duì)病蟲害進(jìn)行準(zhǔn)確診斷與防治能有效提高作物的質(zhì)量與產(chǎn)量。病蟲害的診斷需要專業(yè)人員的指導(dǎo),而當(dāng)前農(nóng)村基層組織中專業(yè)病蟲害診斷與防治存在人員不足的情況。針對(duì)這種情況,一些病蟲害診斷系統(tǒng)已經(jīng)被開發(fā)出來,并在實(shí)際農(nóng)業(yè)生產(chǎn)中得到應(yīng)用[1,2]。這些系統(tǒng)一般是以C/S模式開發(fā)的,要求使用者具有較高的計(jì)算機(jī)操作水平,升級(jí)和維護(hù)工作困難,共享程度低[3]。隨著技術(shù)不斷發(fā)展,越來越多的軟件設(shè)計(jì)采用B/S模式。相對(duì)于C/S模式,B/S模式在技術(shù)上具有分布性強(qiáng)、共享性強(qiáng)、維護(hù)方便等特點(diǎn),終端用戶只需會(huì)使用瀏覽器即可獲取相關(guān)信息[4]。本研究采用B/S模式并結(jié)合Flex技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了作物病蟲害專家在線視頻診斷系統(tǒng),以期使得診斷更加快捷、方便,實(shí)現(xiàn)資源信息化、診斷決策科學(xué)化,為作物種植管理和病蟲害防治提供了有效的技術(shù)支持。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)
作物病蟲害專家在線視頻診斷系統(tǒng)采用面向?qū)ο蟮姆椒ǎY(jié)合MVC(Model-View-Controller)模型來開發(fā)設(shè)計(jì)。系統(tǒng)采用Adobe Flex、FMS(Flash media server)、ASP.NET和SQL Server數(shù)據(jù)庫等技術(shù),以Visual Studio 2008和Flex Builder 3.0為開發(fā)平臺(tái)。由于Flex本身不能直接訪問和操作服務(wù)器端的數(shù)據(jù)庫,其需要通過服務(wù)器端語言(C#)配合來實(shí)現(xiàn)客戶端和服務(wù)器端的數(shù)據(jù)交互與通信[5]。系統(tǒng)整體架構(gòu)如圖1所示。
1.2 系統(tǒng)功能
作物病蟲害專家在線視頻診斷系統(tǒng)包含用戶管理、在線用戶列表、診斷會(huì)話、診斷會(huì)話管理、診斷會(huì)話備錄、其他輔助功能等6個(gè)功能模塊。其中關(guān)鍵部分為診斷會(huì)話模塊,包含診斷會(huì)話發(fā)起、視音頻診斷會(huì)話、文本診斷會(huì)話、診斷會(huì)話終止等功能。系統(tǒng)功能圖如圖2所示。
1.2.1 用戶管理功能 用戶管理功能分為前臺(tái)管理和后臺(tái)管理。前臺(tái)管理主要提供前臺(tái)用戶登錄、注冊(cè)(僅限診斷用戶)、密碼取回以及個(gè)人資料修改等功能。后臺(tái)管理為系統(tǒng)管理員提供系統(tǒng)所有用戶的查看、添加、修改、刪除等功能。
1.2.2 在線用戶列表功能 在線用戶列表功能分別顯示所有診斷用戶列表、在線診斷用戶列表、所有專家列表和在線專家列表,提供系統(tǒng)所有用戶的聯(lián)系信息和狀態(tài)信息。
1.2.3 診斷會(huì)話功能 診斷會(huì)話功能包括診斷會(huì)話發(fā)起、視音頻診斷會(huì)話、文本診斷會(huì)話、診斷會(huì)話終止等功能。
1.2.4 診斷會(huì)話管理功能 診斷會(huì)話管理功能針對(duì)系統(tǒng)管理員用戶設(shè)置,主要包括診斷會(huì)話模式設(shè)置、診斷會(huì)話記錄查詢和打印等功能。
1.2.5 診斷會(huì)話備錄功能 診斷會(huì)話備錄功能針對(duì)專家用戶,提供診斷會(huì)話記錄的查看、添加等功能。
1.2.6 其他輔助功能 其他輔助功能提供用戶會(huì)話歷史記錄列表顯示與詳情查看、對(duì)方視音頻會(huì)話音量調(diào)整、會(huì)話消息聲音提示設(shè)置、視音頻捕獲參數(shù)調(diào)整、清空文本聊天消息列表、查看自己視頻等功能。
1.3 數(shù)據(jù)庫設(shè)計(jì)
利用ER(Entity relationship)方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),設(shè)計(jì)ER模式,得到最終的模式(概念模式)。系統(tǒng)包括用戶、診斷會(huì)話歷史記錄、用戶登錄日志和診斷會(huì)話等4個(gè)部分。數(shù)據(jù)庫設(shè)計(jì)在系統(tǒng)需求分析結(jié)果的基礎(chǔ)上,充分考慮數(shù)據(jù)結(jié)構(gòu)的合理性、完整性和安全性,便于程序設(shè)計(jì)及系統(tǒng)的維護(hù)與升級(jí)[6]。根據(jù)這些原則,設(shè)計(jì)的數(shù)據(jù)庫包含用戶表、用戶登錄日志表、診斷會(huì)話表和診斷會(huì)話歷史記錄表。
2 系統(tǒng)實(shí)現(xiàn)
2.1 診斷會(huì)話模塊功能實(shí)現(xiàn)
診斷會(huì)話模塊是系統(tǒng)的核心模塊和關(guān)鍵模塊,主要包括診斷會(huì)話的發(fā)起、對(duì)方接受/拒絕、建立、保持和停止等功能,其工作界面如圖3所示。為了保證執(zhí)行業(yè)務(wù)邏輯時(shí)數(shù)據(jù)流的正確性,引入了Flex事件機(jī)制將異步變?yōu)橥健Ec傳統(tǒng)的HTML應(yīng)用程序相比,F(xiàn)lex具有強(qiáng)大的優(yōu)勢(shì),可以開發(fā)出基于瀏覽器的健壯且高度交互的Web應(yīng)用,有效降低數(shù)據(jù)通信量,節(jié)省網(wǎng)絡(luò)帶寬,提高頁面反應(yīng)速度[7]。本模塊的實(shí)現(xiàn)原理為:利用ActionScriopt語言對(duì)后臺(tái)數(shù)據(jù)進(jìn)行處理并將服務(wù)器端數(shù)據(jù)發(fā)送到客戶端,對(duì)其編譯后生成SWF文件,用戶訪問時(shí)SWF文件被下載到本地,在本地瀏覽器的FlashPlayer上運(yùn)行客戶端和表現(xiàn)層邏輯,處理用戶請(qǐng)求,執(zhí)行數(shù)據(jù)驗(yàn)證,發(fā)出HTTP和AMF數(shù)據(jù)請(qǐng)求以及這些請(qǐng)求之間的處理[8]。
本模塊功能的實(shí)現(xiàn)主要借助Flex和FMS里的NetConnection、NetStream、SharedObject等對(duì)象,并調(diào)用HttpService來完成。主要代碼如下所示:
publisherName = lcInfo.lginedName;
customerName=selectChatter_Win.selectedChatterName;
if(msgSOApp == null)endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系統(tǒng)通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “診斷用戶”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您發(fā)出會(huì)話邀請(qǐng)”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會(huì)話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺(tái)診斷會(huì)話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實(shí)現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對(duì)象來完成,其中導(dǎo)出功能的主要代碼如下所示:
HttpResponse resp = Page.Response;
string FileName = “導(dǎo)出數(shù)據(jù)”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小結(jié)
該系統(tǒng)集成使用了Flex、FMS、ASP.NET和SQL Server技術(shù),采用了遠(yuǎn)程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實(shí)時(shí)數(shù)據(jù)同步和分發(fā)技術(shù)、用于實(shí)現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機(jī)制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護(hù)簡(jiǎn)單,用戶操作簡(jiǎn)單、方便,可以實(shí)現(xiàn)作物病蟲害專家與就診用戶之間的遠(yuǎn)程視音頻診斷會(huì)話和文本診斷會(huì)話,對(duì)于提高病蟲害的防治水平有一定的意義。
參考文獻(xiàn):
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識(shí)服務(wù)平臺(tái)建設(shè)研究[A].第二屆國際計(jì)算機(jī)及計(jì)算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會(huì)暨第二屆中國農(nóng)村信息化發(fā)展論壇論文集[C].北京:電子工業(yè)出版社,2008.168-170.
[2] 李繼平,程 鴻,李青青,等.蔬菜病害診斷及咨詢多媒體系統(tǒng)研制及應(yīng)用[J].甘肅農(nóng)業(yè)科技,2007(6):11-13.
[3] 彭瑩瓊,王映龍,唐建軍,等.B/S模式的水稻病蟲害診斷專家系統(tǒng)研究[J].江西農(nóng)業(yè)大學(xué)學(xué)報(bào),2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長(zhǎng)春師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 碩.Flex在開發(fā)Web系統(tǒng)客戶端應(yīng)用探究與實(shí)現(xiàn)[J].軟件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陳建勛,譯.北京:電子工業(yè)出版社,2007.endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系統(tǒng)通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “診斷用戶”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您發(fā)出會(huì)話邀請(qǐng)”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會(huì)話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺(tái)診斷會(huì)話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實(shí)現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對(duì)象來完成,其中導(dǎo)出功能的主要代碼如下所示:
HttpResponse resp = Page.Response;
string FileName = “導(dǎo)出數(shù)據(jù)”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小結(jié)
該系統(tǒng)集成使用了Flex、FMS、ASP.NET和SQL Server技術(shù),采用了遠(yuǎn)程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實(shí)時(shí)數(shù)據(jù)同步和分發(fā)技術(shù)、用于實(shí)現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機(jī)制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護(hù)簡(jiǎn)單,用戶操作簡(jiǎn)單、方便,可以實(shí)現(xiàn)作物病蟲害專家與就診用戶之間的遠(yuǎn)程視音頻診斷會(huì)話和文本診斷會(huì)話,對(duì)于提高病蟲害的防治水平有一定的意義。
參考文獻(xiàn):
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識(shí)服務(wù)平臺(tái)建設(shè)研究[A].第二屆國際計(jì)算機(jī)及計(jì)算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會(huì)暨第二屆中國農(nóng)村信息化發(fā)展論壇論文集[C].北京:電子工業(yè)出版社,2008.168-170.
[2] 李繼平,程 鴻,李青青,等.蔬菜病害診斷及咨詢多媒體系統(tǒng)研制及應(yīng)用[J].甘肅農(nóng)業(yè)科技,2007(6):11-13.
[3] 彭瑩瓊,王映龍,唐建軍,等.B/S模式的水稻病蟲害診斷專家系統(tǒng)研究[J].江西農(nóng)業(yè)大學(xué)學(xué)報(bào),2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長(zhǎng)春師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 碩.Flex在開發(fā)Web系統(tǒng)客戶端應(yīng)用探究與實(shí)現(xiàn)[J].軟件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陳建勛,譯.北京:電子工業(yè)出版社,2007.endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系統(tǒng)通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “診斷用戶”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您發(fā)出會(huì)話邀請(qǐng)”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會(huì)話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺(tái)診斷會(huì)話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實(shí)現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對(duì)象來完成,其中導(dǎo)出功能的主要代碼如下所示:
HttpResponse resp = Page.Response;
string FileName = “導(dǎo)出數(shù)據(jù)”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小結(jié)
該系統(tǒng)集成使用了Flex、FMS、ASP.NET和SQL Server技術(shù),采用了遠(yuǎn)程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實(shí)時(shí)數(shù)據(jù)同步和分發(fā)技術(shù)、用于實(shí)現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機(jī)制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護(hù)簡(jiǎn)單,用戶操作簡(jiǎn)單、方便,可以實(shí)現(xiàn)作物病蟲害專家與就診用戶之間的遠(yuǎn)程視音頻診斷會(huì)話和文本診斷會(huì)話,對(duì)于提高病蟲害的防治水平有一定的意義。
參考文獻(xiàn):
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識(shí)服務(wù)平臺(tái)建設(shè)研究[A].第二屆國際計(jì)算機(jī)及計(jì)算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會(huì)暨第二屆中國農(nóng)村信息化發(fā)展論壇論文集[C].北京:電子工業(yè)出版社,2008.168-170.
[2] 李繼平,程 鴻,李青青,等.蔬菜病害診斷及咨詢多媒體系統(tǒng)研制及應(yīng)用[J].甘肅農(nóng)業(yè)科技,2007(6):11-13.
[3] 彭瑩瓊,王映龍,唐建軍,等.B/S模式的水稻病蟲害診斷專家系統(tǒng)研究[J].江西農(nóng)業(yè)大學(xué)學(xué)報(bào),2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長(zhǎng)春師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 碩.Flex在開發(fā)Web系統(tǒng)客戶端應(yīng)用探究與實(shí)現(xiàn)[J].軟件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陳建勛,譯.北京:電子工業(yè)出版社,2007.endprint