国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SSH架構(gòu)的風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2010-04-26 08:45:48王家群顧曉慧李亞洲胡麗琴吳宜燦FDS團(tuán)隊(duì)
核科學(xué)與工程 2010年4期
關(guān)鍵詞:核電站架構(gòu)邏輯

王 芳,汪 進(jìn),王家群,顧曉慧,袁 潤(rùn),李亞洲,胡麗琴,吳宜燦,FDS團(tuán)隊(duì)

(1.中國(guó)科學(xué)技術(shù)大學(xué)核科學(xué)技術(shù)學(xué)院,安徽 合肥 230027;

2.中國(guó)科學(xué)院等離子體物理研究所,安徽 合肥 230031)

安全性是發(fā)展核電的關(guān)鍵問(wèn)題之一,在保證核電安全的同時(shí)提高其經(jīng)濟(jì)性,是核電站追求的重要目標(biāo)。風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)是基于核電站實(shí)時(shí)配置狀態(tài)計(jì)算瞬時(shí)風(fēng)險(xiǎn)水平的軟件系統(tǒng),能夠?yàn)楹穗娬景踩€(wěn)定經(jīng)濟(jì)運(yùn)行提供指導(dǎo)性意見和建議,從而提高運(yùn)行安全性和經(jīng)濟(jì)性[1]。目前國(guó)外多數(shù)大規(guī)模核電站都已應(yīng)用或正在著手研發(fā)此系統(tǒng),自1988年第一套風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)在英國(guó)投入使用以來(lái),截至2004年共有約150套在線投入使用,而國(guó)內(nèi)則起步較晚?,F(xiàn)有風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)大多為單機(jī)版或C/S(客戶端/服務(wù)器)架構(gòu)[2]。FDS團(tuán)隊(duì)開展了核電站安全分析研究工作,發(fā)展出了具有完全自主知識(shí)產(chǎn)權(quán)的概率安全評(píng)價(jià)軟件 RiskA[3-4],并在 RsikA平臺(tái)上成功研發(fā)了風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng) RiskAngel系列[5-6]。

風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)在核電站中的使用對(duì)象比較廣泛,物理地址分布相對(duì)獨(dú)立,且在使用中可能存在并發(fā);核電站中實(shí)時(shí)風(fēng)險(xiǎn)模型大,系統(tǒng)計(jì)算量大,而系統(tǒng)需要獲取準(zhǔn)確的核電站風(fēng)險(xiǎn)數(shù)據(jù)及時(shí)進(jìn)行反饋。因此本文要解決的關(guān)鍵問(wèn)題是如何在較短的時(shí)間內(nèi)開發(fā)出計(jì)算結(jié)果正確且響應(yīng)速度高的系統(tǒng)。

針對(duì)以上問(wèn)題,在充分比較分析現(xiàn)有各種web應(yīng)用技術(shù)的基礎(chǔ)上,最終選擇了基于J2EE的輕量級(jí)架構(gòu)SSH(Struts+Sp ring+Hibernate)組合框架實(shí)現(xiàn)風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)的開發(fā)。

1 結(jié)構(gòu)設(shè)計(jì)與架構(gòu)選擇

風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)使用對(duì)象物理地址的獨(dú)立性,決定了該系統(tǒng)需要開發(fā)為網(wǎng)絡(luò)版,以方便用戶使用。傳統(tǒng)C/S結(jié)構(gòu)軟件的數(shù)據(jù)分布安全性差,適用于局域網(wǎng),可連接用戶數(shù)有限,擴(kuò)展維護(hù)復(fù)雜、代碼可重用性差 、維護(hù)和升級(jí)成本非常高[7]。

B/S(瀏覽器/服務(wù)器)結(jié)構(gòu)是對(duì)C/S結(jié)構(gòu)的一種改進(jìn),在此結(jié)構(gòu)下,用戶工作界面通過(guò)瀏覽器來(lái)實(shí)現(xiàn),極少部分事務(wù)邏輯在瀏覽器端實(shí)現(xiàn),但主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本?;贐/S的網(wǎng)絡(luò)應(yīng)用是一次性到位的開發(fā),能實(shí)現(xiàn)不同人員從不同地點(diǎn)以不同接入方式訪問(wèn)和操作共同的數(shù)據(jù)庫(kù);它能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問(wèn)權(quán)限,服務(wù)器數(shù)據(jù)庫(kù)也很安全。B/S結(jié)構(gòu)是信息化發(fā)展的主流方向,本文選擇基于此結(jié)構(gòu)進(jìn)行系統(tǒng)的設(shè)計(jì)。

