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

?

一種輕量級的多層Web應用架構(gòu)研究及使用

2020-07-28 00:59張紫桂
陜西科技大學學報 2020年4期
關(guān)鍵詞:代碼架構(gòu)邏輯

梁 弼, 張紫桂, 熊 倫

(1.四川文理學院 智能制造學院, 四川 達州 635000; 2.紹興文理學院 土木工程學院, 浙江 紹興 312000)

0 引言

目前,分層架構(gòu)設計思想已在Web應用系統(tǒng)研發(fā)中得到了廣泛使用,并且J2EE三層Web應用架構(gòu)是當前主流的多層架構(gòu),它把一個完整的Web應用系統(tǒng)劃分為三層,從上到下依次為表示層、業(yè)務邏輯層及數(shù)據(jù)訪問層,這三層分別承擔特定的任務,而且不同層的任務采用不同的技術(shù)來實現(xiàn).其中,表示層的任務由Struts來完成,業(yè)務邏輯層的任務由Spring來承擔,而數(shù)據(jù)訪問層的任務則通過Hibernate來實現(xiàn),各層之間相互協(xié)作一起完成整個系統(tǒng)的所有功能[1].這種以Struts、Spring和Hibernate為關(guān)鍵技術(shù)的三層Web應用架構(gòu)被稱為經(jīng)典J2EE三層架構(gòu),它有利于Web應用系統(tǒng)的分析、設計、實現(xiàn)、部署和維護等,目前已廣泛應用于各種Web應用系統(tǒng),譬如網(wǎng)上購書系統(tǒng)、在線學習平臺等[2].

但是,由于經(jīng)典J2EE三層架構(gòu)所使用的Struts、Spring和Hibernate三種技術(shù)來源于不同公司,其本身是三種不同類型的開源框架,分別用于實現(xiàn)Web應用系統(tǒng)中三層各自所承擔的不同任務,當開發(fā)人員進行系統(tǒng)整合時往往會出現(xiàn)Jar包、XML配置文件以及代碼不兼容等異常情況,從而導致系統(tǒng)難以整合,進而延長系統(tǒng)開發(fā)時間,間接增加系統(tǒng)開發(fā)成本.此外,交付后的系統(tǒng)還存在可擴展性差、可維護性弱等問題,并且這些問題目前在大規(guī)模企業(yè)級Web應用系統(tǒng)研發(fā)中越發(fā)明顯.

為了有效解決這些問題,本文有機融合三層架構(gòu)和MVC模式,提出了一種以Spring框架為基礎(chǔ)的輕量級PCBADM架構(gòu),并將它應用于紅色遺址保護系統(tǒng)等案例,實際使用證明了其正確性、可行性和有效性.

1 基礎(chǔ)知識

1.1 三層架構(gòu)

三層架構(gòu)是目前使用最為普遍的一種多層架構(gòu).其中,表示層為用戶可以直接訪問和交互的層次,用于顯示數(shù)據(jù)、接收用戶輸入的數(shù)據(jù)以及為用戶提供一種交互式操作界面.業(yè)務邏輯層是系統(tǒng)架構(gòu)中核心的部分,封裝了業(yè)務邏輯、領(lǐng)域概念、數(shù)據(jù)訪問邏輯等,主要集中在業(yè)務規(guī)則的制定、業(yè)務流程的實現(xiàn)等.數(shù)據(jù)訪問層主要是負責訪問數(shù)據(jù),可以訪問數(shù)據(jù)庫系統(tǒng)、二進制文件、文本文檔以及XML文件等[3].三層中有些層次可以進一步劃分,使它變?yōu)楦鄬拥募軜?gòu)模型,譬如本文從業(yè)務邏輯層分離出控制層和域模型層.并且,各層的任務可以采用不同技術(shù)來實現(xiàn),目前常用的技術(shù)是Struts、Spring和Hibernate,即經(jīng)典J2EE三層架構(gòu).

1.2 MVC模式

MVC(Model-View-Controller)是目前流行的一種軟件設計模式,已廣泛應用于各類應用系統(tǒng),它由Model、View和Controller三個組件組成[4].其中,Model處理應用程序的數(shù)據(jù)邏輯,View處理數(shù)據(jù)顯示,Controller處理用戶與Web應用系統(tǒng)的數(shù)據(jù)交互.MVC的目標是有效分離Model和View的實現(xiàn)代碼,靈活地讓同一個程序可以使用多種表現(xiàn)形式,譬如一批從后臺返回的統(tǒng)計數(shù)據(jù)可以用折線圖、餅狀圖或柱狀圖等形式來展示它們.Controller的作用是確保Model和View的恰當同步,當Model一改變,View相應地進行同步更新.MVC的核心思想是將應用系統(tǒng)的視圖功能、模型功能和控制功能在不同的層上分別實現(xiàn).因此,本文恰當利用MVC模式的思想和Controller組件的功能來設計PCBADM架構(gòu)中的控制層.

