999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

東進語音記錄儀MDR3000E系列實現(xiàn)原理分析

2017-09-13 00:50:34陳堃
中國科技縱橫 2017年16期

陳堃

摘 要:目的:分析東進記錄儀MDR3000E實現(xiàn)原理。方法:通過實際運維經(jīng)驗對系統(tǒng)硬件實現(xiàn)進行分析,通過.net Reflector反編譯器、SQL Server Management Studio集成環(huán)境對系統(tǒng)軟件實現(xiàn)進行分析。結(jié)果:分析得出硬件實現(xiàn)部分系統(tǒng)采用典型的客戶機/服務(wù)器架構(gòu).服務(wù)器端軟件實現(xiàn)部分分為前/后端兩部分,前端基于WCF框架實現(xiàn)服務(wù)器端與客戶機端的交互,后端基于典型關(guān)系型數(shù)據(jù)庫實現(xiàn)[1]。結(jié)論:系統(tǒng)實現(xiàn)均采用業(yè)內(nèi)標準框架,設(shè)計符合規(guī)范,存在由于具體現(xiàn)場情況造成傳統(tǒng)設(shè)計缺陷的問題(長時間運行后系統(tǒng)最后錄音功能失效),通過限制被操作數(shù)據(jù)實體的數(shù)據(jù)量解決。

關(guān)鍵詞:.net framework;SQL Server;WCF;ADO.NET組件

中圖分類號:TN912.2 文獻標識碼:A 文章編號:1671-2064(2017)16-0030-03

空管語音記錄系統(tǒng)實現(xiàn)了對空管運行中涉及的各類型語音的錄音、監(jiān)聽、數(shù)據(jù)查詢及備份等功能,同時除本機操作要求外提供網(wǎng)絡(luò)操作數(shù)據(jù)的功能。為民航空管提供查找事故責(zé)任、監(jiān)督工作質(zhì)量的重要手段和依據(jù)。從而有效地保證飛行的安全可靠。本文集中針對東進MDR3000E語音記錄儀系統(tǒng)服務(wù)器端軟件功能的實現(xiàn)原理進行分析,進而結(jié)合其在浦東七年來的運行情況,匯總了系統(tǒng)相關(guān)問題。包括長時間運行后系統(tǒng)最后錄音功能失效的問題,并提出了相應(yīng)的解決方案,通過實踐操作對方案進行了驗證。

1 東進MDR3000E語音記錄儀實現(xiàn)原理分析

1.1 硬件部分

東進公司的MDR3000E系列產(chǎn)品解決方案的硬件組成包括服務(wù)器,局域網(wǎng)、客戶端以及時鐘、錄音數(shù)據(jù)源。屬于典型的C/S結(jié)構(gòu)系統(tǒng)。服務(wù)器匯總處理不同信號源提供的信號,客戶端通過網(wǎng)絡(luò)對服務(wù)器處理過的數(shù)據(jù)進行訪問。系統(tǒng)核心服務(wù)器硬件簡而言之其就是一臺基于PC總線的工業(yè)電腦。語音記錄的關(guān)鍵功能實現(xiàn)即通過在工控機上加裝語音記錄卡(D080D記錄單元)。

1.2 軟件部分

軟件基于windows操作系統(tǒng)開發(fā),典型采用MVC設(shè)計模式進行程序設(shè)計,服務(wù)器前端基于.net framework開發(fā),后臺數(shù)據(jù)庫基于Sql Server數(shù)據(jù)庫系統(tǒng)開發(fā)。

1.2.1 服務(wù)器前端實現(xiàn)分析

為了深入分析前端代碼,我們使用.net Reflector軟件對程序進行反編譯。它是一個類瀏覽器和反編譯器,可以瀏覽程序集的類和方法,可以分析由這些類和方法生成的 Microsoft中間語言(MSIL),并且可以反編譯這些類和方法并查看C#或Visual Basic.NET中的等價類和方法。通過分析,我們發(fā)現(xiàn)前端代碼主要包括以下幾個程序集:

(1)D80d32。顧名思義,實現(xiàn)記錄儀系統(tǒng)D80D記錄單元的功能代碼,涉及較多非.net托管代碼,本文不作解析,通過d080d32.cpp文件將相關(guān)接口暴露在業(yè)務(wù)邏輯處理部分,不影響對系統(tǒng)實現(xiàn)原理的分析。