基于B/S結(jié)構(gòu)的web應(yīng)用主要有兩種實(shí)現(xiàn)方案:J2EE和.NET。相比.NET,J2EE開放標(biāo)準(zhǔn),功能強(qiáng)大,易于移植,且安全性好[8],因此選擇J2EE技術(shù)開發(fā)本系統(tǒng)。以實(shí)現(xiàn)基于B/S結(jié)構(gòu)的風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)開發(fā)為目的,本文研究和分析了基于J2EE架構(gòu)的多種框架。

當(dāng)前大多web應(yīng)用程序采用傳統(tǒng)的基于EJB2.0的J2EE架構(gòu)進(jìn)行開發(fā),此種框架為重量級(jí)框架,存在一系列難以避免的問(wèn)題,例如部署復(fù)雜,運(yùn)行緩慢;內(nèi)在服務(wù)多,啟動(dòng)慢;規(guī)則特別多,空間很小;難以測(cè)試等[9]。而輕量級(jí)J2EE架構(gòu)則可以解決這些問(wèn)題,其中融入了新的模式,可提供更靈活和可選擇性的服務(wù)。大多數(shù)基于J2EE的web應(yīng)用從職責(zé)上可以分為4層:表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域?qū)ο髮印O旅嫖覀儗⒂懻摳鲗涌蚣苓x擇和實(shí)現(xiàn)。

1.1 表現(xiàn)層框架選擇

MVC(Model-View-Controller)架構(gòu)是一種強(qiáng)制性地將應(yīng)用程序的輸入、處理和輸出分開的設(shè)計(jì)模式,此架構(gòu)可以使應(yīng)用系統(tǒng)結(jié)構(gòu)更加清晰,升級(jí)和維護(hù)更方便。Struts框架是MVC模式的忠實(shí)體現(xiàn)[10]。因此,表現(xiàn)層采用Struts框架實(shí)現(xiàn)。

1.2 業(yè)務(wù)邏輯層框架選擇

業(yè)務(wù)層需要處理業(yè)務(wù)邏輯和交叉業(yè)務(wù)邏輯,事務(wù),日志,安全等,這些都與Spring的 IoC(控制反轉(zhuǎn))與AOP(面向方面編程)不謀而合,用它可實(shí)現(xiàn)業(yè)務(wù)代碼的高效分離[11]。Spring是整合的業(yè)務(wù)層框架,能很好地黏合表示層與持久層,也是J2EE框架中最成熟的框架。因此,在眾多業(yè)務(wù)邏輯層框架中選擇Sp ring框架。

1.3 數(shù)據(jù)持久層和域?qū)ο髮涌蚣苓x擇

系統(tǒng)設(shè)計(jì)中采用了面向?qū)ο笏枷?如何將對(duì)象間關(guān)系準(zhǔn)確無(wú)誤地映射為數(shù)據(jù)庫(kù)中表格與表格之間的關(guān)系是本文必須解決的重要問(wèn)題。H ibernate正是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具,它提供了自動(dòng)對(duì)應(yīng)轉(zhuǎn)換的方案。H ibernate不僅管理Java類到數(shù)據(jù)庫(kù)表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可極大減少開發(fā)者的數(shù)據(jù)持久化相關(guān)編程任務(wù)[12]。因此,選擇Hibernate作為數(shù)據(jù)持久層和域?qū)ο髮涌蚣堋?/p>

綜合上述分析,本文選擇使用SSH框架組合進(jìn)行風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)的開發(fā),將這3個(gè)框架進(jìn)行有機(jī)整合可以更好地發(fā)揮它們的優(yōu)勢(shì),實(shí)現(xiàn)系統(tǒng)多層開發(fā)的低耦合。

2 系統(tǒng)實(shí)現(xiàn)

