?

基于Java的Web軟件程序框架分層設計探討

2022-09-07 04:06黃麗萍
信息記錄材料 2022年7期
關鍵詞:程序開發服務器分層

黃麗萍

(廣西盈賽數字科技有限公司 廣西 南寧 530011)

0 引言

在信息化時代下,互聯網已經滲透到了人們生活、生產的方方面面,而人們生活、生產中的大量線上需求,如網上購物、支付、打車、工作等,都需要通過Web類型的軟件程序來實現,這會使Web軟件程序承擔大量的客戶訪問及業務運行壓力。而且當前人們對于Web軟件程序的功能及效率需求也越來越高,這就給Web軟件程序的框架設計提出了更高要求。只有高效、安全且擴展靈活的程序框架結構,才能保證Web軟件程序的有序開發和順暢運行[1]。

自20世紀80年代開始,程序的開發與設計日益廣泛和普遍,最初由于程序的功能需求單一,所以程序的開發與設計采用的都是單層結構,國內外均是如此。此后,隨著計算機軟硬件的迭代發展以及程序功能需求的增加,單層結構的程序開發與設計逐漸無法再適應現實的需要,于是便出現了多層結構[2]。分層設計最先開始在國外得到了廣泛應用,進入21世紀后在我國也快速普及起來,現如今已經成為主要的程序開發設計方式[3]。

1 分層設計概念

隨著信息化設備以及互聯網的廣泛普及,人們對于各種程序應用的需求性、依賴性也越來越強,程序開發設計逐漸成為一項關鍵和重要的課題,不論是程序語言、輔助技術還是框架結構都在不斷改進、完善與升級[4]。如在最初的程序開發設計中,由于技術設備的限制以及功能需求較為單一,所以程序的框架結構是扁平化的,這足以滿足程序開發設計、運行維護的需要。但是隨著技術設備性能的提升以及功能需求的增加,程序的規模變得越來越大,結構越來越復雜,扁平化的程序框架結構難以再適應程序開發設計的要求,容易出現結構混亂、組織無序以及維護升級復雜等一系列難題。分層設計是與扁平化框架結構相對應的一種程序開發設計框架模式,它打破了扁平化的框架結構體系,使程序開發設計的組織更加井然有序[5]。如它將程序的前端與后端相分離,相互之間通過專門的接口通道連接,彼此協調、配合,完成程序的整體運行,實現相應的功能供給。最基本的分層設計是雙層模式,它概括性地將程序的前端與后端分離開來,除此還有三層模式、四層模式以及五層和多層模式,其不同之處在于,對后端進行了更加詳細的層次劃分,如將數據層和業務層進一步分離開來。

2 分層設計的特征與優勢

2.1 分層設計的特征

分層設計的主要特征是改變了原始的扁平化程序框架結構,顯著地增強了程序開發設計的組織性和有序性[6]。通過分層,不同層次的程序開發設計只需要專注其本身應當實現的功能,不需要考慮其他功能如何實現,如在前端的顯示層、交互層中,只需要考慮如何向用戶展示充分的信息,如何引導用戶提交其所需的功能需求等,并向用戶反饋結果,至于反饋結果是如何得出的,它則不需要考慮。而在后端的業務層中,就只需要考慮如何處理用戶的需求,不需要考慮如何與用戶交互,數據層的功能則更加純粹,只需要存儲數據,提供數據的查詢、更新等功能即可。需要注意的是,在分層設計中,雖然程序的各個層次具有明確的界限劃分,但是它們依舊是一個嚴密的邏輯整體。

2.2 分層設計的優勢

除了可以使程序的開發設計更加井然有序之外,分層設計的主要優勢還有以下幾點:(1)程序的管理、維護更加方便,穩定性更強。由于分層設計將不同的功能層劃分開了,只是存在邏輯上的聯系,所以如果需要對層序的某一層進行管理、維護,不會涉及和影響到其他層,一般情況下只需要對本層做出調整,便可以使程序穩定運行[7];(2)程序的拓展性更強,如果需要的話,可以隨時在業務層中進行程序的功能拓展和優化,不會影響到其他層的運行;(3)分層設計能夠大大提高程序開發設計的效率,不同分層的開發設計工作可以同時進行,加快程序開發設計的周期,不同層之間只需要提前協商、預留好接口即可;(4)一些功能模塊可以重復性使用,這有助于加快開發設計效率,降低開發設計成本。

