• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于AOP的數(shù)據(jù)填充在教學(xué)診改系統(tǒng)中的應(yīng)用

      2018-07-27 06:50:48郭新東楊華孫瑜
      現(xiàn)代電子技術(shù) 2018年14期
      關(guān)鍵詞:教學(xué)診斷

      郭新東 楊華 孫瑜

      摘 要: 為了分離教學(xué)診斷與改進系統(tǒng)中有關(guān)數(shù)據(jù)填充等大量非系統(tǒng)核心業(yè)務(wù)的邊緣邏輯,提出基于AOP技術(shù)實現(xiàn)系統(tǒng)中的數(shù)據(jù)填充業(yè)務(wù)分離的方法。使用Spring AOP技術(shù)框架作為AOP的實現(xiàn)方式,介紹了Spring AOP框架和IOC容器的實現(xiàn)方法和內(nèi)在機制,并說明分離橫切關(guān)注點和核心業(yè)務(wù)的一般步驟。重點闡述Spring AOP在教學(xué)診改系統(tǒng)中數(shù)據(jù)填充邊緣邏輯處理的研究與實現(xiàn)。系統(tǒng)結(jié)果表明,使用AOP技術(shù)框架可以有效分離數(shù)據(jù)填充等邊緣邏輯與系統(tǒng)核心業(yè)務(wù)邏輯,從而實現(xiàn)解耦,使系統(tǒng)可以更加專注于自身的核心業(yè)務(wù)。

      關(guān)鍵詞: 面向切面編程; 數(shù)據(jù)填充; 教學(xué)診斷; 橫切關(guān)注點; 邊緣邏輯; 核心業(yè)務(wù)

      中圖分類號: TN957.52?34; TP311.52; TP393.08 文獻標(biāo)識碼: A 文章編號: 1004?373X(2018)14?0150?04

      Application of AOP?based data filling in teaching diagnosis and improvement system

      GUO Xindong, YANG Hua, SUN Yu

      (School of Information Science and Engineering, Shanxi Agricultural University, Jinzhong 030800, China)

      Abstract: To separate a large quantity of data filling related edge logics of non?core system services in the teaching diagnosis and improvement system, a data filling service separation method is realized based on the aspect oriented programming (AOP) technology for the system. With the Spring AOP technical framework as the implementation mode of the AOP, the implementation method and internal mechanism of the Spring AOP framework and IOC container are introduced, and the general steps of separating crosscutting concerns from core services are expounded. The research and implementation of data filling edge logic processing in teaching diagnosis and improvement system based on Spring AOP is emphatically explained. The system result shows that the AOP technical framework can efficiently separate the data filling edge logic from the core system service logic, and realize decoupling to enable the system more focused on its core services.

      Keywords: AOP; data filling; teaching diagnosis; crosscutting concern; edge logic; core service

      0 引 言

      近年來,為了建立常態(tài)化的職業(yè)院校人才培養(yǎng)質(zhì)量自主保證機制,教育部辦公廳相繼頒布了“關(guān)于建立職業(yè)院校教學(xué)工作診斷與改進制度的通知”等數(shù)條通知及辦法,該舉措既是深化應(yīng)用型學(xué)校改革的重要方法,也是在新形勢下加快現(xiàn)代職業(yè)教育發(fā)展的戰(zhàn)略選擇[1]。然而,由于我國職業(yè)院校建設(shè)起步較晚,雖然經(jīng)過多年的摸索已然形成一套適合自己的制度體系,但是仍然存在不少的問題。加之多數(shù)落后地區(qū)的職業(yè)院校缺乏有經(jīng)驗的職教專家團隊,所以在推進教學(xué)工作診斷與改進的道路上參差不齊[2]。

      由職教專家團隊提供專家經(jīng)驗,設(shè)計并開發(fā)職業(yè)院校教學(xué)診斷與改進系統(tǒng)(下稱診改系統(tǒng)),可以為職業(yè)院校的教學(xué)診改工作提供更加實質(zhì)性的指導(dǎo)。診改系統(tǒng)根據(jù)教育部及省教育廳頒布的辦法中的診斷要素和診斷點建立學(xué)校對應(yīng)數(shù)據(jù)庫,并可與院校狀態(tài)數(shù)據(jù)平臺共享數(shù)據(jù)。系統(tǒng)根據(jù)專家知識針對所需診斷點制定診斷方案,然后從不同的數(shù)據(jù)源中提取出需要的數(shù)據(jù),并將數(shù)據(jù)填充到診斷方案中的各個點中,從而輸出診斷報告。分析診改系統(tǒng)可知,系統(tǒng)中的診斷點雖然較多,診斷方案也不同,但是實施步驟一致,即制定診斷方案、提取數(shù)據(jù)、填充數(shù)據(jù)和輸出診斷報告。系統(tǒng)中難免會存在大量提取和填充數(shù)據(jù)的操作,而這些操作并不是系統(tǒng)的核心業(yè)務(wù)。若為每個診斷點對應(yīng)的診斷模塊添加相應(yīng)的數(shù)據(jù)填充功能,則會導(dǎo)致系統(tǒng)代碼高度耦合,程序過于復(fù)雜,使系統(tǒng)維護困難且不易擴展。

      通過面向切面編程(Aspect Oriented Programming, AOP)對橫切關(guān)注點實施分離,然后根據(jù)約定或配置,自動將分離出的橫切關(guān)注點動態(tài)織入(Weaving)到系統(tǒng)中的確定位置[3]。使用AOP技術(shù)將數(shù)據(jù)填充作為橫切關(guān)注點從系統(tǒng)核心業(yè)務(wù),即制定診斷方案的功能模塊中分離出來,有效地降低了系統(tǒng)模塊間的耦合度,提高了模塊的復(fù)用度,使開發(fā)者可以更多地關(guān)注系統(tǒng)核心業(yè)務(wù)[4]。在系統(tǒng)后期的維護和擴展中,也能保持系統(tǒng)的整體架構(gòu)不發(fā)生改變,同時保證系統(tǒng)中的大多數(shù)模塊獨立性。

      1 AOP

      面向切面編程(AOP)是對面向?qū)ο缶幊蹋∣OP)的擴展和補充,旨在將分布于系統(tǒng)核心業(yè)務(wù)中的可復(fù)用邏輯分離出來,形成獨立的模塊,以提高代碼復(fù)用率,降低模塊間的耦合度。通過把橫切關(guān)注點以切面(Aspect)的形式抽取出來,在合適的時機織入(Weave)到特定的切點(Pointcut)上以完成任務(wù)[5]。

      1.1 Spring AOP

      Spring框架對AOP提供了Java版本的實現(xiàn),即Spring AOP,且支持AspectJ使用的切入點描述機制[6]。結(jié)合Spring IOC技術(shù),支持將對象的創(chuàng)建過程交由容器管理,而使用者直接使用自動裝配好的注入對象即可[7]。Spring AOP支持兩種方式為對象創(chuàng)建代理,即JDK動態(tài)代理機制和CGLIB機制,前者應(yīng)用于實現(xiàn)了接口(Interface)的目標(biāo)對象上,而后者應(yīng)用于其他類目標(biāo)對象[8]。

      1.2 開發(fā)步驟

      使用Spring AOP進行開發(fā)的基本步驟如下:

      1) 分離切面。切面即為橫切關(guān)注點,把在系統(tǒng)分析過程中定義為非核心業(yè)務(wù)的、具有可重用性的功能提取出來,以獨立模塊的形式實現(xiàn),形成切面。在設(shè)計切面的時候,應(yīng)該使設(shè)計出的切面能完整覆蓋核心業(yè)務(wù)的需求點。

      2) 實現(xiàn)通知。通知(Advice)即為切面的具體代碼實現(xiàn),表現(xiàn)為實現(xiàn)類。Spring AOP支持方法級別的通知,如在目標(biāo)方法執(zhí)行前后,或方法有異常拋出時。

      3) 定義切點。切點定義一個連接點(Join Point)的集合,連接點則是程序執(zhí)行過程中某一特定的時機點。AOP本身定義了多種形式的連接點,但Spring AOP為了不破壞對象的封閉性,只支持方法級別的連接點。通常根據(jù)業(yè)務(wù)的需求點來定義在哪些連接點上被切入。

      4) 織入切面。通過配置文件將設(shè)計好的通知織入到定義好的切點,使分離出的邊緣邏輯切入到主邏輯中。整體邏輯如圖1所示。

      1.3 特性及優(yōu)勢

      使用Spring AOP分離非核心關(guān)注點,可以使系統(tǒng)主邏輯不再對其形成依賴,在降低程序復(fù)雜性的同時提高了模塊的復(fù)用度[9]。結(jié)合Spring IOC框架,使對象的創(chuàng)建及裝配任務(wù)交由容器負責(zé),可以在運行期間由容器動態(tài)搜索需要的資源,減少了組件間的相互依賴,使系統(tǒng)組件間的耦合度更加松散。此外,Spring AOP的抽象事務(wù)模型為開發(fā)者提供了聲明式的企業(yè)級事務(wù)能力,如事務(wù)管理、安全性服務(wù)等,使開發(fā)者可以不必介入到復(fù)雜的事務(wù)管理中,而能更多地關(guān)注主業(yè)務(wù)[10]。

      2 數(shù)據(jù)填充關(guān)注點的分離

      2.1 系統(tǒng)分析

      教學(xué)工作診斷與改進系統(tǒng)跟一般信息系統(tǒng)的不同之處在于其需要根據(jù)不同的診斷點結(jié)合專家給出的診斷規(guī)則制定診斷方案,而后從不同的數(shù)據(jù)源中取出方案所需數(shù)據(jù)動態(tài)填入其中,最終輸出診斷報告并給出指導(dǎo)性的改進建議。由于診斷點眾多,且每個診斷點對應(yīng)的診斷規(guī)則集合各不相同,從而形成的診斷方案也存在較大的差異,所以,這就要求系統(tǒng)要從不同的數(shù)據(jù)源中取出方案所需的數(shù)據(jù)集整合后做填充。系統(tǒng)采用分層的模型設(shè)計,則負責(zé)生成方案的業(yè)務(wù)層需要頻繁地調(diào)用不同的DAO層對象才能夠從不同的對象中獲取所需數(shù)據(jù),而業(yè)務(wù)層對象維護過多的DAO層對象會使層與層之間的耦合度過高,如TeacherSchemeService和TrainingSchemeService都會依賴PartTimeTeacherDAO,同時也各自包含獨立依賴的其他模塊。保持過多的數(shù)據(jù)連接會加重數(shù)據(jù)庫和系統(tǒng)的負擔(dān),影響系統(tǒng)性能。

      針對存在的問題,使用Spring AOP將數(shù)據(jù)填充及事務(wù)處理橫切關(guān)注點分離出來,作為切面織入生成診斷方案和輸出改進報告之間的連接點。切面模塊的定義應(yīng)該滿足細粒度,以提高模塊的復(fù)用率,如師資數(shù)據(jù)填充切面應(yīng)分為SeniorTitleAspect,IntermediateTitleAspect,PrimaryTitleAspect和PartTimeTeacherAspect,這樣可以保證這些切面能供多個改進方案填充數(shù)據(jù)使用,再將切面類交由Spring IOC容器管理,在運行時動態(tài)織入匹配的切點處,如圖2所示。分離出橫切關(guān)注點后,生成方案業(yè)務(wù)層作為核心邏輯不再與數(shù)據(jù)填充邊緣邏輯直接交互,由切面模塊充當(dāng)中間件負責(zé)提取數(shù)據(jù)并填充。切面的透明性使其便于移植,系統(tǒng)層次清晰,在不改變系統(tǒng)總體結(jié)構(gòu)的前提下解決了緊耦合的數(shù)據(jù)填充問題。

      2.2 分離關(guān)注點

      分離橫切關(guān)注點即在原有模塊的設(shè)計基礎(chǔ)之上,將核心業(yè)務(wù)模塊中的相同需求點處的邊緣邏輯分離出來。以師資隊伍建設(shè)診斷和實訓(xùn)基地建設(shè)診斷為例,師資隊伍建設(shè)診斷方案需要分別獲取具備高級職稱、中級職稱、初級職稱和企業(yè)兼職教師隊伍建設(shè)情況,而實訓(xùn)基地建設(shè)診斷方案需要分別獲取校內(nèi)基地、校外基地、及校內(nèi)教師和企業(yè)兼職教師隊伍情況,如圖3所示。診改系統(tǒng)根據(jù)診斷方案及填充的數(shù)據(jù)輸出改進報告,然而系統(tǒng)并不關(guān)心數(shù)據(jù)是從何處獲取或是如何填充到方案中,所以數(shù)據(jù)填充對于診斷方案及報告的生成就屬于邊緣邏輯,應(yīng)該分離。對于像企業(yè)兼職教師數(shù)據(jù)填充這樣的模塊,會被多個不同的診斷方案使用,所以應(yīng)當(dāng)在系統(tǒng)上下文(Context)中共享實例,運用單例模式能夠較好地解決這類問題。

      2.3 切面設(shè)計

      不同于AspectJ框架,Spring AOP并沒有為切面引入新的設(shè)計語言,使用帶注解@Aspect的標(biāo)準(zhǔn)POJO類就可以完成切面,避免了切面的高侵入性。根據(jù)系統(tǒng)分析可知數(shù)據(jù)填充模塊具有一些通用的操作,如建立到數(shù)據(jù)源的連接,所以首先建立通用數(shù)據(jù)填充模塊,然后根據(jù)所需數(shù)據(jù)的粒度去泛化該通用模塊。填充數(shù)據(jù)的動作需要在輸出診斷報告之前完成,所以使用前置通知織入診斷輸出模塊較為合適。Spring AOP在切面類中使用帶@Before注解的方法即可完成前置通知的實現(xiàn)。以教學(xué)資源建設(shè)中的網(wǎng)絡(luò)課程建設(shè)為例,需要獲取網(wǎng)絡(luò)課程建設(shè)的數(shù)據(jù)并填充,其核心程序代碼如下:

      @Aspect

      public class OnlineCourseAspect extends CommonAspect {

      @Before(pointcut="com.diag.services.teachingres.

      TeachingResServices.generateReportPart()")

      public void filling() {

      …//get the data and fill to the pointcut

      }

      }

      2.4 織入配置

      切面完成之后,就可以按規(guī)則將切面織入到特定的切點中。Spring AOP是依賴動態(tài)代理機制實現(xiàn)的,只支持基于方法攔截的織入。使用基于AspectJ的注解方式配置切點,則切點就是一個添加了注解@Pointcut的類方法,方法名即為切點的標(biāo)識名,因此節(jié)點的可訪問性等同于方法的可訪問性。對于只用于特定業(yè)務(wù)類中的切面,則可以將其切點放置在該切面類中,如SeniorTitleAspect只在TeachingStaffService業(yè)務(wù)類中填充數(shù)據(jù),故將切點@Pointcut(“com.diag.services.TeachingStaffService.generateReportPart()”)置于SeniorTitleAspect切面類中。對于具有通用性的切面,則可以將這些切面的切點統(tǒng)一放置于一個系統(tǒng)類SystemUtilPointcut中方便調(diào)用。

      這樣系統(tǒng)在運行時,TeachingStaffService,Teaching

      ResService等業(yè)務(wù)模塊可以專注于診斷報告的生成,而不需要關(guān)注數(shù)據(jù)的獲取及填充等非核心業(yè)務(wù),從而實現(xiàn)了數(shù)據(jù)填充邊緣邏輯的分離。

      3 結(jié) 語

      教學(xué)診改系統(tǒng)應(yīng)用Spring AOP解決了數(shù)據(jù)填充邊緣邏輯與主邏輯分離的問題,使數(shù)據(jù)填充功能對于主邏輯是透明的。聲明式的編程方式使程序結(jié)構(gòu)清晰、層次分明,利于系統(tǒng)的維護和擴展。使用Spring AOP框架需要多加注意的是,系統(tǒng)的主邏輯模塊和邊緣邏輯模塊都需要由Spring IOC容器管理,若系統(tǒng)中存在非容器創(chuàng)建的實例且與模塊形成依賴關(guān)系,則可能導(dǎo)致邏輯不可控甚至系統(tǒng)崩潰。所以使用Spring AOP框架時,須在系統(tǒng)設(shè)計階段理清模塊間的依賴關(guān)系,與主邏輯或邊緣邏輯具有依賴關(guān)系時必須交由容器管理。

      參考文獻

      [1] 李曉燕.高職院校教學(xué)診斷與改進工作芻議[J].文教資料,2016(7):154?155.

      LI Xiaoyan. Discussion on teaching diagnosis and improvement in higher vocational colleges [J]. Data of culture and education, 2016(7): 154?155.

      [2] 劉海.教學(xué)診斷與改進:職業(yè)院校質(zhì)量提升的內(nèi)生動力[J].職業(yè)技術(shù)教育,2016,37(18):19?23.

      LIU Hai. Diagnosis and improvement of teaching: endogenous power of quality improvement of vocational colleges [J]. Vocational and technical education, 2016, 37(18): 19?23.

      [3] 趙秀霞,付秀麗.基于組件和攔截器的Web系統(tǒng)權(quán)限設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2014,37(8):105?107.

      ZHAO Xiuxia, FU Xiuli. Permission design and implementation of Web system based on subassembly and interceptor [J]. Modern electronics technique, 2014, 37(8): 105?107.

      [4] 陳雷,孟博.基于AOP技術(shù)的重構(gòu)方法研究與實現(xiàn)[J].小型微型計算機系統(tǒng),2004,25(9):1700?1703.

      CHEN Lei, MENG Bo. Research and implementation of refactoring based on AOP technique [J]. Journal of Chinese computer systems, 2004, 25(9): 1700?1703.

      [5] 孟凡新,張京軍,劉光遠.基于AOP和Web服務(wù)的多層分布式系統(tǒng)[J].計算機工程,2010,36(1):61?63.

      MENG Fanxin, ZHANG Jingjun, LIU Guangyuan. Multi?tier distributed system based on AOP and Web services [J]. Computer engineering, 2010, 36(1): 61?63.

      [6] 王申源,董傳良,劉英丹.一種基于AOP的企業(yè)應(yīng)用開發(fā)技術(shù)[J].計算機仿真,2005,22(5):234?238.

      WANG Shenyuan, DONG Chuanliang, LIU Yingdan. An enterprise applicable developing technology based on AOP [J]. Computer simulation, 2005, 22(5): 234?238.

      [7] 鮑陳,汪千松.基于AOP的實時系統(tǒng)關(guān)注點分離方法[J].計算機工程與設(shè)計,2011,32(9):3082?3086.

      BAO Chen, WANG Qiansong. Separation approach for concerns in real?time system based on AOP [J]. Computer engineering and design, 2011, 32(9): 3082?3086.

      [8] JIANG H. The strategy pattern based on AOP implementation [J]. Microcomputer & its applications, 2016, 35(1): 9?11.

      [9] CHOI I. A study on rule separation based on AOP for an efficient service system [J]. Pacific science review, 2015, 17(2): 51?60.

      [10] GE B, MAO X, CHEN Y, et al. An AOP?based robot behaviors safety checking method [C]// Proceedings of International Conference on Industrial Informatics?Computing Technology, Intelligent Technology, Industrial Information Integration. Wuhan: IEEE, 2016: 116?123.

      猜你喜歡
      教學(xué)診斷
      基于產(chǎn)教融合的中職學(xué)校教學(xué)改革實踐探究
      成人教育(2017年9期)2017-11-03 07:59:57
      新課標(biāo)下高中語文課堂教學(xué)診斷標(biāo)準(zhǔn)化措施分析
      IPA模型在高職課程診斷及改進中的應(yīng)用
      高職課程評價的研究與實踐探索
      農(nóng)村小學(xué)綜合實踐教學(xué)診斷與改進路徑
      以優(yōu)質(zhì)教學(xué)資源推進“一課堂”教學(xué)質(zhì)量的思考與對策
      中職教學(xué)診斷與改進機制的校本實踐研究
      考試周刊(2016年99期)2016-12-26 16:07:11
      現(xiàn)代學(xué)徒制試點項目教學(xué)診斷與改進的研究與實踐
      讓“教學(xué)診斷”成為教師成長的契機
      中學(xué)生歷史學(xué)科能力表現(xiàn)及測評初探
      阿拉善盟| 任丘市| 黑山县| 肇东市| 绍兴市| 南通市| 昆山市| 雷山县| 桐乡市| 丘北县| 隆昌县| 平武县| 铜山县| 蒲城县| 察雅县| 新野县| 河北省| 钟祥市| 沁水县| 云霄县| 沅江市| 宜春市| 楚雄市| 洮南市| 凌云县| 合作市| 安化县| 儋州市| 周宁县| 敖汉旗| 绥德县| 昭平县| 江川县| 邵阳市| 西吉县| 将乐县| 抚松县| 阳谷县| 应用必备| 桐城市| 新乡市|