本應(yīng)用程序使用MyEclipse7.0作為開發(fā)環(huán)境,其中大部分插件都已集成好,并集成了許多開源框架,如Struts、Spring、Hibernate等。服務(wù)器采用了技術(shù)先進(jìn)且性能穩(wěn)定的tomcat6.0。數(shù)據(jù)庫(kù)則采用了穩(wěn)定性和安全性較好的oracle10g。

按功能劃分,風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)主要分為8個(gè)功能模塊,其具體劃分見圖1。每個(gè)功能模塊均獨(dú)立采用SSH組合框架實(shí)現(xiàn)。

圖1 系統(tǒng)功能模塊Fig.1 Function module of Risk Monitor

下文以部件查詢功能為例,闡述各框架是如何協(xié)作來(lái)實(shí)現(xiàn)此功能。

2.1 表示層的實(shí)現(xiàn)

表示層是由Struts框架實(shí)現(xiàn)的。在此框架的應(yīng)用程序中,先由視圖層請(qǐng)求Action,然后配置前端控制器以攔截來(lái)自客戶端的請(qǐng)求。前端控制器首先讀取配置文件struts.xm l中的配置信息,根據(jù)配置信息為請(qǐng)求選擇對(duì)應(yīng)的處理控制器和響應(yīng)類型。

部件查詢功能的響應(yīng)過(guò)程為,首先利用setter方法將所需 bean全部注入后,在 rm.aciton.base.GetA llCom ponentAction類中使用stateLookUp.findComponent(number)函數(shù)來(lái)實(shí)現(xiàn)部件查詢功能,其中stateLook Up為注入到此類中的bean。

2.2 業(yè)務(wù)邏輯層的實(shí)現(xiàn)

Sp ring是業(yè)務(wù)邏輯層的容器,連接表示層和持久層,將對(duì)持久層的操作封裝在bean里,讓前端表示層調(diào)用相應(yīng)bean來(lái)完成對(duì)后臺(tái)數(shù)據(jù)庫(kù)操作。Sp ring的控制反轉(zhuǎn)容器,可以保留抽象接口,讓組件依賴于抽象接口,當(dāng)組件要與其他實(shí)際的對(duì)象發(fā)生關(guān)系時(shí),由抽象接口來(lái)注入依賴的實(shí)際對(duì)象[13]。按編號(hào)查詢部件功能的業(yè)務(wù)邏輯層實(shí)現(xiàn)如下:先將bean componentDao注入業(yè)務(wù)邏輯層接口中,再利用其實(shí)現(xiàn)類中component Dao.findComponent(number)函數(shù)實(shí)現(xiàn)。

2.3 持久層的實(shí)現(xiàn)

程序開發(fā)過(guò)程中與數(shù)據(jù)庫(kù)的交互主要包括:添加、讀取、修改和刪除。應(yīng)用 Hibernate可以自動(dòng)生成DAO類,但為避免Spring入侵,本系統(tǒng)開發(fā)中選擇手動(dòng)創(chuàng)建。為實(shí)現(xiàn)編號(hào)查詢部件功能,需要在 DAO實(shí)現(xiàn)類中實(shí)現(xiàn) find Com ponent(String num ber)函數(shù)具體功能。

2.4 域?qū)ο髮拥膶?shí)現(xiàn)

風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)中所有與數(shù)據(jù)庫(kù)交互的工作都由H ibernate完成,它改變了傳統(tǒng)開發(fā)模式,不先建表而先把對(duì)象模型建立起來(lái)直接操作對(duì)象。因此開發(fā)中需要先創(chuàng)建實(shí)體類,在類中建立與其他類間的關(guān)系,通過(guò)Hibernate將這些關(guān)系進(jìn)行映射,把對(duì)象生成數(shù)據(jù)庫(kù)表。

2.5 三大框架間的整合

為工程添加完Spring、Hibernate和Struts框架支持后,需要將3個(gè)框架有機(jī)整合起來(lái),本文采用設(shè)置配置文件進(jìn)行三大框架整合的方法。

1)Spring與Hibernate整合