3 基于Java的Web軟件程序前后端分離部署結構

在基于Java的Web軟件程序框架分層設計中,前后端分離部署是最基礎的結構模式,它將前端的服務器與后端的服務器分離,形成雙層結構。

3.1 前后端分離部署結構分析

前后端分離部署結構見圖1。

前后端分離部署結構中需注意以下幾點:(1)前端程序運行在前端服務器;(2)后面程序運行在后端服務器;(3)用戶端通過瀏覽器向前端服務器進行頁面請求;(4)前端服務器返回請求Web頁面;(5)Web頁面通過AJAX向后端服務器發出數據接口請求;(6)后端服務器返回數據給Web進行數據加載顯示。

3.2 前后端分離部署結構的優勢

基于Web的軟件一般都由前端交互程序和后端服務程序組成,前端與后端以一個怎么樣的模式協同工作是一個基于Web軟件程序框架必須解決的問題。早期基于Web的框架大多是前端和后端代碼交織在一起開發,由此帶來許多問題,開發效率低下,代碼易被污染,排查錯誤及后期維護困難,擴展功能不靈活。尤其是如果前端和后端是不同程序員開發,程序出問題后,還有可能發生互相推卸責任的問題,前后端不分離,也就不存在高效、靈活的技術框架,所以一個優秀的基于Web技術框架的開發模式必須采用前后端分離開發模式。

基于前后端分離開發模式,可以得到上面的前后端分離總署結構。因為前端程序和后端程序是獨立的,所以可以將兩個程序分開部署運行,這樣部署有以下幾點優勢。

(1)前后端程序更新可互不影響。當某一端的程序需要更新時,只需要暫停要更新的目標程序,而不會影響到另一個程序運行。

(2)用戶體驗更友好。一般前端使用的是靜態頁,程序比較穩定,后端因為要承受大量請求處理及數據庫交互比較容易發生異常,前后端程序分離運行后,在后端發生異常錯誤時,用戶還能瀏覽網頁,不至于出現諸如404、505的錯誤頁面。

(3)并行開發,效率高。前端和后端程序分開運行,前后端開發互不影響,只要按照約定的接口就能做到自己調試程序,這樣就能實現并行開發。

(4)減輕后端服務的負載壓力。如果前后端不分離,服務器勢必要處理前端請求和后端請求,如果用戶請求量大的話,服務器容易過載,分離部署到不同服務器上,后端服務器負載壓力就可以大大減輕。

(5)可以更好地保護后端服務器。當后端服務器壓力超負荷時,會給數據庫造成影響,所以后端服務顯得尤為重要。前后端分開部署運行后,用戶訪問時首先請求的是前端服務,在前端用戶請求數超負載時,我們便可以在前端服務器做應急措施,不至于讓后端程序直接受到攻擊。

4 基于Java的Web軟件程序包模型結構

為了完善分層設計,在基于Java的Web軟件程序后端服務器中,其不同的業務模塊需要相互獨立,并通過maven將不同的業務模塊進行粘合打包,使程序的組織更加有序。

4.1 程序包模型結構及說明

程序包模型結構見圖2。

程序包模型結構說明:(1)后端框架使用spring boot技術,主服務僅有一個啟動服務的功能,對此我們稱之為殼;(2)通過maven將多個業務模塊jar包粘合到殼中再進行打包。

4.2 結構分析

場景:市場人員要求軟件按照客戶購買的功能提供對應的功能接口服務,并且軟件要部署到客戶的服務器上去。該軟件業務較為復雜,且業務模塊相對獨立,不互相影響。

如果按常規做法,把所有業務模塊放一起開發打包,雖然也可以使用一些方法來限制用戶只能使用購買的功能,例如通過攔截器做權限判斷,但是如果某些軟件業務包依賴包含有個別大文件的工具包時,而且用戶非未購買這些服務時,軟件包就顯得不這么精巧,也就是說里面存在了冗余包。上面的程序包模式結構就解決了這個問題,把業務模塊解耦,按業務功能劃分成獨立的業務包,主程序服務只提供啟動服務,當客戶需求定下后,只要把需要的包丟到殼里面去打包就可以有相應的功能服務[8]。這樣操作的優點有如下幾點。