(2)GPSRCI。顧名思義,實現(xiàn)系統(tǒng)時鐘處理功能,包括串口時鐘信號處理的類文件(GPSMonitor.cs)、Windows系統(tǒng)時鐘處理的類文件(Win32.cs)。

(3)Log4net。包含了代表各類型日志的實體類,優(yōu)秀的第三方日志框架,引用log4net程序集,通過文件Log.config加載至開發(fā)項目,幫助程序員把日志信息輸出到各種不同的目標。

(4)MDRCommon。實現(xiàn)服務(wù)器端關(guān)于初始化服務(wù)的通用方法,包括備份記錄儀數(shù)據(jù)庫相關(guān)方法的類文件(Back UpManager.cs)、讀取/寫入程序接口 ini文件的通用類文件(IniFile.cs)。

(5)MDRContract。程序集的名稱即反映了MDR系統(tǒng)整個C/S架構(gòu)下程序間的通訊基于WCF框架,通過數(shù)據(jù)契約的序列化實現(xiàn)。程序集包括以下數(shù)據(jù)契約:

1)記錄信號相關(guān)的數(shù)據(jù)契約:表示語音通道配置的數(shù)據(jù)契約(ChnlSoundCfg.cs)、表示語音通道狀態(tài)的數(shù)據(jù)契約(ChnlSoundState.cs)、表示語音通道數(shù)據(jù)格式的契約(RecordSound.cs);2)服務(wù)器管理相關(guān)的數(shù)據(jù)契約:表示記錄儀系統(tǒng)服務(wù)器端當(dāng)前配置信息的數(shù)據(jù)契約(SystemCfg.cs)、表示記錄儀系統(tǒng)服務(wù)器端當(dāng)前狀態(tài)信息的數(shù)據(jù)契約(SystemState.cs),包含大量GPS狀態(tài)信息、表示記錄儀系統(tǒng)服務(wù)器網(wǎng)絡(luò)接口信息的數(shù)據(jù)契約(HostInfo.cs)、表示記錄儀系統(tǒng)服務(wù)器硬盤使用情況信息的數(shù)據(jù)契約(DiskInfo.cs)、表示用戶信息及權(quán)限的數(shù)據(jù)契約(UserInfo.cs)、表示系統(tǒng)運行日志的數(shù)據(jù)契約(LogInfo.cs);3)服務(wù)器管理相關(guān)的服務(wù)契約:實現(xiàn)系統(tǒng)配置及硬盤管理的服務(wù)契約接口(ISystem Manager.cs)、實現(xiàn)用戶管理、日志管理、數(shù)據(jù)庫操作的服務(wù)契約接口(IDataManager.cs)、實現(xiàn)各類型通道操作的服務(wù)契約接口(IChnlController.cs)、通過雙程操作實現(xiàn)服務(wù)器與客戶端關(guān)于通道狀態(tài)及系統(tǒng)配置信息交互的服務(wù)契約接口(IRegisterManager.cs)。

(6)MDRServerImpl。該程序集為記錄儀系統(tǒng)業(yè)務(wù)邏輯處理的核心,通過對前述及本程序集包含的各個實體類以及核心處理方法的調(diào)用,封裝成服務(wù)行為(MDR ServiceImpl.cs),從而實現(xiàn)系統(tǒng)業(yè)務(wù)邏輯,主要包括以下實體類:

1)D08D32程序集:該程序集引用了所有D80D記錄單元對外的程序方法接口(D80d32程序集),因為相關(guān)硬件代碼通過C++程序段暴露接口,所以該項目大量使用MarshalAs方法,使.net framework在托管代碼和非托管代碼之間封送數(shù)據(jù)(nativeMethod.cs);2)基于數(shù)據(jù)訪問層的系統(tǒng)數(shù)據(jù)庫操作通用方法(MDRDB.cs):功能針對語音通道數(shù)據(jù)格式的契約實體提供了增、改的基礎(chǔ)操作。針對語音通道配置的數(shù)據(jù)契約實體、語音通道數(shù)據(jù)格式的契約實體分別提供了查詢基礎(chǔ)操作。查詢基礎(chǔ)操作中大量調(diào)用了序列化方法(FuncHelper.cs)將數(shù)據(jù)庫記錄映射為實體對象;3)實現(xiàn)系統(tǒng)配置及硬盤管理的實體類(SystemManager.cs):實現(xiàn)了系統(tǒng)配置參數(shù)的讀取與設(shè)置、通道電壓狀態(tài)的讀取方法;4)基于數(shù)據(jù)訪問層實現(xiàn)用戶管理、日志管理、語音通道數(shù)據(jù)格式的契約實體查詢及統(tǒng)計操作的實體類(DataManager.cs);5)實現(xiàn)服務(wù)器與客戶端關(guān)于通道狀態(tài)及系統(tǒng)配置信息交互的實體類(RegisterManager.cs);6)實現(xiàn)監(jiān)聽和雷達、語音綜合回放功能的業(yè)務(wù)邏輯實體類(ChnlController.cs);7)調(diào)用D80D32程序集實現(xiàn)監(jiān)聽和雷達、語音綜合回放功能的實體類(ChnlWorker.cs);8)實現(xiàn)語音記錄功能的業(yè)務(wù)邏輯實體類(ChnlSound.cs):包括通道采用語音激活方式的業(yè)務(wù)邏輯處理、采用壓控方式的業(yè)務(wù)邏輯處理。處理中調(diào)用了錄音文件生成和相關(guān)數(shù)據(jù)庫操作(MDRDB.cs)通用方法;9)實現(xiàn)語音記錄存儲區(qū)域自動清理功能的實體類(DiskClearManager.cs):過程中引用MDRCommon程序集中的IniFile實體類方法,讀取鍵值(RemoveInfo)中語音記錄存儲區(qū)域剩余空間要求(DiskLimit)和自動清理功能運行時間間隔(DiskClearCheckInterval),如果自動清理功能運行檢查發(fā)現(xiàn)語音記錄存儲區(qū)域剩余空間小于要求,則執(zhí)行最早語音記錄刪除程序,刪除語音記錄存儲區(qū)域?qū)?yīng)最早一日的原始語音記錄文件夾及相應(yīng)數(shù)據(jù)庫記錄;10)實現(xiàn)封裝系統(tǒng)服務(wù)器端服務(wù)行為的實體類(MDR ServiceImpl.cs):該服務(wù)行為支持并發(fā)、且采用全局所有會話單服務(wù)實例的single模式。通過調(diào)用程序集中相關(guān)實體類(ChnlController、Data Manager、SystemManager、RegisterManager)實現(xiàn)MDRContract程序集中相關(guān)接口(IChnlController、IDataManager、ISystemManager、IRegisterManager)。endprint

(7)MDRHost。基于WCF框架的服務(wù)本身不能夠單獨運行,因此該程序集即為封裝的服務(wù)行為(MDR ServiceImpl.cs)寄宿的宿主程序。主要包括以下實體類:

封裝的服務(wù)行為(MDR ServiceImpl.cs)寄宿的宿主程序的實體類(MDRHost.cs):由內(nèi)部類中的線程類Thread Work實現(xiàn),通過讀取Server.ini文件相關(guān)數(shù)據(jù)庫連接內(nèi)容初始化后端數(shù)據(jù)庫連接、讀取相關(guān)記錄卡類型信息初始化相關(guān)板卡驅(qū)動,宿主程序啟動后,監(jiān)聽相關(guān)停止、暫停控制指令并執(zhí)行。

1.2.2 服務(wù)器后端實現(xiàn)分析

數(shù)據(jù)庫的邏輯設(shè)計符合3NF,雖然關(guān)系模式未能規(guī)范至更高的等級,卻是最合適的[2]。記錄儀系統(tǒng)大量業(yè)務(wù)集中于語音通道數(shù)據(jù)(RecordSound)的查詢,假使數(shù)據(jù)庫的邏輯設(shè)計規(guī)范化至4NF,則大量的語音通道數(shù)據(jù)查詢使系統(tǒng)必須進行連接運算,而連接運算的代價是相當(dāng)高的,可以說關(guān)系模型低效的主要原因即做連接運算引起的。

數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計中僅對極少屬性設(shè)計了索引。以語音通道數(shù)據(jù)表(RecordSound)為例,僅針對列(RTime)設(shè)計了非聚集索引(IX_RecordSound)。因為該列的值存在大數(shù)目的不同值以及頻繁被更新的情況,因此不適合建立聚集索引。雖然后端的邏輯設(shè)計和物理設(shè)計并無缺陷,但前后端結(jié)合后的程序設(shè)計通過實際運行后確實存在問題。2014年-2015年期間浦東地區(qū)東進記錄儀系統(tǒng)在使用4年后發(fā)生“最后錄音”功能失效及語音記錄查詢響應(yīng)緩慢的情況。我們分析系統(tǒng)故障日志,發(fā)現(xiàn)以下故障記錄:

(1)MDRServerImpl.DiskClearManager.GetSubDirMinDate(DirectoryInfo dirRoot) 位置 J:\MDR源程序\2011_2_18 V2.1正式版\MDR NET RADAR 2010 0805\MDRServerImpl\DiskClearManager.cs:行號 143

(2)[2015-03-28 10:29:41,345][MDRServerImpl.DataManager.DeleteRecord(J:\MDR源程序\2011_2_18 V2.1正式版\MDR NET RADAR 2010 0805\MDR ServerImpl\DataManager.cs:147)][ERROR]數(shù)據(jù)庫刪除記錄信息失敗

(3)[2015-03-28 10:29:41,345][MDRServerImpl.DataManager.DeleteRecord(J:\MDR源程序\2011_2_18 V2.1正式版\MDR NET RADAR 2010 0805\MDR ServerImpl\DataManager.cs:148)][ERROR]超時時間已到。在操作完成之前超時時間已過或服務(wù)器未響應(yīng)。

基于服務(wù)器的前端實現(xiàn)分析,相關(guān)故障情況的直接原因為:記錄儀語音通道數(shù)據(jù)量較大,平均每日為60,000條左右,在長時間運行后系統(tǒng)記錄存儲區(qū)域剩余空間已達上限,須執(zhí)行語音記錄存儲區(qū)域自動清理功能,即程序集(MDRServerImpl)中的實體類(DiskClearManager.cs)所實現(xiàn)的功能,功能中相關(guān)語音通道數(shù)據(jù)的刪除操作由程序集(MDRServerImpl)中的實體類(DataManager.cs)實現(xiàn),采用了ADO.NET組件庫提供的方法。默認超時時間為30s,如果在CommandTimeout屬性中設(shè)置的時間間隔內(nèi)沒有完成命令執(zhí)行,將產(chǎn)生錯誤,ADO將取消該命令。顯然長時間運行已造成系統(tǒng)數(shù)據(jù)庫及語音數(shù)據(jù)存儲負荷過大,即記錄查找時間過長,進而造成刪除操作的超時情況。為避免這類情況的發(fā)生,有以下方案供選擇:

(1)取消相關(guān)實體類數(shù)據(jù)庫操作的超時設(shè)置,將屬性CommandTimeout設(shè)置為零,ADO 組件將無限期等待直到命令執(zhí)行完畢。以Command對象為例,調(diào)整Command.CommandTimeout屬性為0即可,但數(shù)據(jù)庫的刪除操作(Delete)除刪除操作本身外,包含大量事務(wù)日志的生成。基于數(shù)據(jù)庫性能,系統(tǒng)目前事務(wù)日志文件大小上限為1G。經(jīng)實際環(huán)境測算,當(dāng)刪除的數(shù)據(jù)庫記錄超過1,300,000條后,事務(wù)日志文件容量將達到上限。如果出現(xiàn)系統(tǒng)記錄存儲區(qū)域剩余空間達到上限的情況后,系統(tǒng)會不斷執(zhí)行語音記錄存儲區(qū)域自動清理操作,反復(fù)執(zhí)行勢必造成大量事務(wù)日志的生成,即使數(shù)據(jù)庫刪除操作無超時限制,數(shù)據(jù)庫最終仍會產(chǎn)生“數(shù)據(jù)庫MDR的事務(wù)日志已滿”的異常,造成自動清理功能的失效,因此該方案不可取。

(2)限制被操作數(shù)據(jù)實體的數(shù)據(jù)量以達到縮短SQL SERVER操作執(zhí)行時間的目的,這不僅滿足上位法的要求(保留1個月的語音通道數(shù)據(jù)),同時節(jié)省系統(tǒng)存儲空間、提高系統(tǒng)運行效率,因此我們選擇通過該方式解決。解決的方式有以下兩個原則:在不影響數(shù)據(jù)庫記錄查詢時間的條件下,存儲語音通道數(shù)據(jù)量盡可能最大(充分利用存儲空間);達到系統(tǒng)記錄存儲區(qū)域剩余空間的上限后,自動清理功能刪除的記錄盡量少(減少事務(wù)日志記錄生成,提高數(shù)據(jù)庫效率)。通過實際環(huán)境測試,我們得出結(jié)果:限制被操作數(shù)據(jù)實體的數(shù)據(jù)量為5個月內(nèi)的數(shù)據(jù)生成量的條件下,能使系統(tǒng)運行達到最優(yōu)效果。使用腳本刪除系統(tǒng)多余語音通道數(shù)據(jù)后,“最后錄音”功能失效及語音記錄查詢響應(yīng)緩慢的故障恢復(fù)。在系統(tǒng)記錄存儲區(qū)域剩余空間達到上限條件下,系統(tǒng)每隔10分鐘執(zhí)行清理功能。