1.3 Spring框架

Spring框架是輕量級一站式企業(yè)應用程序解決方案,它由Spring Core、Spring AOP、Spring ORM、Spring DAO、Spring Web、Spring Context和Spring Web MVC七個模塊構(gòu)成[5].由于不同模塊承擔不同任務,在具體應用中研發(fā)者可以根據(jù)需要來選擇所需的模塊,因此本文所提出的PCBADM架構(gòu)主要由Spring Core模塊、Spring Web MVC模塊和Spring DAO模塊組合而成.其中,Spring Core是Spring框架最基本、最核心的部分,它提供了依賴注入DI的功能以及對Bean容器的管理功能.Spring DAO實現(xiàn)了對JDBC輕量級封裝,用以提供對JDBC操作的支持.Spring Web MVC提供了一個完整的MVC解決方案,通過使用該模塊來開發(fā)Web應用系統(tǒng)能夠很好地與IoC容器相結(jié)合.

2 PCBADM架構(gòu)研究

2.1 PCBADM架構(gòu)的構(gòu)建

本文基于經(jīng)典J2EE三層架構(gòu)和MVC模式,并以開源的Spring輕量級框架中三個模塊(即Spring Core、Spring Web MVC和Spring DAO)為核心,同時有效融合Spring IoC/DI、Spring MVC和Spring JDBC等Spring框架相關(guān)技術(shù)構(gòu)建了輕量級的PCBADM架構(gòu),即表現(xiàn)層(P:Presentation layer)、控制層(C:Control layer)、業(yè)務邏輯層(B:Business layer)、數(shù)據(jù)訪問層(A:Access layer)、數(shù)據(jù)層(D:Data layer)和域模型層(M:Model layer).其中,Spring Core模塊承擔業(yè)務邏輯層任務,使用Spring IoC/DI等技術(shù)來實現(xiàn)[6];Spring Web MVC模塊承擔控制層任務,采用Spring MVC框架技術(shù)來完成[7];Spring DAO模塊承擔數(shù)據(jù)訪問層任務,使用Spring JDBC技術(shù)來實現(xiàn)[8].其具體架構(gòu)設計如圖1所示[9].

圖1 PCBADM架構(gòu)圖

由圖1可見,該多層架構(gòu)主要使用Spring框架的相關(guān)技術(shù)來完成,相對經(jīng)典J2EE三層架構(gòu)而言,它所使用的技術(shù)更為單一,當后期進行系統(tǒng)整合時不管是代碼整合還是XML配置整合都更加容易,并能有效避免不同框架技術(shù)整合時Jar包、XML文件等不兼容情況出現(xiàn).同時,該多層架構(gòu)是一種弱耦合結(jié)構(gòu),層與層之間的依賴是向下的,下層對上層來講是透明的,改變上層的設計對于其調(diào)用的下層而言沒有任何影響,這不僅有力地提高了各層實現(xiàn)的靈活性,而且恰當?shù)貙崿F(xiàn)了軟件設計目標--高內(nèi)聚低耦合,這有利于Web應用系統(tǒng)后期的擴展和維護.

2.2 PCBADM架構(gòu)各層功能及技術(shù)

表現(xiàn)層(P)是用戶接口(即Web界面),用于接收用戶輸入的數(shù)據(jù)以及顯示后臺返回的響應結(jié)果,這主要通過Html5或JSP等技術(shù)來實現(xiàn).控制層(C)接收來自于表現(xiàn)層的用戶請求,并對請求信息進行轉(zhuǎn)發(fā)控制,然后調(diào)用業(yè)務邏輯層相應的業(yè)務Bean完成具體事務,最后再將處理結(jié)果返回到表現(xiàn)層,其作用相當于傳統(tǒng)的Servlet,因此該任務主要由Spring MVC來完成[10].業(yè)務邏輯層(B)處于控制層和數(shù)據(jù)訪問層之間,在數(shù)據(jù)交換中起著承上啟下的作用,它包含具體應用的業(yè)務對象、業(yè)務規(guī)則和業(yè)務服務,完成特定的業(yè)務邏輯功能,并封裝成JavaBean組件交由Spring IoC容器進行管理[11].這樣通過使用IoC容器,并利用DI的方式,可以有效實現(xiàn)業(yè)務對象之間的解耦和業(yè)務Bean之間的交互.

