劉紅敏,宋素玲,姜國權(quán),霍占強(qiáng)
(河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作454003)
傳統(tǒng)的基于頁面架構(gòu)的C/S (client/server)網(wǎng)絡(luò)應(yīng)用程序不能滿足個(gè)人用戶和企業(yè)用戶對服務(wù)平臺的需求,該模式的程序部署成本高,更新不及時(shí),交互能力差,在很大程度上制約了更多領(lǐng)域用戶對數(shù)據(jù)的使用。雖然B/S(browser/server)模式無需安裝應(yīng)用文件,部署發(fā)布成本低,維護(hù)簡單,但是傳統(tǒng)的B/S開發(fā)技術(shù),將業(yè)務(wù)邏輯和頁面顯示混合在一起,從而加重了層次之間的依賴性和耦合性,另外,目前常用的對象持久化技術(shù)多數(shù)是通過在業(yè)務(wù)邏輯中內(nèi)嵌SQL語句的方式來實(shí)現(xiàn),這種方式最大的弊端就是一旦數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化,就會導(dǎo)致系統(tǒng)的大幅度修改,從而給系統(tǒng)的升級、維護(hù)與更新帶來不便。針對以上不足,本文結(jié)合MVC[1,2](model-view-controller)架構(gòu)和NHibernate技術(shù)設(shè)計(jì)了一種新的應(yīng)用框架,并把該框架與Flex[3-5]技術(shù)相結(jié)合研發(fā)了基于Flex的企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)。
RIA (rich internet applications)[6-9]:富互聯(lián)網(wǎng)應(yīng)用程序,具有高度互動(dòng)性、豐富用戶體驗(yàn)以及功能強(qiáng)大的客戶端。而Flex是目前最流行的RIA 開發(fā)技術(shù)之一。一個(gè)完整的Flex開發(fā)模型由3部分組成,即:MXML、ActionScript和Flex類庫。MXML 是一種XML 格式語言,用來描述Flex應(yīng)用,類似于HTML,通過一組標(biāo)簽定義用戶界面。ActionScript是一種功能強(qiáng)大的面向?qū)ο缶幊陶Z言,它主要用于實(shí)現(xiàn)Flex程序中的交互處理與業(yè)務(wù)邏輯處理。Flex類庫中提供了豐富的可見組件和不可見組件。其工作流程如圖1所示:Flex編譯器將MXML、ActionScript及Flex類庫編譯為SWF文件,然后在客戶端由Flash Player執(zhí)行。
圖1 Flex應(yīng)用程序的設(shè)計(jì)發(fā)布流程
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)系統(tǒng)被劃分成3 個(gè)邏輯層次,即:Web表示層、應(yīng)用服務(wù)層和數(shù)據(jù)庫層。為了降低層與層之間的依賴關(guān)系和增加系統(tǒng)的靈活性,該系統(tǒng)在表示層使用了MVC架構(gòu),將Flex應(yīng)用程序分為模型、視圖和控制器3部分。把業(yè)務(wù)應(yīng)用層劃分為業(yè)務(wù)邏輯層、業(yè)務(wù)實(shí)體層、數(shù)據(jù)訪問接口層及數(shù)據(jù)訪問層。企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)框架如圖2所示,可以看出Web表示層只依賴于業(yè)務(wù)應(yīng)用層中的實(shí)體層和業(yè)務(wù)邏輯層來獲取所需信息;業(yè)務(wù)邏輯層只依賴于實(shí)體層和數(shù)據(jù)訪問接口層;數(shù)據(jù)庫層只面向數(shù)據(jù)訪問層;實(shí)體層定義了實(shí)體對象,只有屬性沒有方法,體現(xiàn)了面向?qū)ο蟮乃枷搿Ec傳統(tǒng)的3層開發(fā)框架相比,該框架層次分工更加明確,層次之間的依賴性大大降低,便于系統(tǒng)功能的擴(kuò)展和技術(shù)的替換,比如表示層用的技術(shù)是Flex,如果用ASP.NET實(shí)現(xiàn),只需要修改配置,而不用修改其他層次代碼。
圖2 企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)框架
表示層的開發(fā)采用Flex技術(shù)整合Cairngorm 開發(fā)框架,此框架使用MVC 架構(gòu),將Flex應(yīng)用程序分為模型、視圖和控制器3部分,強(qiáng)制性的將應(yīng)用程序的輸入、處理和輸出分開。表示層用于呈現(xiàn)客戶端的用戶視圖,負(fù)責(zé)接受用戶請求并把它傳遞給控制器,并最終將結(jié)果封裝后呈現(xiàn)給用戶。在本系統(tǒng)中視圖是通過在mxml頁面中開發(fā)用戶接口來實(shí)現(xiàn),控制器的功能在mxml.as代碼中實(shí)現(xiàn)。
采用C#技術(shù)對數(shù)據(jù)業(yè)務(wù)進(jìn)行邏輯處理,首先,分離業(yè)務(wù)邏輯類和數(shù)據(jù)實(shí)體類,使業(yè)務(wù)邏輯類只專注于數(shù)據(jù)業(yè)務(wù)的邏輯處理,而實(shí)體類僅作為數(shù)據(jù)容器來持久化數(shù)據(jù)對象。然后,在業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層兩者之間增加數(shù)據(jù)訪問接口層,從而分離了業(yè)務(wù)邏輯與數(shù)據(jù)訪問邏輯,使業(yè)務(wù)邏輯層專注于各種業(yè)務(wù)邏輯處理,簡化了實(shí)體對象與數(shù)據(jù)庫之間的交互,使得系統(tǒng)開發(fā)更加靈活,便于業(yè)務(wù)邏輯的測試、修改,提高了系統(tǒng)的可移植性和可擴(kuò)充性。
數(shù)據(jù)庫層是系統(tǒng)的應(yīng)用基礎(chǔ),主要負(fù)責(zé)數(shù)據(jù)的存取、管理和維護(hù),并提供數(shù)據(jù)訪問接口,是整個(gè)系統(tǒng)數(shù)據(jù)源的保障,該系統(tǒng)采用的是SQL Server 2008 數(shù)據(jù)庫,采用NHibernate持久化技術(shù)的ORM (object relational mapping)[10]映射機(jī)制實(shí)現(xiàn)了對象和關(guān)系數(shù)據(jù)庫中的高效映射,達(dá)到了業(yè)務(wù)邏輯層與數(shù)據(jù)存儲的有效分離。在數(shù)據(jù)庫底層采用NHibernate技術(shù)持久化.NET 對象到關(guān)系型數(shù)據(jù)庫,從而不需要再編寫繁瑣的SQL 語句,使得代碼僅僅和對象關(guān)聯(lián)。以下代碼實(shí)現(xiàn)了News類中Title屬性和數(shù)據(jù)庫表T_News的title列的對應(yīng),大幅度減少軟件開發(fā)時(shí)人工使用SQL處理數(shù)據(jù)的時(shí)間。
以系統(tǒng)的新聞檢索模塊為例,來說明本文所提出的框架的應(yīng)用,其UML如圖3所示。
圖3 新聞檢索模塊類圖
在Visual Studio 2008中,通過創(chuàng)建不同的工程來實(shí)現(xiàn)不同層次的劃分,且每個(gè)工程擁有不同的命名空間。MIInnov.BLL和MIInnov.WS實(shí)現(xiàn)業(yè)務(wù)邏輯層,MIInnov.IBLL實(shí)現(xiàn)業(yè)務(wù)訪問接口層,MIInnov.Models實(shí)現(xiàn)業(yè)務(wù)實(shí)體層,MIInnov.IDAL實(shí)現(xiàn)數(shù)據(jù)訪問接口層,MIInnov.DAL 通過NHibernate技術(shù)來實(shí)現(xiàn)數(shù)據(jù)訪問層。
在新聞檢索的過程中,用戶在頁面中輸入要檢索的關(guān)鍵字,點(diǎn)擊搜索按鈕,觸發(fā)Btn_ClickHandler()事件,調(diào)用業(yè)務(wù)邏輯層WebService中的getNewsByauthorandTitle()方法,由其調(diào)用BLL層的getNewsByAuthorandTitle()方法,該方法通過IDAL層訪問DAL層中的FindAllByAu-thorandTitle()方法,通過訪問數(shù)據(jù)庫查詢出相關(guān)的信息,返回News實(shí)體類的對象信息,然后把所需要的信息顯示在前臺頁面。業(yè)務(wù)邏輯類MIInnov.BLL.News通過數(shù)據(jù)訪問工廠獲取新聞信息,代碼如下:
企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)功能的設(shè)計(jì)以分析其員工的需求為原則,為實(shí)現(xiàn)創(chuàng)新方法的推廣、信息資源的管理和學(xué)習(xí)經(jīng)驗(yàn)的交流等共設(shè)計(jì)了6大功能模塊,即:資源管理模塊、案例共享模塊、新聞發(fā)布模塊、創(chuàng)新交流模塊、在線學(xué)習(xí)模塊和方法應(yīng)用模塊,其功能結(jié)構(gòu)如圖4所示。
系統(tǒng)的各模塊功能如下:
(1)資源管理模塊:資源管理模塊為企業(yè)獲得創(chuàng)新資料提供接口,其豐富的資源和一站式的服務(wù)為用戶帶來了全新的體驗(yàn)??蓪ο到y(tǒng)資源進(jìn)行下載、上傳、修改等操作。
圖4 企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)功能結(jié)構(gòu)
(2)案例共享模塊:案例共享模塊的主要功能是建立應(yīng)用創(chuàng)新方法解決企業(yè)技術(shù)難題的案例庫,并應(yīng)用數(shù)據(jù)庫和數(shù)據(jù)挖掘相關(guān)知識提供友好的案例共享、瀏覽和查詢。用戶有提交案例的權(quán)限,提交到服務(wù)器的案例經(jīng)管理員審核后發(fā)布到前臺頁面,并且案例瀏覽次數(shù)的多少從某種意義上體現(xiàn)了用戶對該案例的關(guān)注程度,用戶根據(jù)案例的瀏覽次數(shù),可進(jìn)一步上傳更加合理的案例,從而提高網(wǎng)站的訪問量。傳統(tǒng)的HTML雖然能詳細(xì)的統(tǒng)計(jì)數(shù)據(jù),但對圖形顯示不足,而Flex提供了豐富的圖表庫,支持大量數(shù)據(jù)的顯示,通過圖表展示數(shù)據(jù)看起來更加直觀,能為用戶提供良好的直觀感受。圖5展示了近5年來各案例訪問量的趨勢圖,可以看出創(chuàng)新案例越來越受到人們的關(guān)注,在2012年訪問次數(shù)高達(dá)12000次。
圖5 案例訪問量
(3)新聞發(fā)布模塊:新聞發(fā)布模塊主要提供最新的創(chuàng)新思維、創(chuàng)新方法和創(chuàng)新工具的相關(guān)資訊,包括通知通告、創(chuàng)新要聞、企業(yè)實(shí)踐、思維創(chuàng)新、方法創(chuàng)新和工具創(chuàng)新等較全面的內(nèi)容。支持新聞發(fā)布、修改、刪除、查詢等功能。
(4)創(chuàng)新交流模塊:創(chuàng)新交流模塊以論壇的形式為企業(yè)應(yīng)用創(chuàng)新方法解決技術(shù)難題提供交流平臺,主要分為理論學(xué)習(xí)、技術(shù)難題和創(chuàng)新心得等子模塊。該模塊不但實(shí)現(xiàn)發(fā)帖、回帖、等級管理、精華推薦等功能,而且管理員可以很方便的定制模塊類別和版面內(nèi)容。
(5)在線學(xué)習(xí)模塊:在線學(xué)習(xí)模塊以PPT、FLASH、視頻等方式將創(chuàng)新方法知識直觀的展現(xiàn)出來。該模塊的理論完整,交互友好,用戶既可以從入門篇、初級篇、中級篇、高級篇循序漸進(jìn)學(xué)習(xí),也可以根據(jù)需要在初級、中級、高級篇中選擇自己要學(xué)習(xí)的章節(jié),統(tǒng)一歸到自定義篇中來定制學(xué)習(xí)內(nèi)容。在線學(xué)習(xí)視頻界面如圖6所示,用戶可以根據(jù)自己的需要,任意調(diào)整視頻的播放進(jìn)度、視頻頁面的大小及視頻在整個(gè)頁面中的位置。
圖6 在線學(xué)習(xí)視頻界面
(6)方法應(yīng)用模塊:基于TRIZ理論[11,12]并應(yīng)用計(jì)算機(jī)輔助創(chuàng)新技術(shù)解決企業(yè)技術(shù)難題模塊,主要對TRIZ 理論中的沖突創(chuàng)新原理進(jìn)行流程化與軟件化,從而為用戶提供簡單、實(shí)用的流程化圖形。
從普通用戶和管理員視角分別對系統(tǒng)性能進(jìn)行測試,使用LoadRunner測試軟件對傳統(tǒng)登錄頁面和使用Flex技術(shù)進(jìn)行優(yōu)化后的登錄頁面分別進(jìn)行100次用戶登錄時(shí)間測試和模擬并發(fā)用戶進(jìn)行系統(tǒng)內(nèi)存使用率和CPU 利用率測試。測試結(jié)果見表1、表2。
表1 系統(tǒng)登錄時(shí)間結(jié)果對比
表2 系統(tǒng)性能對比
從表1可以看出使用Flex技術(shù)登錄系統(tǒng),計(jì)算機(jī)平均響應(yīng)的時(shí)間要低于使用傳統(tǒng)方法直接登錄的時(shí)間,說明此平臺的用戶響應(yīng)時(shí)間短,可以避免不必要的用戶等待。從表2可以看到相比傳統(tǒng)登錄選擇Flex技術(shù)登錄時(shí),隨著并發(fā)用戶數(shù)的增加,CPU 利用率和內(nèi)存使用率都有所降低。總之,應(yīng)用Flex技術(shù)的系統(tǒng)在登錄時(shí)間和性能方面比普通的系統(tǒng)有很大的優(yōu)勢。
本文結(jié)合MVC架構(gòu)和NHibernate技術(shù)提出了一種全新的應(yīng)用框架,并把該框架與Flex富客戶端技術(shù)相結(jié)合研發(fā)了基于Flex技術(shù)的企業(yè)創(chuàng)新方法服務(wù)系統(tǒng)。與傳統(tǒng)技術(shù)實(shí)現(xiàn)的企業(yè)服務(wù)系統(tǒng)相比該系統(tǒng)具有以下2方面的優(yōu)勢:
(1)MVC架構(gòu)和NHibernate技術(shù)相結(jié)合形成的應(yīng)用框架提高了系統(tǒng)的靈活性和可維護(hù)性,減少了編寫系統(tǒng)代碼的工作量,大大縮短了系統(tǒng)的開發(fā)時(shí)間,提高了系統(tǒng)的開發(fā)效率。
(2)Flex技術(shù)的采用使得該系統(tǒng)頁面表現(xiàn)能力強(qiáng)、交互性好并且不需要刷新頁面就能更新內(nèi)容,提高了系統(tǒng)的及時(shí)響應(yīng)能力,降低了CPU 利用率、內(nèi)存使用率和企業(yè)開發(fā)軟件成本,為企業(yè)用戶間的信息交流和經(jīng)驗(yàn)交流提供了一個(gè)規(guī)范化的學(xué)習(xí)型知識服務(wù)平臺。
[1]LI Yuan,CHEN Shiping.Application of MVC design pattern in ASP.NET [J].Computer Engineering and Design,2009,30 (13):3180-3184 (in Chinese).[李園,陳世平.MVC 設(shè)計(jì)模式在ASP.NET 平臺中的應(yīng)用 [J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30 (13):3180-3184.]
[2]GUO Xiaofeng,YAO Shijun,YIN Zuwei.Design and application of framework of Web applications based on.NET [J].Computer Engineering and Design,2008,29 (2):454-456(in Chinese).[郭曉峰,姚世軍,尹祖?zhèn)?基于.NET 的Web應(yīng)用框架的設(shè)計(jì)與應(yīng)用 [J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(2):454-456.]
[3]PAN Dasi.Research and implementation of Web application support offline processing based on FLEX [J].Computer Science,2008,35 (7):298-301 (in Chinese).[潘大四.基于FLEX技術(shù)構(gòu)建可離線Web應(yīng)用程序的研究與實(shí)現(xiàn) [J].計(jì)算機(jī)科學(xué),2008,35 (7):298-301.]
[4]YANG Can,F(xiàn)U Hangyu,LIU Kan.Design and implementation of a Flex-based interactive network TV platform [J].Computer Engineering and Design,2011,33 (11):189-194(in Chinese).[楊燦,符航宇,劉侃.基于Flex的網(wǎng)絡(luò)電視互動(dòng)平臺的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與科學(xué),2011,33(11):189-194.]
[5]HU Binfeng,SUN Weide,CHEN Qi.Research of WebGIS label control based on Flex [J].Computer Engineering,2011,37 (21):32-37 (in Chinese).[胡斌峰,孫偉德,陳奇.基于Flex的WebGIS 注記控件研究 [J].計(jì)算機(jī)工程,2011,37(21):32-37.]
[6]JIAO Shengming,BAO Yunxuan,GUO Jing,et al.Design and implementation of RIA-based information platform of weather station [J].Computer Engineering,2010,36 (20):217-219 (in Chinese). [焦圣明,包云軒,郭靜,等.基于RIA 氣象站信息平臺的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程,2010,36 (20):217-219.]
[7]WANG Ruiling.RIA and Flex-based application development model of RIA [J].Sci-Tech Information Development and Economy,2007,17 (14):206-207 (in Chinese). [王瑞玲.RIA 及其基于Flex的應(yīng)用開發(fā)模型 [J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2007,17 (14):206-207.]
[8]CHENG Guoxiong,HU Shiqing.System architecture and pattern research of RIA based on Silverlight[J].Computer Engineering and Design,2010,31 (8):1706-1709 (in Chinese).[程國雄,胡世清.基于Silverlight的RIA 系統(tǒng)架構(gòu)與設(shè)計(jì)模式研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (8):1706-1709.]
[9]SHI Quan,LU Chunlong,CHEN Jianping,et al.Application of RIA technology in information platform for marine environmental monitoring [J].Computer Engineering and Design,2011,32 (8):2684-2688 (in Chinese). [施佺,陸春龍,陳建平,等.RIA 技術(shù)在海洋環(huán)境監(jiān)測信息平臺中的應(yīng)用 [J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32 (8):2684-2688.]
[10]WU Weiping,WANG Lifang,JIANG Zejun.Research of data persistent layer based on ORM [J].Microelectronics &Computer,2008,25 (7):188-193 (in Chinese).[吳衛(wèi)平,王麗芳,蔣澤軍.基于ORM 的數(shù)據(jù)持久化框架研究:微電子學(xué)與計(jì)算機(jī) [J],2008,25 (7):188-193.]
[11]TAN Runhua.TRIZ and application:Technology innovation process and method [M].Beijing:Higher Education Press,2010:11-18 (in Chinese).[檀潤華.TRIZ及應(yīng)用:技術(shù)創(chuàng)新過程與方法 [M].北京:高等教育出版社,2010:11-18.]
[12]LAN Fang,QIN Bo.On applications of computer aided innovation based on TRIZ [J].Computer Applications and Software,2009,26 (8):171-173 (in Chinese). [蘭芳,覃波.基于TRIZ的計(jì)算機(jī)輔助創(chuàng)新技術(shù)應(yīng)用研究 [J].計(jì)算機(jī)應(yīng)用與軟件,2009,26 (8):171-173.]