2 結(jié)語

本文從硬件及軟件兩個方面分析了東進MDR3000E系列記錄儀系統(tǒng)服務(wù)器端功能的實現(xiàn)原理。硬件部分集中說明了系統(tǒng)拓撲及服務(wù)器硬件配置。軟件部分分為前后端分別說明。前端包含程序設(shè)計框架、設(shè)計思路及具體代碼設(shè)計邏輯。后端包含系統(tǒng)數(shù)據(jù)庫的邏輯設(shè)計及物理設(shè)計分析。通過分析提出了導(dǎo)致2014年-2015年期間浦東地區(qū)東進記錄儀系統(tǒng)相關(guān)故障的設(shè)計缺陷,最終確定一種最優(yōu)的方案,實現(xiàn)限制被操作數(shù)據(jù)實體的數(shù)據(jù)量從而解決相關(guān)缺陷。

參考文獻

[1]Juual Lowy.Programming WCF Services[M].武漢:華中科技大學(xué)出版社,2011.

[2]孟祥瑞.數(shù)據(jù)庫原理及應(yīng)用[M].上海:華東理工大學(xué)出版社,2005.endprint

主站蜘蛛池模板: 麻豆国产精品视频| 精品日韩亚洲欧美高清a| 无码中文字幕精品推荐| 国产精品19p| 久久免费看片| 亚洲天堂区| 最新国产成人剧情在线播放| 欧美成人午夜在线全部免费| 91久久精品国产| 欧美黑人欧美精品刺激| 国产chinese男男gay视频网| 伊人久久久久久久| 丁香婷婷综合激情| 国产精品免费福利久久播放 | 国产精品尤物在线| 91精品久久久无码中文字幕vr| 91欧美亚洲国产五月天| 成人欧美在线观看| 青青国产成人免费精品视频| V一区无码内射国产| 亚洲欧美日韩中文字幕一区二区三区 | 国产婬乱a一级毛片多女| 老熟妇喷水一区二区三区| 免费va国产在线观看| 一级成人a毛片免费播放| 福利视频一区| 国产精品久久久久无码网站| 久久99久久无码毛片一区二区| 色综合手机在线| 99久久国产综合精品2020| 内射人妻无码色AV天堂| 亚洲二区视频| 国产啪在线| 国产视频只有无码精品| 国产在线无码一区二区三区| 国产精品专区第1页| 欧美精品一区二区三区中文字幕| 三上悠亚精品二区在线观看| 91九色国产在线| 午夜免费视频网站| 亚洲国产综合第一精品小说| 日韩欧美91| 国产欧美精品一区aⅴ影院| 亚洲精品你懂的| 国产99视频在线| 青青草原国产精品啪啪视频| 国产精品综合色区在线观看| 欧美日韩在线亚洲国产人| 超碰免费91| 国产精品久久久精品三级| 亚洲国模精品一区| 午夜不卡福利| 欧美精品啪啪| 亚洲天堂网在线观看视频| 国产毛片基地| 在线无码九区| 亚洲男人的天堂在线| 日韩色图在线观看| 亚洲成年人片| 日韩国产欧美精品在线| 99热国产在线精品99| 欧美日韩理论| 久久99精品久久久久久不卡| 国产精品一区二区在线播放| 成人午夜在线播放| 米奇精品一区二区三区| 免费播放毛片| 国产精品第5页| 久久福利片| 热99精品视频| 免费A∨中文乱码专区| 最新国产高清在线| 国产精品久久久久久久久kt| 欧美日韩导航| 91 九色视频丝袜| 亚洲成人播放| 亚洲欧美自拍中文| 草草影院国产第一页| 综合五月天网| 欧美一级在线播放| 国产第八页| 久久中文无码精品|