數(shù)據(jù)訪問層(A)是連接數(shù)據(jù)庫的接口,負責從一個或者多個數(shù)據(jù)庫中查詢或者更新數(shù)據(jù)的一組類或組件,用來定義、添加、查找、修改及刪除數(shù)據(jù),并管理應用服務對數(shù)據(jù)的請求操作,這由Spring JDBC來承擔.數(shù)據(jù)層(D)是系統(tǒng)狀態(tài)持續(xù)性的實際表現(xiàn),它為整個Web應用提供數(shù)據(jù)服務,數(shù)據(jù)服務一般都涉及大存儲量的數(shù)據(jù)資源,必須借助外部存儲工具來實現(xiàn),本架構(gòu)通過關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(SQL Server)來完成.域模型層(M)是業(yè)務領(lǐng)域相關(guān)對象的OO表現(xiàn),擔負著各層次及模塊間傳遞數(shù)據(jù)的職責,它貫穿于Web應用系統(tǒng)的全過程,此架構(gòu)通過簡單的POJO來實現(xiàn).

由此可見,PCBADM架構(gòu)將一個完整的Web應用系統(tǒng)恰當?shù)貏澐譃榱鶄€層次,而且每一層完成各自特定的任務,其各層主要功能及相應的實現(xiàn)技術(shù)可概括如表1所示,并且各層各司其職但又一起協(xié)作地實現(xiàn)整個Web應用系統(tǒng)的功能.

表1 PCBADM架構(gòu)各層的主要功能及技術(shù)

3 PCBADM架構(gòu)的使用

紅色遺址是革命先輩留給我們的重要紅色資源,應該使用先進的信息技術(shù)加以保護,進而提高紅色遺址數(shù)字化保護水平[12].基于此,本文把所提出的PCBADM架構(gòu)應用于紅色遺址保護系統(tǒng),以該典型案例來證明其可行性和有效性.根據(jù)上圖1,首先把該保護系統(tǒng)劃分為表現(xiàn)層、控制層、業(yè)務邏輯層、數(shù)據(jù)訪問層、數(shù)據(jù)層和域模型層,然后依據(jù)PCBADM架構(gòu)所需的技術(shù),以MyEclipse 2018為開發(fā)平臺,Tomcat 8.5為后臺服務器,并基于Java語言,使用Spring IoC/DI、Spring MVC、Spring JDBC、JSP以及Html5等技術(shù),按照圖1的層次關(guān)系依次實現(xiàn)紅色遺址保護系統(tǒng)各層功能.

3.1 表現(xiàn)層(P)的實現(xiàn)

該保護系統(tǒng)表現(xiàn)層的展示功能主要通過Html5、JSP等技術(shù)來完成,并恰當融合Web3D等技術(shù)實現(xiàn)紅色遺址360度全景漫游來增強用戶體驗.本系統(tǒng)主要的表現(xiàn)層頁面有index.html、hongYiXiangQing.html、chaKanWeb3DHongYi.html、chaKanWeb3DHongYi_jianmenguanyizhi.html、zhuCe.jsp、dengLu.jsp、yongHu.jsp、guanLiYuan.jsp、 hongSeXinWen.jsp和pingLun.jsp等.

3.2 控制層(C)的實現(xiàn)

該保護系統(tǒng)的控制層負責對用戶Http請求的轉(zhuǎn)發(fā)控制,主要通過Spring MVC來實現(xiàn).而且Spring MVC能很好地支持多種表現(xiàn)層技術(shù),能將表現(xiàn)層和控制層進行恰當集成,有效實現(xiàn)兩層之間的數(shù)據(jù)通信.本系統(tǒng)主要的控制文件有HongYiController.java、YongHuController.java、GuanLiYuanController.java、HongSeXinWenController.java、PingLunController.java、TuPianController.java及Web3DHongYiController.java等,其中HongYiController.java的核心偽代碼形式如下,其它控制文件形式類同,并完成相應的Spring-servlet.xml配置[13].

……@Controller@RequestMapping("/hongyi")

public class HongYiController {

@RequestMapping("/center") public String center(){return "hongyi";}

@InitBinder public void initBinder(WebDataBinder binder){binder.registerCustomEditor(……);} }……

3.3 業(yè)務邏輯層(B)的實現(xiàn)

