專利名稱:一種支持動態(tài)編譯的水質(zhì)分析計算服務(wù)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息化技術(shù)在水環(huán)境和水質(zhì)監(jiān)測領(lǐng)域的應(yīng)用,涉及一種水質(zhì)分析計算服務(wù)系統(tǒng)構(gòu)建技術(shù),特別是指通過結(jié)合Web技術(shù)和動態(tài)編譯技術(shù)構(gòu)建網(wǎng)絡(luò)服務(wù)系統(tǒng),提供針對水質(zhì)原始數(shù)據(jù)的二次加工分析服務(wù),包括數(shù)據(jù)預(yù)處理、水質(zhì)評價、水質(zhì)預(yù)測、水質(zhì)預(yù)警等。該系統(tǒng)能為水環(huán)境監(jiān)測、水質(zhì)安全保障工作提供有效的支撐和服務(wù)。
背景技術(shù):
近年來,突發(fā)性水質(zhì)污染事故頻頻發(fā)生,不斷地惡化著我國的水環(huán)境,威脅人民群眾用水安全,給社會經(jīng)濟(jì)帶來了巨大的損失,使得水資源緊張的矛盾愈加突出。面對復(fù)雜多變的水環(huán)境現(xiàn)狀,根據(jù)實際情況對水質(zhì)進(jìn)行分析、評價和預(yù)警,靈活應(yīng)對各種突發(fā)性污染事故,有效處理水質(zhì)污染事故,保障人民用水安全,最大限度減少各方面的損失具有重要的現(xiàn)實意義。
因此,有必要進(jìn)一步加強(qiáng)我國水質(zhì)監(jiān)測系統(tǒng)和水環(huán)境監(jiān)測系統(tǒng)的建設(shè),以提高對水污染事故的預(yù)防和應(yīng)急處理能力。建立水質(zhì)預(yù)警系統(tǒng)是目前國際上公認(rèn)和通用的避免、降低突發(fā)性污染事件的影響,保障源水水質(zhì)和供水安全的可行方法。水質(zhì)預(yù)警系統(tǒng)是在水質(zhì)監(jiān)測的基礎(chǔ)上,對水源水和飲用水水質(zhì)進(jìn)行評價、預(yù)測和分析,判斷是否有警情,報告相應(yīng)的警度,以便通過各種措施來排除警患,減少污染造成的損失。自上世紀(jì)90年代以來,以水質(zhì)在線自動分析儀器為核心,運(yùn)用現(xiàn)代傳感器技術(shù)、自動控制技術(shù)、計算機(jī)技術(shù)及通訊網(wǎng)絡(luò)所組成的綜合性水質(zhì)監(jiān)測預(yù)警系統(tǒng)得到了廣泛的應(yīng)用,目前在水質(zhì)自動監(jiān)測、水質(zhì)評價、水質(zhì)預(yù)測方面均取得了較大的發(fā)展(1)在監(jiān)測技術(shù)方面,水質(zhì)監(jiān)測指標(biāo)已經(jīng)從單純的物理和化學(xué)單項指標(biāo)發(fā)展到利用微生物甚至生物等多項指標(biāo);(2)在水質(zhì)評價方面,已可利用各種水質(zhì)安全評價指標(biāo)體系來對整體水質(zhì)狀況進(jìn)行評價;(3)在水質(zhì)預(yù)測方面,有通過建立河流水質(zhì)預(yù)測預(yù)報模型、湖泊營養(yǎng)物質(zhì)參數(shù)預(yù)報模型、供水系統(tǒng)預(yù)測模型等實現(xiàn)水質(zhì)預(yù)報和仿真模擬的報道;(4)在實際應(yīng)用方面,美國、德國、日本等發(fā)達(dá)國家和我國部分流域都開發(fā)了用于突發(fā)事故預(yù)警的綜合性水質(zhì)監(jiān)測預(yù)警信息化系統(tǒng),有效保障了城市和流域的水環(huán)境安全。然而,現(xiàn)有大多數(shù)水質(zhì)監(jiān)測系統(tǒng)或水環(huán)境監(jiān)測系統(tǒng)采用固定的閾值報警模式,即當(dāng)水質(zhì)原始數(shù)據(jù)超過國家規(guī)定水質(zhì)標(biāo)準(zhǔn)或自定義標(biāo)準(zhǔn)時,系統(tǒng)進(jìn)行報警。并且,報警閾值或報警算法一般內(nèi)嵌于水質(zhì)分析設(shè)備(系統(tǒng))內(nèi)部。采用這一種單一的報警模式和固定的內(nèi)嵌算法,已無法適應(yīng)目前日益復(fù)雜的水環(huán)境污染現(xiàn)狀??偟膩碚f,由于水環(huán)境的復(fù)雜性、污染物的多樣性和突發(fā)事件的隨機(jī)性,現(xiàn)有大多水質(zhì)監(jiān)測系統(tǒng)/水環(huán)境監(jiān)測系統(tǒng)根據(jù)警限(報警閾值)進(jìn)行報警的現(xiàn)狀,難以滿足進(jìn)行水環(huán)境/水質(zhì)智能檢測和自動檢測的需要。鑒于我國目前水環(huán)境的嚴(yán)峻狀況,建立先進(jìn)的、自動化的、開放式的、基于網(wǎng)絡(luò)技術(shù)和信息處理技術(shù)的水質(zhì)分析服務(wù)系統(tǒng),以取代傳統(tǒng)的、單一的水質(zhì)指標(biāo)超標(biāo)報警,已成為我國目前水環(huán)境安全領(lǐng)域急需進(jìn)行深入研究和解決的問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有水環(huán)境監(jiān)測系統(tǒng)和水質(zhì)監(jiān)測系統(tǒng)的不足,提供一種支持動態(tài)編譯的水質(zhì)分析計算服務(wù)系統(tǒng),利用該系統(tǒng)可為各類水質(zhì)監(jiān)測設(shè)備和水質(zhì)監(jiān)測系統(tǒng)提供自定義水質(zhì)分析算法編譯服務(wù)和水質(zhì)分析計算遠(yuǎn)程網(wǎng)絡(luò)服務(wù),以提高現(xiàn)有水質(zhì)監(jiān)測設(shè)備和水質(zhì)監(jiān)測系統(tǒng)的自動化水平和智能化水平。如圖I所示,本發(fā)明所采取的技術(shù)方案是系統(tǒng)采用B/S(瀏覽器/服務(wù)器)三層網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建,包括數(shù)據(jù)服務(wù)層、應(yīng)用服務(wù)層和用戶層。其中
(I)數(shù)據(jù)服務(wù)層負(fù)責(zé)多源水質(zhì)數(shù)據(jù)、水質(zhì)分析算法、中間數(shù)據(jù)和結(jié)果數(shù)據(jù)的存儲和共享,包括 a.水質(zhì)數(shù)據(jù)庫主要用于存儲、共享水質(zhì)歷史數(shù)據(jù)和實時監(jiān)測數(shù)據(jù),并包括水質(zhì)監(jiān)測站信息、水文信息、氣象信息等相關(guān)數(shù)據(jù),為水質(zhì)分析工作服務(wù)。b.計算任務(wù)庫用于存儲水質(zhì)分析計算任務(wù),包括任務(wù)名稱、任務(wù)類型、任務(wù)狀態(tài)、任務(wù)執(zhí)行周期、任務(wù)創(chuàng)建時間、下次運(yùn)行時間、上次運(yùn)行時間、對應(yīng)算法ID、對應(yīng)監(jiān)測點(diǎn)(數(shù)據(jù)源)等內(nèi)容;水質(zhì)分析計算任務(wù)是指針對某種特定分析目的,利用水質(zhì)數(shù)據(jù),根據(jù)水質(zhì)分析算法或水質(zhì)分析模型,對水質(zhì)進(jìn)行評價、預(yù)測、預(yù)警并獲得知識性結(jié)果的過程。C.水質(zhì)分析算法庫以代碼文本和動態(tài)鏈接庫兩種形式存儲水質(zhì)分析算法,其中代碼文本為用戶自定義的、待編譯的水質(zhì)分析算法代碼,為文本格式;動態(tài)鏈接庫為已編譯完成的水質(zhì)分析算法文件,可由其它部分調(diào)用執(zhí)行;動態(tài)鏈接庫中,其中一部分為系統(tǒng)內(nèi)嵌的水質(zhì)指標(biāo)報警、水質(zhì)評價、水質(zhì)預(yù)測和水質(zhì)預(yù)警算法,另一部分為根據(jù)用戶自定義算法生成的水質(zhì)分析算法。d.計算結(jié)果庫用于存儲由計算服務(wù)器完成單項計算任務(wù)后獲得的計算結(jié)果數(shù)據(jù),如評價結(jié)果、預(yù)測結(jié)果、預(yù)警結(jié)果等,為各種水質(zhì)分析應(yīng)用提供服務(wù)。(2)應(yīng)用服務(wù)層是用戶層(Web客戶端)與數(shù)據(jù)服務(wù)層之間的邏輯層,負(fù)責(zé)主要業(yè)務(wù)邏輯的實現(xiàn),包括
a.計算服務(wù)器用于提供水質(zhì)分析計算服務(wù),根據(jù)計算任務(wù)庫中的任務(wù)信息,自動更新計算服務(wù)隊列、獲取相應(yīng)水質(zhì)數(shù)據(jù)、調(diào)用相應(yīng)水質(zhì)分析算法、完成水質(zhì)分析計算任務(wù),將計算結(jié)果數(shù)據(jù)保存至計算結(jié)果庫。b.動態(tài)編譯服務(wù)器用于提供自定義水質(zhì)分析算法的編譯服務(wù),通過獲取水質(zhì)分析算法庫中的代碼文本,調(diào)用代碼編譯器接口,對文本代碼進(jìn)行動態(tài)編譯,生成新的動態(tài)鏈接庫后保存至水質(zhì)分析算法庫。(3)用戶層(也稱為Web客戶端層),用于將計算結(jié)果數(shù)據(jù)呈現(xiàn)給用戶、實現(xiàn)用戶對計算任務(wù)和算法的管理,它通過客戶端向服務(wù)器請求數(shù)據(jù),然后以一定的格式顯示結(jié)果。主要提供如下功能單元
a.計算結(jié)果展示單元采用表格、圖形、曲線、地圖等不同可視化手段向用戶展示水質(zhì)分析計算結(jié)果,為水質(zhì)監(jiān)測預(yù)警服務(wù)。b.計算任務(wù)管理單元提供用戶接口,實現(xiàn)對計算任務(wù)的管理,包括對計算任務(wù)的新建、刪除、編輯、啟動、禁止、立即執(zhí)行等操作。c.水質(zhì)分析算法管理單元提供用戶接口,實現(xiàn)水質(zhì)分析算法DLL管理(新建、刪除、編輯水質(zhì)分析算法DLL)和水質(zhì)分析算法代碼管理(新建、刪除、編輯、編譯水質(zhì)分析算法文本代碼),其中水質(zhì)分析算法代碼編譯功能通過調(diào)用動態(tài)編譯服務(wù)器對代碼進(jìn)行動態(tài)編譯,生成新的動態(tài)鏈接庫或更新已存在的動態(tài)鏈接庫,并實時更新水質(zhì)分析算法庫。本發(fā)明的核心內(nèi)容為計算服務(wù)器和動態(tài)編譯服務(wù)器,其中動態(tài)編譯服務(wù)器實現(xiàn)對用戶自行編程輸入的水質(zhì)分析算法代碼文本進(jìn)行動態(tài)編譯,生成動態(tài)鏈接庫并進(jìn)行存儲、共享,可為各類水質(zhì)分析工作服務(wù),改進(jìn)了常規(guī)水質(zhì)監(jiān)測設(shè)備和水質(zhì)監(jiān)測系統(tǒng)內(nèi)嵌算法、固定算法的不足,大大提高了水質(zhì)分析的靈活性和開放性;計算服務(wù)器實現(xiàn)多任務(wù)、多線程的水質(zhì)分析算法遠(yuǎn)程調(diào)用和實時計算,獲得的水質(zhì)數(shù)據(jù)分析結(jié)果供用戶決策分析使用,可服務(wù)大量用戶而非單一用戶,大大提高了水質(zhì)監(jiān)測系統(tǒng)的網(wǎng)絡(luò)化水平和自動化水平。 本發(fā)明中的計算服務(wù)器的技術(shù)原理如下
(I)計算服務(wù)器包括計算服務(wù)引擎(如圖2所示)、計算任務(wù)管理引擎、計算服務(wù)監(jiān)控器、數(shù)據(jù)服務(wù)引擎四部分。(2)計算服務(wù)引擎采用多線程處理技術(shù)實現(xiàn)水質(zhì)分析服務(wù)的多任務(wù)計算,主要由守護(hù)線程和主線程兩個線程組成。其中守護(hù)線程周期性查詢計算任務(wù)庫,當(dāng)計算任務(wù)庫中的某項已注冊任務(wù)滿足觸發(fā)(執(zhí)行)條件時,生成一條新的計算任務(wù)線程信息并自動壓入內(nèi)存中的計算任務(wù)隊列進(jìn)行排隊,計算任務(wù)隊列中的計算任務(wù)線程信息包括線程ID、線程句柄、線程狀態(tài)、對應(yīng)任務(wù)ID、線程創(chuàng)建時間和線程最大運(yùn)行時間等;主線程提取計算任務(wù)隊列中的計算線程信息,生成新的計算線程實例,該計算線程實例根據(jù)對應(yīng)任務(wù)要求,調(diào)用相應(yīng)的算法和水質(zhì)數(shù)據(jù)進(jìn)行計算,計算完成后,計算服務(wù)引擎注銷該線程,同時更新計算任務(wù)庫信息。(3)計算任務(wù)管理引擎用于實現(xiàn)對計算任務(wù)的管理。用戶通過計算任務(wù)管理單元,調(diào)用該引擎完成對計算任務(wù)的注冊、編輯和注銷等操作。用戶在客戶端填寫任務(wù)相關(guān)信息,包括任務(wù)名稱、任務(wù)類型、任務(wù)狀態(tài)、任務(wù)執(zhí)行周期、任務(wù)創(chuàng)建時間、下次運(yùn)行時間、上次運(yùn)行時間、對應(yīng)算法ID、對應(yīng)監(jiān)測點(diǎn)ID (數(shù)據(jù)源)等內(nèi)容,以XML的形式發(fā)送給計算任務(wù)管理引擎,該引擎收到用戶注冊信息后,對注冊信息進(jìn)行解析,在計算任務(wù)庫中新增一項任務(wù),完成計算任務(wù)的注冊過程。當(dāng)用戶需要注銷相關(guān)計算任務(wù)時,在客戶端提交需要注銷的計算任務(wù)ID,計算任務(wù)管理引擎對計算任務(wù)庫中的相應(yīng)計算任務(wù)進(jìn)行刪除,并將注銷過程記錄寫入服務(wù)記錄數(shù)據(jù)庫備案(如圖3所示)。(4)計算服務(wù)監(jiān)控器用于對計算服務(wù)引擎的運(yùn)行情況進(jìn)行實時監(jiān)控,保障計算服務(wù)的穩(wěn)定性。計算服務(wù)監(jiān)控器定時檢查內(nèi)存中計算線程實例的狀態(tài),包括就緒狀態(tài)、掛起狀態(tài)、停止?fàn)顟B(tài)、運(yùn)行狀態(tài)和異常狀態(tài)。為防止計算任務(wù)因運(yùn)行異常而長期處于運(yùn)行狀態(tài)占用系統(tǒng)資源,通過限定任務(wù)運(yùn)行時間,在計算任務(wù)超過設(shè)定運(yùn)行時間后強(qiáng)行中止任務(wù)執(zhí)行。( 5 )數(shù)據(jù)服務(wù)引擎用于提供對數(shù)據(jù)庫重用操作的接口。計算服務(wù)器需要對數(shù)據(jù)庫進(jìn)行頻繁大量的操作,為減少各種操作的耦合度和重用性,另外鑒于水質(zhì)數(shù)據(jù)庫的多源異構(gòu)性,根據(jù)水質(zhì)分析實際需要和水質(zhì)數(shù)據(jù)庫設(shè)計規(guī)范化要求,設(shè)計統(tǒng)一的數(shù)據(jù)訪問接口供其他部分調(diào)用,封裝數(shù)據(jù)訪問邏輯,實現(xiàn)數(shù)據(jù)庫訪問無關(guān)性,保護(hù)數(shù)據(jù)的完整性。本發(fā)明中的動態(tài)編譯服務(wù)器(如圖4所示)的技術(shù)原理如下
(I)動態(tài)編譯服務(wù)器包括動態(tài)編譯控制器、代碼編譯器、數(shù)據(jù)服務(wù)引擎三部分。(2)動態(tài)編譯控制器用于根據(jù)用戶指令和用戶提供的編譯參數(shù)實現(xiàn)水質(zhì)分析算法的完整動態(tài)編譯過程。首先,根據(jù)用戶指令和編譯參數(shù),通過調(diào)用代碼編譯器,對用戶提供的水質(zhì)分析算法代碼進(jìn)行動態(tài)編譯,獲得編譯結(jié)果;然后,監(jiān)視代碼編譯器的狀態(tài),如果編譯結(jié)果返回有誤,則返回錯誤狀態(tài)通知用戶修改代碼;最后,對已編譯成功的動態(tài)編譯算法進(jìn)行運(yùn)行測試,如果返回結(jié)果有誤,則返回錯誤狀態(tài)通知用戶檢查代碼,如果返回結(jié)果成功,則將編譯完成的動態(tài)鏈接庫文件保存到水質(zhì)分析算法庫。(3)代碼編譯器用于對水質(zhì)分析算法的編譯提供執(zhí)行接ロ。代碼編譯器接受動態(tài)編譯控制器的控制指令,在獲得水質(zhì)分析算法代碼后,調(diào)用內(nèi)部的代碼生成器和代碼編譯器,產(chǎn)生需要的編譯結(jié)果,繼而編譯生成動態(tài)鏈接庫,并返回動態(tài)編譯是否成功的結(jié)果。( 4 )數(shù)據(jù)服務(wù)弓I擎用于提供對數(shù)據(jù)庫訪問操作的接ロ。建立統(tǒng)ー的數(shù)據(jù)訪問接ロ供調(diào)用,封裝數(shù)據(jù)訪問邏輯,實現(xiàn)數(shù)據(jù)庫訪問無關(guān)性,保護(hù)數(shù)據(jù)的完整性。本發(fā)明采用B/S結(jié)構(gòu),具有平臺無關(guān)性,伸縮性大、易用性好,易于維護(hù)、信息共享度高、擴(kuò)展性佳和安全性好的特點(diǎn)。這種模式統(tǒng)ー了客戶端,將服務(wù)平臺功能實現(xiàn)的核心部 分集中到服務(wù)器上,簡化了服務(wù)平臺的開發(fā)、維護(hù)和使用。
圖I是本發(fā)明的系統(tǒng)層次架構(gòu)示意圖。圖2是本發(fā)明的計算服務(wù)引擎原理示意圖。圖3是計算服務(wù)引擎的計算任務(wù)運(yùn)行狀態(tài)示意圖。圖4是本發(fā)明的動態(tài)編譯引擎原理示意圖。圖5是動態(tài)編譯引擎的工作流程圖。
具體實施例方式下面結(jié)合具體實施例,進(jìn)ー步闡釋本發(fā)明。應(yīng)理解,這些實施例用于說明本發(fā)明而不用于限制本發(fā)明的范圍。本發(fā)明具體實施例采用B/S(瀏覽器/服務(wù)器)三層網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建水質(zhì)分析計算服務(wù)系統(tǒng),包括數(shù)據(jù)服務(wù)層、應(yīng)用服務(wù)層和用戶層。本發(fā)明具體實施例的系統(tǒng)實現(xiàn)采用ASP. NET編程架構(gòu)。.NET是Microsoft XMLWeb services平臺。XML Web services允許應(yīng)用程序通過Internet進(jìn)行通訊和共享數(shù)據(jù),而不管所采用的是哪種操作系統(tǒng)、設(shè)備或編程語言。Microsoft .NET平臺提供創(chuàng)建XMLWeb services并將這些服務(wù)集成在一起之所需。.NET框架是對語言中立的。目前,它支持 C++、C#、Visual Basic、JScript (JavaScript 的微軟版本)以及 COBOL 等。ASP.NET是.NET中的網(wǎng)絡(luò)編程結(jié)構(gòu),它使得建造、運(yùn)行和發(fā)布網(wǎng)絡(luò)應(yīng)用非常方便和高效。ASP. NET中支持多種語言,通用語言運(yùn)行時支持的所有語言在ASP. NET中都可以使用。ASP. NET巧妙地利用窗體和Javascript腳本把事件的傳遞模型隱藏起來,實現(xiàn)了開發(fā)人員使用事件驅(qū)動式程序開發(fā)模式的方法來開發(fā)網(wǎng)頁與應(yīng)用程序。本發(fā)明具體實施例的數(shù)據(jù)庫采用Microsoft SQL 2005。本發(fā)明具體實施例采用的編譯器接ロ為 NET Framework提供的ICodeCompiler編譯器執(zhí)行接ロ。本發(fā)明的具體實施例如下
(I)采用Microsoft SQL 2005設(shè)計后臺數(shù)據(jù)庫,建立水質(zhì)數(shù)據(jù)庫、計算任務(wù)庫、水質(zhì)分析算法庫、計算結(jié)果庫等相關(guān)數(shù)據(jù)庫表文件,其中
a.水質(zhì)數(shù)據(jù)庫主要包括水質(zhì)數(shù)據(jù)監(jiān)測表、水質(zhì)監(jiān)測站信息表、水文數(shù)據(jù)表、氣象數(shù)據(jù)表等,其中水質(zhì)數(shù)據(jù)監(jiān)測表主要包括監(jiān)測值編碼、監(jiān)測站編碼、數(shù)采儀編碼、在線監(jiān)測儀器編碼、水樣編碼、水樣類型、采樣時間、采樣環(huán)境、因子編碼、監(jiān)測值、監(jiān)測時間、上傳時間等字段;水質(zhì)監(jiān)測站信息表主要包括監(jiān)測站編碼、監(jiān)測站名稱、監(jiān)測站位置、監(jiān)測站X坐標(biāo)、監(jiān)測站y坐標(biāo)、所屬市名、所屬省名、水樣類型、所屬單位類型、所屬部門編碼、創(chuàng)建日期;b.計算任務(wù)庫主要包括計算任務(wù)表、任務(wù)隊列表等。其中計算任務(wù)表包括任務(wù)名稱、任務(wù)類型、任務(wù)狀態(tài)、任務(wù)執(zhí)行周期、任務(wù)創(chuàng)建時間、下次運(yùn)行時間、上次運(yùn)行時間、對應(yīng)算法ID、對應(yīng)監(jiān)測點(diǎn)(數(shù)據(jù)源)等內(nèi)容;
c.水質(zhì)分析算法庫主要包括水質(zhì)分析算法代碼文本表和水質(zhì)分析算法動態(tài)鏈接庫表。d.計算結(jié)果庫主要包括評價結(jié)果表、預(yù)測結(jié)果表、預(yù)警結(jié)果表等,用于存儲由計算服務(wù)器完成單項計算任務(wù)后獲得的計算結(jié)果數(shù)據(jù)。
(2)采用ASP. NET建立基于Web的水質(zhì)分析計算服務(wù)系統(tǒng),開發(fā)用戶層的計算結(jié)果展示単元、計算任務(wù)管理単元、水質(zhì)分析算法管理単元。(3)采用C#語言的反射調(diào)用技術(shù)實現(xiàn)計算服務(wù)器,以提供多線程、多任務(wù)水質(zhì)分析計算服務(wù)功能。C#語言具有完全面向?qū)ο?、支持分布式、健壯、添加對指針的支持、安全、可移植和適合組件開發(fā)等特點(diǎn)。C#的System.Threading. ThreadPool類實現(xiàn)了線程池,并且提供了管理線程池的一系列方法,而且C#的System. Reflection. Emit命名空間的類提供了ー種特殊形式的反射,能夠在運(yùn)行時生成類型。計算服務(wù)器利用反射調(diào)用技術(shù)實現(xiàn)計算服務(wù)的原理如下所述
a.首先通過參數(shù)的傳遞,得到需要加載的水質(zhì)分析算法動態(tài)鏈接庫的路徑和動態(tài)鏈接庫的名稱DllName和服務(wù)類型名稱ServiceName。傳遞參數(shù)DllName,調(diào)用Assembly的LoadFile (DllName)方法加載動態(tài)鏈接庫 DllName,獲得 Assembly 的實例 AssExample ;
b.傳遞參數(shù)ServiceName,調(diào)用 Assembly 的 GetType (ServiceName)方法,實例化Service 類Service SExample = GetType (ServiceName),得到 ServiceName 的實例SExample ;
c.生成新的計算線程,將計算線程壓入隊列中。該線程在得到SExample實例后,調(diào)用方法AnalysisO完成計算分析服務(wù),同吋,將本此任務(wù)運(yùn)行時間、利用MD5算法動態(tài)生成的ID、任務(wù)名稱等信息寫入數(shù)據(jù)庫備份;
d.判斷方法執(zhí)行的返回結(jié)果是否正確,或者是否執(zhí)行過程中拋出了異常,如果返回結(jié)果是錯誤的,則將相應(yīng)的錯誤結(jié)果寫入數(shù)據(jù)庫,或者,將拋出的異常信息寫入數(shù)據(jù)庫,完成錯誤處理過程。反射機(jī)制的使用使水質(zhì)分析計算服務(wù)實現(xiàn)了組件式開發(fā),將水質(zhì)分析算法封裝在動態(tài)鏈接庫里,添加一個新的算法吋,將動態(tài)鏈接庫加入數(shù)據(jù)庫中,通過配置相應(yīng)的任務(wù)運(yùn)行信息就可以完成服務(wù)的擴(kuò)充;刪除ー個新的算法時,將動態(tài)鏈接庫刪除,并在數(shù)據(jù)庫將相應(yīng)的任務(wù)信息注銷就可以完成服務(wù)的刪除。(4)采用C#語言的ICodeCompiler編譯器執(zhí)行接ロ開發(fā)動態(tài)編譯服務(wù)器,以提供用戶自定義代碼的動態(tài)編譯功能。動態(tài)編譯技術(shù)可以在系統(tǒng)運(yùn)行過程中動態(tài)編譯并執(zhí)行用戶輸入的有效代碼,生成相應(yīng)的應(yīng)用程序或DLL。動態(tài)編譯技術(shù)是C#提供的ー種非常靈活的技木,主要通過ー些額外代碼來擴(kuò)展已有的應(yīng)用程序,用以實時地應(yīng)對復(fù)雜且無法預(yù)知的緊急情況,或者在系統(tǒng)運(yùn)行時動態(tài)修改和加入系統(tǒng)的某些特性以增強(qiáng)系統(tǒng)的功能。C# 的動態(tài)編譯過程主要由 C# 提供的類 CSharpCodeProvider、ICodeCompiIer>し omp I IerParame ter S、CompilerResults 和 Assembly 完成。利用動態(tài)編譯服務(wù)器實現(xiàn)動態(tài)編譯具體步驟如下(如圖5所示)
a.調(diào)用數(shù)據(jù)服務(wù)引擎接ロ獲得目標(biāo)水質(zhì)分析算法的代碼文本;
b.聲明CSharpCodeProvider對象,用于訪問C#代碼生成器和代碼編譯器的實例;利用CompilerParameters對象修改被調(diào)用的編譯器的參數(shù),以產(chǎn)生需要的編譯結(jié)果;
c.使用CSharpCodeProvider 對象的 CompileAssemblyFromSource 方法進(jìn)行編譯生成
DLL ;
d.由CompilerResults對象得到編譯結(jié)果判斷是否編譯成功,編譯失敗則通知用戶失敗原因重新編譯。由于系統(tǒng)進(jìn)行算法的動態(tài)編譯具有很大的風(fēng)險性,惡意代碼會給系統(tǒng)帶來不穩(wěn)定性,因此編譯后需進(jìn)行預(yù)運(yùn)行處理。要求用戶輸入編譯請求后,編譯服務(wù)器對請求進(jìn)行響應(yīng),通過設(shè)定預(yù)運(yùn)行的運(yùn)行時間,監(jiān)測算法是否在規(guī)定時間內(nèi)順利完成,保證用戶代碼中沒有惡意代碼造成死循環(huán);并設(shè)定程序運(yùn)行的最大內(nèi)存,監(jiān)測程序運(yùn)行是否占用超過規(guī)定的最大內(nèi)存,確保系統(tǒng)正常運(yùn)行。通過預(yù)運(yùn)行保障用戶輸入的水質(zhì)分析算法不對系統(tǒng)運(yùn)行造 成影響。
權(quán)利要求
1.ー種支持動態(tài)編譯的水質(zhì)分析計算服務(wù)系統(tǒng),其特征在于采用B/S (瀏覽器/服務(wù)器)三層網(wǎng)絡(luò)結(jié)構(gòu),包括數(shù)據(jù)服務(wù)層、應(yīng)用服務(wù)層和用戶層,其中數(shù)據(jù)服務(wù)層包括水質(zhì)數(shù)據(jù)庫、計算任務(wù)庫、水質(zhì)分析算法庫、計算結(jié)果庫,應(yīng)用服務(wù)層包括計算服務(wù)器、動態(tài)編譯服務(wù)器,用戶層包括水質(zhì)分析計算結(jié)果展示単元、水質(zhì)分析計算任務(wù)管理単元、水質(zhì)分析算法管理單元。
2.如權(quán)利要求書I所述的計算任務(wù)庫,其特征在于用于存儲水質(zhì)分析計算任務(wù),包括任務(wù)名稱、任務(wù)類型、任務(wù)狀態(tài)、任務(wù)執(zhí)行周期、任務(wù)創(chuàng)建時間、下次運(yùn)行時間、上次運(yùn)行時間、對應(yīng)算法ID、對應(yīng)監(jiān)測點(diǎn)(數(shù)據(jù)源)等內(nèi)容;水質(zhì)分析計算任務(wù)是指針對某種特定分析目的,利用水質(zhì)數(shù)據(jù),根據(jù)水質(zhì)分析算法或水質(zhì)分析模型,對水質(zhì)進(jìn)行評價、預(yù)測、預(yù)警并獲得知識性結(jié)果的過程。
3.如權(quán)利要求書I所述的水質(zhì)分析算法庫,其特征在于以代碼文本和動態(tài)鏈接庫兩 種形式存儲水質(zhì)分析算法,其中代碼文本為用戶自定義的、待編譯的水質(zhì)分析算法代碼,為文本格式;動態(tài)鏈接庫為已編譯完成的水質(zhì)分析算法文件,可由其它部分調(diào)用執(zhí)行。
4.如權(quán)利要求書I所述的計算結(jié)果庫,其特征在于用于存儲由計算服務(wù)器完成單項計算任務(wù)后獲得的計算結(jié)果數(shù)據(jù),如評價結(jié)果、預(yù)測結(jié)果、預(yù)警結(jié)果等,為各種水質(zhì)分析應(yīng)用提供服務(wù)。
5.如權(quán)利要求I所述的計算服務(wù)器,其特征在于用于提供水質(zhì)分析計算服務(wù),根據(jù)計算任務(wù)庫中的任務(wù)信息,自動更新計算服務(wù)隊列、獲取相應(yīng)水質(zhì)數(shù)據(jù)、調(diào)用相應(yīng)水質(zhì)分析算法、完成水質(zhì)分析計算任務(wù),將計算結(jié)果數(shù)據(jù)保存至計算結(jié)果庫。
6.如權(quán)利要求I所述的動態(tài)編譯服務(wù)器,其特征在于用于提供自定義水質(zhì)分析算法的編譯服務(wù),通過獲取水質(zhì)分析算法庫中的代碼文本,調(diào)用代碼編譯器接ロ,對文本代碼進(jìn)行動態(tài)編譯,生成新的動態(tài)鏈接庫文件后保存至水質(zhì)分析算法庫。
7.如權(quán)利要求7所述的動態(tài)鏈接庫文件,其中一部分為系統(tǒng)內(nèi)嵌的水質(zhì)指標(biāo)報警、水質(zhì)評價、水質(zhì)預(yù)測和水質(zhì)預(yù)警算法文件,另一部分根據(jù)用戶自定義算法動態(tài)編譯生成。
8.如權(quán)利要求I所述的計算結(jié)果展示単元,其特征在于采用表格、圖形、曲線、地圖等不同可視化手段向用戶展示水質(zhì)分析計算結(jié)果,為水質(zhì)監(jiān)測預(yù)警服務(wù)。
9.如權(quán)利要求I所述的計算任務(wù)管理単元,其特征在于提供用戶接ロ,實現(xiàn)對計算任務(wù)的管理,包括計算任務(wù)的新建、刪除、編輯、啟動、禁止、立即執(zhí)行等操作。
10.如權(quán)利要求I所述的水質(zhì)分析算法管理単元,其特征在于提供用戶接ロ,實現(xiàn)水質(zhì)分析算法DLL管理(新建、刪除、編輯水質(zhì)分析算法DLL)和水質(zhì)分析算法代碼管理(新建、刪除、編輯、編譯水質(zhì)分析算法文本代碼),其中水質(zhì)分析算法代碼編譯功能通過調(diào)用動態(tài)編譯服務(wù)器對代碼進(jìn)行動態(tài)編譯,生成新的動態(tài)鏈接庫或更新已存在的動態(tài)鏈接庫,并實時更新水質(zhì)分析算法庫。
全文摘要
本發(fā)明涉及一種支持動態(tài)編譯的水質(zhì)分析計算服務(wù)系統(tǒng),系統(tǒng)按數(shù)據(jù)服務(wù)層、應(yīng)用服務(wù)層和用戶層三層網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,由水質(zhì)數(shù)據(jù)庫、計算結(jié)果庫、計算任務(wù)庫、水質(zhì)分析算法庫、計算服務(wù)器、動態(tài)編譯服務(wù)器、水質(zhì)分析計算結(jié)果展示單元、水質(zhì)分析計算任務(wù)管理單元、水質(zhì)分析算法管理單元組成。本發(fā)明能滿足各種不同的水環(huán)境監(jiān)測和水質(zhì)預(yù)警分析需要,極大提高了現(xiàn)有水質(zhì)監(jiān)測系統(tǒng)和水質(zhì)預(yù)警系統(tǒng)的靈活性和開放性。
文檔編號G06Q10/06GK102708452SQ20121014159
公開日2012年10月3日 申請日期2012年5月9日 優(yōu)先權(quán)日2012年5月9日
發(fā)明者侯迪波, 馮天恒, 岳飛亨, 張光新, 田徑, 趙海峰, 鄭會, 黃平捷 申請人:浙江大學(xué)