Hibernate的連接、事務(wù)管理等都由建立sessionFactory開始的,SessionFactory底層數(shù)據(jù)源使用 Spring的 IoC注入,之后再將SessionFactory注入互相依賴的對(duì)象中,這就實(shí)現(xiàn)了Hiberante和Spring的整合。

2)Spring與Struts整合

要將Struts與Sp ring結(jié)合使用,最主要是讓Struts知道Spring的存在,以讓Spring管理相關(guān)組件,避免在程序中直接寫組件的依賴關(guān)系建立。系統(tǒng)功能模塊較多,邏輯相對(duì)復(fù)雜,為了便于代碼維護(hù),將系統(tǒng)中各模塊實(shí)現(xiàn)所需DAO類,Manager類和Action類分別寫在 3個(gè)配置文件中。當(dāng)應(yīng)用服務(wù)器載入web應(yīng)用時(shí),先從 web.xm l讀起。本程序采用了在web.xm l中先配置上下文載入器,然后指定上下文載入器的3個(gè)Sp ring配置文件的方法實(shí)現(xiàn)了Spring與Struts的整合。

整個(gè)系統(tǒng)依賴關(guān)系為:Action依賴Biz(業(yè)務(wù)層),Biz依賴DAO(數(shù)據(jù)訪問(wèn)層),DAO依賴SessionFactory,SessionFactory依賴數(shù)據(jù)源,利用Spring管理這些依賴關(guān)系。圖2為系統(tǒng)的業(yè)務(wù)流程圖。

圖2 風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)業(yè)務(wù)流程Fig.2 Business Process of Risk Monitor

3 系統(tǒng)中使用的關(guān)鍵技術(shù)

3.1 Ajax技術(shù)

A jax技術(shù)被廣泛應(yīng)用于本系統(tǒng)的設(shè)計(jì)中,系統(tǒng)web頁(yè)面設(shè)計(jì)主要采用ExtJS技術(shù),利用ExtJS封裝的Ext.A jax.request方法來(lái)實(shí)現(xiàn)前臺(tái)頁(yè)面對(duì)后臺(tái)的請(qǐng)求。

采用A jax技術(shù)實(shí)現(xiàn)了客戶端與服務(wù)器端的異步通信,在不更新整個(gè)頁(yè)面前提下維護(hù)數(shù)據(jù),這使web應(yīng)用程序更為迅捷地回應(yīng)用戶動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送沒有改變過(guò)的信息。運(yùn)用此技術(shù)同步了客戶端與服務(wù)器端的時(shí)間進(jìn)度,將一部分操作轉(zhuǎn)移到了客戶端,減輕了服務(wù)器端壓力。采用此技術(shù)后,在一定程度上提高了系統(tǒng)響應(yīng)速度。

3.2 隊(duì)列類

整個(gè)系統(tǒng)需要解決的一個(gè)重要問(wèn)題是當(dāng)多個(gè)用戶同時(shí)提交在線、離線或維修計(jì)劃計(jì)算時(shí),如何確定計(jì)算請(qǐng)求順序以達(dá)到多個(gè)請(qǐng)求間數(shù)據(jù)互不混淆的目的,最終保證程序正確性。本文引入了隊(duì)列類來(lái)將計(jì)算請(qǐng)求排隊(duì),使其按照提交的先后順序進(jìn)行計(jì)算。

用戶提交的所有計(jì)算請(qǐng)求都被放入隊(duì)列中,線程監(jiān)聽類監(jiān)聽隊(duì)列中計(jì)算請(qǐng)求是否為空,若為空,線程休眠,否則,從隊(duì)尾取出一個(gè)計(jì)算請(qǐng)求提交計(jì)算核心計(jì)算。由于同一進(jìn)程的多個(gè)線程共享同一片存儲(chǔ)空間,因此會(huì)存在訪問(wèn)沖突問(wèn)題。為了解決此問(wèn)題,在隊(duì)列類中處理業(yè)務(wù)時(shí)使用java同步機(jī)制,即在業(yè)務(wù)方法前加鎖的方法,以保證進(jìn)程間互斥地使用該方法,最終確保計(jì)算結(jié)果正確性。

4 總結(jié)