該保護系統(tǒng)的業(yè)務邏輯層實現(xiàn)系統(tǒng)具體的業(yè)務功能,主要采用Spring IoC/DI技術(shù)來實現(xiàn),其目標是簡化業(yè)務Bean的編寫和對這些Bean的管理.本系統(tǒng)的業(yè)務Bean主要有HongYiService.java、YongHuService.java、GuanLiYuanService.java、HongSeXinWenService.java、PingLunService.java和TuPianService.java等,其中HongYiService.java的主要偽代碼如下,其它業(yè)務Bean編寫類同.

public class HongYiService implements HongYiServiceInterface{……

public void saveHongYi(HongYi hongYi) {

hongYiDAO.savehongYi(hongYi); }

public List getHongYiAll() {return hongYiDAO.getHongYiList() ;}……}

此外,業(yè)務邏輯層還一個關(guān)鍵任務是配置ApplicationContext應用上下文——Spring.xml,該配置文件是整個系統(tǒng)的基礎(chǔ),通過它能恰當?shù)貙⑸舷赂鲗尤诤显谝黄?,其配置模板結(jié)構(gòu)如下[14]:

xsi:schemaLocation="http://www.springframework.org/schema/beans……>

-ref="ds" />……

3.4 數(shù)據(jù)訪問層(A)的實現(xiàn)

該保護系統(tǒng)的數(shù)據(jù)訪問層承擔對數(shù)據(jù)庫中數(shù)據(jù)的訪問操作,主要使用Spring JDBC來完成.本系統(tǒng)的核心DAO類有HongYiDAO.java、YongHuDAO.java、GuanLiYuanDAO.java、HongSeXinWenDAO.java、PingLunDAO.java、TuPianDAO.java等,其中HongYiDAO.java里獲取所有紅色遺址信息的關(guān)鍵偽代碼格式如下,同樣需完成相應的Spring-jdbc.xml配置[15].

