張航+明花廷+李乃祥
摘要:為提高天津地區(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è)計開發(fā)了一個高實時性、高集成度和高分布性的作物病蟲害專家在線視頻診斷系統(tǒng)。該系統(tǒng)性能穩(wěn)定,用戶使用方便,安裝維護簡單,可以實現(xiàn)作物病蟲害專家與就診用戶之間的遠程視頻音頻診斷會話和文本診斷會話,有效地提高病蟲害防治水平。
關(guān)鍵詞:作物;病蟲害;視頻診斷;Flex
中圖分類號:S435;TP311 文獻標(biāo)識碼:A 文章編號:0439-8114(2014)18-4427-03
作物病蟲害防治工作是農(nóng)業(yè)生產(chǎn)中的一個重要環(huán)節(jié),對病蟲害進行準(zhǔn)確診斷與防治能有效提高作物的質(zhì)量與產(chǎn)量。病蟲害的診斷需要專業(yè)人員的指導(dǎo),而當(dāng)前農(nóng)村基層組織中專業(yè)病蟲害診斷與防治存在人員不足的情況。針對這種情況,一些病蟲害診斷系統(tǒng)已經(jīng)被開發(fā)出來,并在實際農(nóng)業(yè)生產(chǎn)中得到應(yīng)用[1,2]。這些系統(tǒng)一般是以C/S模式開發(fā)的,要求使用者具有較高的計算機操作水平,升級和維護工作困難,共享程度低[3]。隨著技術(shù)不斷發(fā)展,越來越多的軟件設(shè)計采用B/S模式。相對于C/S模式,B/S模式在技術(shù)上具有分布性強、共享性強、維護方便等特點,終端用戶只需會使用瀏覽器即可獲取相關(guān)信息[4]。本研究采用B/S模式并結(jié)合Flex技術(shù),設(shè)計并實現(xiàn)了作物病蟲害專家在線視頻診斷系統(tǒng),以期使得診斷更加快捷、方便,實現(xiàn)資源信息化、診斷決策科學(xué)化,為作物種植管理和病蟲害防治提供了有效的技術(shù)支持。
1 系統(tǒng)設(shè)計
1.1 系統(tǒng)結(jié)構(gòu)
作物病蟲害專家在線視頻診斷系統(tǒng)采用面向?qū)ο蟮姆椒?,結(jié)合MVC(Model-View-Controller)模型來開發(fā)設(shè)計。系統(tǒng)采用Adobe Flex、FMS(Flash media server)、ASP.NET和SQL Server數(shù)據(jù)庫等技術(shù),以Visual Studio 2008和Flex Builder 3.0為開發(fā)平臺。由于Flex本身不能直接訪問和操作服務(wù)器端的數(shù)據(jù)庫,其需要通過服務(wù)器端語言(C#)配合來實現(xiàn)客戶端和服務(wù)器端的數(shù)據(jù)交互與通信[5]。系統(tǒng)整體架構(gòu)如圖1所示。
1.2 系統(tǒng)功能
作物病蟲害專家在線視頻診斷系統(tǒng)包含用戶管理、在線用戶列表、診斷會話、診斷會話管理、診斷會話備錄、其他輔助功能等6個功能模塊。其中關(guān)鍵部分為診斷會話模塊,包含診斷會話發(fā)起、視音頻診斷會話、文本診斷會話、診斷會話終止等功能。系統(tǒng)功能圖如圖2所示。
1.2.1 用戶管理功能 用戶管理功能分為前臺管理和后臺管理。前臺管理主要提供前臺用戶登錄、注冊(僅限診斷用戶)、密碼取回以及個人資料修改等功能。后臺管理為系統(tǒng)管理員提供系統(tǒng)所有用戶的查看、添加、修改、刪除等功能。
1.2.2 在線用戶列表功能 在線用戶列表功能分別顯示所有診斷用戶列表、在線診斷用戶列表、所有專家列表和在線專家列表,提供系統(tǒng)所有用戶的聯(lián)系信息和狀態(tài)信息。
1.2.3 診斷會話功能 診斷會話功能包括診斷會話發(fā)起、視音頻診斷會話、文本診斷會話、診斷會話終止等功能。
1.2.4 診斷會話管理功能 診斷會話管理功能針對系統(tǒng)管理員用戶設(shè)置,主要包括診斷會話模式設(shè)置、診斷會話記錄查詢和打印等功能。
1.2.5 診斷會話備錄功能 診斷會話備錄功能針對專家用戶,提供診斷會話記錄的查看、添加等功能。
1.2.6 其他輔助功能 其他輔助功能提供用戶會話歷史記錄列表顯示與詳情查看、對方視音頻會話音量調(diào)整、會話消息聲音提示設(shè)置、視音頻捕獲參數(shù)調(diào)整、清空文本聊天消息列表、查看自己視頻等功能。
1.3 數(shù)據(jù)庫設(shè)計
利用ER(Entity relationship)方法進行數(shù)據(jù)庫的概念設(shè)計,設(shè)計ER模式,得到最終的模式(概念模式)。系統(tǒng)包括用戶、診斷會話歷史記錄、用戶登錄日志和診斷會話等4個部分。數(shù)據(jù)庫設(shè)計在系統(tǒng)需求分析結(jié)果的基礎(chǔ)上,充分考慮數(shù)據(jù)結(jié)構(gòu)的合理性、完整性和安全性,便于程序設(shè)計及系統(tǒng)的維護與升級[6]。根據(jù)這些原則,設(shè)計的數(shù)據(jù)庫包含用戶表、用戶登錄日志表、診斷會話表和診斷會話歷史記錄表。
2 系統(tǒng)實現(xiàn)
2.1 診斷會話模塊功能實現(xiàn)
診斷會話模塊是系統(tǒng)的核心模塊和關(guān)鍵模塊,主要包括診斷會話的發(fā)起、對方接受/拒絕、建立、保持和停止等功能,其工作界面如圖3所示。為了保證執(zhí)行業(yè)務(wù)邏輯時數(shù)據(jù)流的正確性,引入了Flex事件機制將異步變?yōu)橥?。與傳統(tǒng)的HTML應(yīng)用程序相比,F(xiàn)lex具有強大的優(yōu)勢,可以開發(fā)出基于瀏覽器的健壯且高度交互的Web應(yīng)用,有效降低數(shù)據(jù)通信量,節(jié)省網(wǎng)絡(luò)帶寬,提高頁面反應(yīng)速度[7]。本模塊的實現(xiàn)原理為:利用ActionScriopt語言對后臺數(shù)據(jù)進行處理并將服務(wù)器端數(shù)據(jù)發(fā)送到客戶端,對其編譯后生成SWF文件,用戶訪問時SWF文件被下載到本地,在本地瀏覽器的FlashPlayer上運行客戶端和表現(xiàn)層邏輯,處理用戶請求,執(zhí)行數(shù)據(jù)驗證,發(fā)出HTTP和AMF數(shù)據(jù)請求以及這些請求之間的處理[8]。
本模塊功能的實現(xiàn)主要借助Flex和FMS里的NetConnection、NetStream、SharedObject等對象,并調(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ā)出會話邀請”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺診斷會話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對象來完成,其中導(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ù),采用了遠程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實時數(shù)據(jù)同步和分發(fā)技術(shù)、用于實現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護簡單,用戶操作簡單、方便,可以實現(xiàn)作物病蟲害專家與就診用戶之間的遠程視音頻診斷會話和文本診斷會話,對于提高病蟲害的防治水平有一定的意義。
參考文獻:
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識服務(wù)平臺建設(shè)研究[A].第二屆國際計算機及計算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會暨第二屆中國農(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é)報,2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長春師范學(xué)院學(xué)報(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計與實現(xiàn)[J].測繪工程,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)用探究與實現(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ā)出會話邀請”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺診斷會話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對象來完成,其中導(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ù),采用了遠程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實時數(shù)據(jù)同步和分發(fā)技術(shù)、用于實現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護簡單,用戶操作簡單、方便,可以實現(xiàn)作物病蟲害專家與就診用戶之間的遠程視音頻診斷會話和文本診斷會話,對于提高病蟲害的防治水平有一定的意義。
參考文獻:
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識服務(wù)平臺建設(shè)研究[A].第二屆國際計算機及計算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會暨第二屆中國農(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é)報,2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長春師范學(xué)院學(xué)報(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計與實現(xiàn)[J].測繪工程,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)用探究與實現(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ā)出會話邀請”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 診斷會話記錄管理模塊
本模塊主要是向系統(tǒng)管理員用戶提供前臺診斷會話歷史記錄的列表查詢、導(dǎo)出與打印等功能,實現(xiàn)主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等對象來完成,其中導(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ù),采用了遠程視音頻發(fā)布和播放技術(shù)、基于Flex和FMS的實時數(shù)據(jù)同步和分發(fā)技術(shù)、用于實現(xiàn)異步數(shù)據(jù)流同步的Flex事件處理機制等技術(shù)。該系統(tǒng)基于B/S結(jié)構(gòu),客戶端安裝維護簡單,用戶操作簡單、方便,可以實現(xiàn)作物病蟲害專家與就診用戶之間的遠程視音頻診斷會話和文本診斷會話,對于提高病蟲害的防治水平有一定的意義。
參考文獻:
[1] 譚翠萍,張峻峰,鄭懷國,等.北京農(nóng)村知識服務(wù)平臺建設(shè)研究[A].第二屆國際計算機及計算技術(shù)在農(nóng)業(yè)中的應(yīng)用研討會暨第二屆中國農(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é)報,2008,30(6):1157-1160.
[4] 黃文博,燕 楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長春師范學(xué)院學(xué)報(自然科學(xué)版),2006,25(4):56-58.
[5] 楊 恒,袁懷月,羅 璇.基于Flex和.NET的B/S系統(tǒng)限管理的設(shè)計與實現(xiàn)[J].測繪工程,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)用探究與實現(xiàn)[J].軟件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陳建勛,譯.北京:電子工業(yè)出版社,2007.endprint