風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)采用了基于J2EE輕量級(jí)架構(gòu)的SSH整合框架進(jìn)行開發(fā),整個(gè)系統(tǒng)架構(gòu)以Sp ring為核心,向上整合了Struts,向下整合了Hibernate。測(cè)試表明,該系統(tǒng)計(jì)算結(jié)果正確且具有較高的響應(yīng)速度,各模塊之間交互過(guò)程中耦合性降低,內(nèi)聚加強(qiáng),從而增強(qiáng)了系統(tǒng)的健壯性。此外在本系統(tǒng)中軟件的可重構(gòu)性和可用性得到了提高,大大提高了開發(fā)效率,可以在較短的時(shí)間內(nèi)構(gòu)建出系統(tǒng)的原型系統(tǒng)。最后該系統(tǒng)具有非常好的跨平臺(tái)性、擴(kuò)展性、可維護(hù)性與安全性。

[1] IAEA.Living probabilistic safety assess-m ent[R].IAEA-TEC-1106,1999.

[2] OECD/NEA.Development and Use of Risk Monito rs at Nuclear Pow er Plants[R].CSNI Technical Opinion Papers,2005.

[3] 吳宜燦,胡麗琴,龍鵬程,等.先進(jìn)核能系統(tǒng)設(shè)計(jì)分析軟件與數(shù)據(jù)庫(kù)研發(fā)進(jìn)展[J].核科學(xué)與工程,2010,30(1):42-50.

[4] 吳宜燦,劉萍,胡麗琴,等.大型集成概率安全分析軟件系統(tǒng)的研究與發(fā)展[J].核科學(xué)與工程,2007,27(3):270-276.

[5] 吳宜燦,胡麗琴,李亞洲,等.秦山三期重水堆核電站風(fēng)險(xiǎn)監(jiān)測(cè)系統(tǒng)研發(fā)進(jìn)展[J].核科學(xué)與工程.

[6] 王海濤,吳宜燦,李亞洲,等.核電站風(fēng)險(xiǎn)監(jiān)測(cè)器軟件開發(fā)研究[J].核動(dòng)力工程,2009,30(1):26-30.

[7] Catherine.C/S Teaching in the 21st Century[J].The In ternet and Higher Education,1999,1(4):281-289.

[8] Sun Microsystems Inc.Java TM 2 Platform Enterprise Edition Specification Version 1.4[R].2002.

[9] 徐鵬.輕量級(jí)J2EE架構(gòu)的研究與應(yīng)用[D].電子科技大學(xué),2007.

[10] 孫鑫.Struts2深入詳解[M].北京:電子工業(yè)出版社,2008.

[11] 余臘生,任炬.基于SSH三層架構(gòu)的OJ系統(tǒng)研究與設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2008,3(8):1698-1701.

[12] 葛京.Hibernate 3和Java Persistence API程序開發(fā)從入門到精通[M].北京:清華大學(xué)出版社,2007.

[13] 林信良.Spring 2.0技術(shù)手冊(cè)[M].北京:電子工業(yè)出版社,2007.

猜你喜歡
核電站架構(gòu)邏輯
基于FPGA的RNN硬件加速架構(gòu)
刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
法律方法(2022年2期)2022-10-20 06:44:24
如果離我不遠(yuǎn)的核電站出現(xiàn)泄漏該怎么辦
飛碟探索(2022年2期)2022-05-31 01:28:03
邏輯
創(chuàng)新的邏輯
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
汽車工程(2021年12期)2021-03-08 02:34:30
核電站護(hù)衛(wèi)隊(duì)
女人買買買的神邏輯
37°女人(2017年11期)2017-11-14 20:27:40
核電站的“神經(jīng)中樞”
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
汉阴县| 寿光市| 文安县| 林口县| 建水县| 池州市| 竹北市| 蕲春县| 淳化县| 鹿泉市| 新干县| 云浮市| 科尔| 金山区| 沂水县| 姚安县| 彭水| 城步| 南涧| 扶风县| 甘孜县| 盐边县| 黄冈市| 泗水县| 东乌珠穆沁旗| 象州县| 梅河口市| 平陆县| 商城县| 乐都县| 长丰县| 巴中市| 文成县| 红原县| 涞水县| 临朐县| 东安县| 老河口市| 西安市| 格尔木市| 丰宁|