public class HongYiDAO implements HongYiDAOInterface{……

public List getHongYiList() {

return (List) jdbcTemplate.query("select * from hongYiTable",new HongYiRowMapper() };……}

3.5 數(shù)據(jù)層(D)的實現(xiàn)

該保護系統(tǒng)的數(shù)據(jù)層負責對系統(tǒng)中持久化的數(shù)據(jù)進行管理,并通過傳統(tǒng)的關(guān)系數(shù)據(jù)庫SQL Server 2012來實現(xiàn).根據(jù)需求分析,得到本系統(tǒng)的數(shù)據(jù)庫hongYiDB主要包含的數(shù)據(jù)表有hongYiTable、yongHuTable、guanLiYuanTable、hongSeXinWenTable、pingLunTable和tuPianTable等.其中,yongHuTable的字段為(id,yNumber,yPassword,yPhoto,ySex,yBirth,yAddress,yMail,yStatus,zcTime……),其它表的字段根據(jù)需求來類似設計并使用SQL Server 2012來實現(xiàn).

3.6 域模型層(M)的實現(xiàn)

該保護系統(tǒng)的域模型層使用POJO類來對各層交互的臨時數(shù)據(jù)進行封裝和傳遞,其主要POJO有HongYi.java、YongHu.java、GuanLiYuan.java、HongSeXinWen.java、PingLun.java和TuPian.java等,其中GuanLiYuan.java核心代碼格式如下,其它POJO類似.

public class GuanLiYuan {

private Integer id; private String gName; private String gPassword;……

public void setId(Integer id) {this.id = id;}

public Integer getId() {return id;}

其它屬性的setter/getter方法……}

4 PCBADM架構(gòu)使用結(jié)果分析

本文使用所提出的PCBADM架構(gòu)來設計和實現(xiàn)紅色遺址保護系統(tǒng),并與經(jīng)典J2EE三層架構(gòu)在相同環(huán)境下開發(fā)本案例進行對比實驗.

4.1 開發(fā)環(huán)境

硬件環(huán)境為Intel Core i5-8300H @ 2.30GHz,8GB RAM,1TB HDD,128GB SSD,100 Mb/s Ethernet等,軟件環(huán)境為Microsoft Windows 10,SQL Server 2012,JKD 1.8,MyEclipse 2018,Tomcat 8.5,Spring 4.3,Spring MVC 4.3,Spring JDBC 4.3,Struts 2.5,Hibernate 5.2,Dreamweaver CS6等.

4.2 對比標準

開發(fā)時間:軟件生成周期中開發(fā)軟件階段所用的時間.

代碼行數(shù):源程序代碼行的總數(shù)量.

配置文件:一種為計算機程序配置參數(shù)和設置初始值的計算機文件.

軟件大?。很浖谟嬎銠C磁盤里面所占有的空間.

整合出錯率:軟件開發(fā)后期各模塊整合時出錯的幾率,出錯率=出錯值/正確值*100%.

4.3 實驗結(jié)果

相同的軟硬件環(huán)境下,使用PCBADM架構(gòu)和經(jīng)典J2EE三層架構(gòu)來開發(fā)紅色遺址保護系統(tǒng),在開發(fā)時間、代碼行數(shù)和配置文件等標準所得到的實驗數(shù)據(jù)如表2所示.

表2 兩種架構(gòu)應用比較

由上表2可得,與經(jīng)典J2EE三層架構(gòu)相比,使用PCBADM架構(gòu)來開發(fā)紅色遺址保護系統(tǒng)所使用的開發(fā)周期縮短了約35.4%,整合時的出錯率減少了約15.8%.并且,我們將該多層架構(gòu)應用于其它Web應用系統(tǒng)(如紅色文物展示系統(tǒng)、紅色景點旅游系統(tǒng)等)也得到類似的結(jié)果.

通過在多個Web應用系統(tǒng)上進行實踐,結(jié)果證明使用PCBADM架構(gòu)來開發(fā)Web應用系統(tǒng)具有如下優(yōu)點:

(1)設計更加清晰:該多層架構(gòu)基于目前主流的三層架構(gòu)和MVC模式來設計,它將一個完整的Web應用系統(tǒng)按其功能合理地劃分為六個層次,避免了傳統(tǒng)三層架構(gòu)分層不夠明晰的缺陷.

(2)開發(fā)時間更短:該多層架構(gòu)清晰的分層設計使項目分工更為明確,六層中每一層由不同類型的技術(shù)人員負責,六個層次所對應的模塊可以并行開發(fā),且互不影響,這有效縮短了系統(tǒng)的開發(fā)時間.

(3)整合更加容易:由于該多層架構(gòu)的核心層主要使用Spring相關(guān)技術(shù)來實現(xiàn),不論是代碼編寫還是XML配置所涉及的技術(shù)都比較單一,很少出現(xiàn)整合不兼容的情況,這有效降低了系統(tǒng)整合的出錯率.

(4)軟件體積變得更小:從實際的案例開發(fā)可看出,該多層架構(gòu)提高了代碼的復用率,并且通過充分使用Spring的新服務(如Annotation等)以及IoC容器的強大管理功能,可以在很大程度上縮減程序的代碼量及配置量,這使得所開發(fā)出來的Web應用系統(tǒng)體積變得更小.

(5)更易于擴展和維護:由于各層之間是弱耦合,使得模塊與模塊之間聯(lián)系比較弱,當對某一模塊做修改時并不會影響到其它模塊,這有利于系統(tǒng)后期的擴展和維護,但會導致系統(tǒng)總體性能有所下降.

5 結(jié)論

目前,設計合理恰當?shù)亩鄬蛹軜?gòu)已成為開發(fā)Web應用系統(tǒng)中一個重要的過程,架構(gòu)設計的優(yōu)劣將直接影響著系統(tǒng)后期的開發(fā)與維護.本文不僅提出了一種新的輕量級PCBADM架構(gòu),而且將其應用于紅色遺址保護系統(tǒng)典型案例中.通過在多個類似案例上進行反復實踐,結(jié)果都證明該多層架構(gòu)能有效提高代碼復用性和應用系統(tǒng)的可維護性,并能恰當減少數(shù)據(jù)描述和應用操作之間的耦合度.

而且,基于該多層架構(gòu)來開發(fā)Web應用系統(tǒng),這在一定程度上是軟件開發(fā)思想的一個進步,它進一步解決了軟件開發(fā)中模塊間的耦合性、模塊整合時的兼容性等問題,為開發(fā)配置量少、代碼清晰和可擴展性良好的系統(tǒng)提供了基本思想.然而,分層過多在一定程度上會降低系統(tǒng)性能,所以在分層架構(gòu)設計中應該恰當?shù)匕盐找粋€度,這是我們后續(xù)需要深入研究的內(nèi)容.

猜你喜歡
代碼架構(gòu)邏輯
刑事印證證明準確達成的邏輯反思
邏輯
創(chuàng)新的邏輯
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應用和實踐
基于B/S架構(gòu)的圖書管理系統(tǒng)探究
構(gòu)建富有活力和效率的社會治理架構(gòu)
女人買買買的神邏輯
神秘的代碼
一周機構(gòu)凈增(減)倉股前20名
一行代碼玩完19億元衛(wèi)星