(1)采用分包結構后,就能按客戶購買功能提供功能服務市場要求,不需要再寫程序代碼控制,從結構上就實現了這點需求,從實現方法來說是代價最小、最簡單的方法。

(2)擴展性強,高度解耦。業務包之間都是獨立的,不互相影響,要增減功能都非常好控制,配置靈活。

(3)打包精準,不存在冗余包。

(4)開發效率高。如果所有業務包都做成一體,開發時,Java項目啟動時會很慢,在調試某一個業務功能時,顯然降低了工作的效率。業務包解耦后,開發什么功能就依賴哪個業務包,程序啟動速度會快些,從而提升工作的效率。

(5)縮小測試范圍。很多程序員在項目修改某個業務功能時,如果只做針對該業務的測試,程序發布后,用戶在使用時可能會出現其他功能問題,跟蹤后就發現另一個包的程序改動了,但一起打包發布了。出現這種情況后,測試人員不得不每次都對整體進行全流程測試。采用分包模式后,在打包后把對應的業務模塊生成到外包lib目錄下,修改了哪個業務模塊就替換掉哪個業務模塊包,測試時也可以只針對該業務測試,這樣就不用每次都做全流程測試了。

5 基于Java的Web軟件程序服務層模塊結構

在基于Java的Web軟件程序中,其服務層也需要進行合理的分層設計,以使業務的開發、組織、調用更加有序。

5.1 服務層模塊結構及說明

服務層模塊結構見圖3。

服務層模塊結構說明:(1)對外接口調用對應的業務服務模塊的服務功能;(2)業務服務模塊書寫邏輯;(3)單表服務模塊僅操作做對應單表,供業務服務模塊按業務邏輯調用;(4)單表服務模塊都是基于MyBatis-Plus搭建的。

5.2 結構分析

該結構有兩個最大的特點,一是底層采用了MyBatis-Plus,二是對服務層的再分層。

(1)MyBatis-Plus(opens new window)(簡稱MP)是一個MyBatis(opens new window)的增強工具,在MyBatis的基礎上只做增強不做改變。MyBatis-Plus數據庫操作功能非常強大,只需要調用該工具的方法就能對數據表進行讀寫,開發速度可得到極大提升。

(2)對服務層的再分層。一般基于service層(服務層)為單層結構,設計成雙層原因就在于采用了MyBatis-Plus。MyBatis-Plus決定了服務層是單表服務模塊。MyBatis-Plus的數據庫操作接口函數都是針對單表的操作,即能發揮單表服務的優勢又能適用于復雜的業務,需把服務層進行再分層,按數據表建立相應的單表服務模塊,按業務劃分業務服務模塊,然后由業務模塊按照業務邏輯調用單表服務模塊,這樣模塊接口條理清晰,數據表操作服務簡單輕巧,抽象度高,可被不同的業務服務模塊復用。

6 結語

隨著軟硬件技術的發展,功能需求的不斷提高,傳統的單層框架程序開發模式已經不能再適應如今的需要。應當積極探索與合理應用好分層設計,用組織更加有序的框架,來進行程序的設計與開發,這樣才能提高程序設計與開發的質量,增強設計與開發的規范性,加快設計與開發速度,降低設計與開發成本。本文對基于Java的Web軟件程序框架分層設計進行了探討,分析了分層設計的實際應用及其與相關程序開發技術的融合,希望能進一步促進分層設計的推廣和應用。

猜你喜歡
程序開發服務器分層
高中分層走班教學模式探究
淺析大學生在兼職小程序開發中遇到的問題
有趣的分層現象
雨林的分層
2018年全球服務器市場將保持溫和增長
VBA在Excel中的應用一例
利用OpenGL技術實現網格波動效果界面
跨越式跳高遞進與分層設計
用獨立服務器的站長注意了
定位中高端 惠普8路服務器重裝上陣
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合