冉得微 王蓉

摘 要 平時(shí)我們所說的三層架構(gòu)一般都是圍繞J2EE三層展開的,而B/S/S三層架構(gòu)則是將其抽象為部署架構(gòu),由瀏覽器、應(yīng)用服務(wù)器、存儲(chǔ)服務(wù)器為主體構(gòu)建管理信息系統(tǒng),且更適用在移動(dòng)分布式平臺(tái)上。為此,需搭建一個(gè)采用該架構(gòu)的移動(dòng)分布式平臺(tái)的管理系統(tǒng),作為該觀點(diǎn)的進(jìn)一步論證。本文首先對于B/S/S三層架構(gòu)進(jìn)行闡述,同時(shí)相較于J2EE三層做出對比,最后在應(yīng)用管理信息系統(tǒng)的方向進(jìn)行研究。希望通過本文能夠?qū)τ诂F(xiàn)當(dāng)代軟件體系結(jié)構(gòu)的發(fā)展提供參考與幫助。
關(guān)鍵詞 B/S/S;三層架構(gòu);移動(dòng)分布式;管理信息系統(tǒng)
引言
B/S/S三層架構(gòu)并非是從軟件開發(fā)層面上看,而是從系統(tǒng)部署的層面上來看,將系統(tǒng)分為三層,一個(gè)是基于客戶端的Browser,一個(gè)是基于提供系統(tǒng)應(yīng)用服務(wù)的應(yīng)用服務(wù)器Service,還有一個(gè)是提供數(shù)據(jù)文件或是其他多種交互的服務(wù)器Server,即Browser/Service/Server三層架構(gòu)。本文將從B/S/S三層系統(tǒng)的提出、實(shí)現(xiàn),移動(dòng)分布式平臺(tái)的提出、部署四個(gè)方面來闡述該三層架構(gòu)在移動(dòng)分布式開發(fā)中的應(yīng)用。
1 B/S/S三層架構(gòu)的提出
以往的Browser/Server三層架構(gòu)模式是以傳統(tǒng)的客戶端/服務(wù)器端的結(jié)構(gòu)發(fā)展而來的,它的三層架構(gòu)分層定義為表示層(UI),業(yè)務(wù)邏輯層(BLL),數(shù)據(jù)訪問層(DAL),可看做是J2EE的發(fā)展與邏輯實(shí)現(xiàn)。早期J2EE采用JSF作為表示層,并采用EJB和JPA技術(shù)作為業(yè)務(wù)邏輯和持久化訪問的三層架構(gòu),而在B/S/S三層架構(gòu)中,將表示層、服務(wù)層、業(yè)務(wù)邏輯層抽象至應(yīng)用服務(wù)器中,將持久層與數(shù)據(jù)存儲(chǔ)抽象至存儲(chǔ)服務(wù)器中,以實(shí)現(xiàn)由Browser作為用戶訪問端口,發(fā)送訪問請求,由Service響應(yīng)訪問,并提供相關(guān)應(yīng)用程序服務(wù),若涉及存儲(chǔ)或其他多種交互,則由Server提供存儲(chǔ)數(shù)據(jù)及多種交互服務(wù)。
而三層架構(gòu)式設(shè)計(jì)可以達(dá)到以下目的:分散關(guān)注、松散耦合、邏輯復(fù)用、標(biāo)準(zhǔn)定義。從開發(fā)和應(yīng)用的角度來說,三層系統(tǒng)部署的設(shè)計(jì)要比邏輯分層有更多的應(yīng)用,且三層系統(tǒng)部署架構(gòu)還可支持遠(yuǎn)程服務(wù)訪問、分布式存儲(chǔ)交互、移動(dòng)計(jì)算等功能,但也會(huì)有降低系統(tǒng)性能、增加代碼量等弊端[1]。
2 B/S/S三層架構(gòu)的實(shí)現(xiàn)
在B/S/S模式下,WEB層的任務(wù)更加清晰明了,它們負(fù)責(zé)向服務(wù)器提出請求以及接收應(yīng)用服務(wù)器發(fā)來的相應(yīng)信息,也可通過應(yīng)用服務(wù)器的授權(quán)后直接訪問數(shù)據(jù)庫服務(wù)器,獲取其表單信息以及相關(guān)文件存儲(chǔ)信息等。在應(yīng)用服務(wù)器層,我們可以采用J2EE中的ORM集成框架技術(shù),且JPA已經(jīng)作為一項(xiàng)對象持久化的標(biāo)準(zhǔn),不但可以獲得JavaEE應(yīng)用服務(wù)器的支持,還可以直接在JavaSE中使用。因此,可以將以往的業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層,與服務(wù)層合并,統(tǒng)一為應(yīng)用服務(wù)器層,并支持對多數(shù)據(jù)庫服務(wù)器的負(fù)載均衡,實(shí)現(xiàn)業(yè)務(wù)邏輯與數(shù)據(jù)的分離。在數(shù)據(jù)庫服務(wù)器中,除了和應(yīng)用服務(wù)器的數(shù)據(jù)交互響應(yīng),還可根據(jù)應(yīng)用服務(wù)器的授權(quán)直接與WEB層交互數(shù)據(jù),為了保證數(shù)據(jù)庫服務(wù)器的安全性,該響應(yīng)方式具有時(shí)效性與權(quán)限獨(dú)立性[2]。
一般情況下,在采用三層架構(gòu)的軟件設(shè)計(jì)中,一般是數(shù)據(jù)流量不高或業(yè)務(wù)邏輯較為簡單,因?yàn)橄噍^于其他模式的軟件架構(gòu)中,該設(shè)計(jì)實(shí)現(xiàn)分層分職責(zé),將邏輯上的三層對應(yīng)各工作層。如表示層用于獲取用戶輸入數(shù)據(jù)和將業(yè)務(wù)邏輯層數(shù)據(jù)顯示給用戶,而業(yè)務(wù)邏輯層只需處理業(yè)務(wù)流數(shù)據(jù),不需設(shè)計(jì)界面顯示相關(guān)的代碼,第三層數(shù)據(jù)訪問層則是與數(shù)據(jù)庫進(jìn)行交互,負(fù)責(zé)存儲(chǔ)和讀取數(shù)據(jù)。這樣分層的設(shè)計(jì)可以將界面,業(yè)務(wù)邏輯與數(shù)據(jù)存儲(chǔ)分離開,從而使系統(tǒng)的后期維護(hù),功能擴(kuò)展更加便捷,且系統(tǒng)自身的問題不會(huì)影響到數(shù)據(jù)的存儲(chǔ),還可實(shí)現(xiàn)用戶數(shù)據(jù)的安全隔離等[3]。
3 移動(dòng)分布式平臺(tái)的提出
當(dāng)提出移動(dòng)分布式這個(gè)想法的時(shí)候,正趕上微型移動(dòng)設(shè)備的蓬勃發(fā)展,有著移動(dòng)計(jì)算、分布式服務(wù)等技術(shù)作為前驅(qū),在移動(dòng)式平臺(tái)上搭建分布式系統(tǒng),成為移動(dòng)分布式的核心。由于以往微型移動(dòng)設(shè)備有著傳輸帶寬低、效率低、功耗高、成本高等諸多不便,因此查閱文檔幾乎沒有移動(dòng)分布式的相關(guān)資料,對此將采用原型法,先建立一個(gè)基于移動(dòng)分布式平臺(tái)的管理信息系統(tǒng),并將其應(yīng)用在線上教育領(lǐng)域,以主服務(wù)器作為分布式的拓?fù)渲袠?,多臺(tái)節(jié)點(diǎn)設(shè)備為移動(dòng)分布式平臺(tái)進(jìn)行部署,并對其軟硬件層面進(jìn)行測試、補(bǔ)充和修改,同時(shí)收集調(diào)查研究數(shù)據(jù),針對移動(dòng)分布式建立可行的數(shù)據(jù)模型,直至其分布式平臺(tái)上所部署的管理信息系統(tǒng)完全成熟以至于可商業(yè)化。
因此,先選用一個(gè)更加適合在分布式平臺(tái)上軟件架構(gòu)作為研制信息系統(tǒng)的基礎(chǔ)條件,即選用分層模式的軟件體系結(jié)構(gòu),其主要分為4層,即表示層(UI層),應(yīng)用程序?qū)樱ǚ?wù)層),業(yè)務(wù)邏輯層(域?qū)樱?,?shù)據(jù)訪問層(持久層)。當(dāng)用戶在瀏覽器端訪問服務(wù)請求的時(shí)候,可以先直接訪問節(jié)點(diǎn)設(shè)備,也可通過節(jié)點(diǎn)設(shè)備反向代理訪問主服務(wù)器,還可通過公網(wǎng)直接訪問主服務(wù)器。當(dāng)服務(wù)器處理用戶的訪問請求并響應(yīng)相關(guān)邏輯時(shí),可由移動(dòng)分布式系統(tǒng)處理,或由主服務(wù)器反饋,這將取決于用戶與相關(guān)設(shè)備的網(wǎng)絡(luò)通信代價(jià),若該用戶擁有一臺(tái)自己的節(jié)點(diǎn)設(shè)備,則可以由該節(jié)點(diǎn)設(shè)備代理所有服務(wù),并只與主服務(wù)器交互系統(tǒng)更新以及文件共享等信息。
4 移動(dòng)分布式設(shè)備的系統(tǒng)部署
在基于B/S/S三層架構(gòu)模式的實(shí)現(xiàn)思想下,我將該信息系統(tǒng)分為主服務(wù)器機(jī)組的主系統(tǒng)與節(jié)點(diǎn)設(shè)備的移動(dòng)分布式系統(tǒng)兩個(gè)部分,由主服務(wù)器機(jī)組負(fù)責(zé)節(jié)點(diǎn)設(shè)備的數(shù)據(jù)通信與文件共享等功能,節(jié)點(diǎn)設(shè)備配合主服務(wù)器機(jī)組實(shí)現(xiàn)內(nèi)網(wǎng)穿透、端口映射、NAS等功能。即主服務(wù)器可直接處理業(yè)務(wù)邏輯與相關(guān)應(yīng)用服務(wù),也可交互管理節(jié)點(diǎn)設(shè)備,還可以進(jìn)行數(shù)據(jù)傳輸與端口映射,實(shí)現(xiàn)移動(dòng)分布式設(shè)備的移動(dòng)計(jì)算與移動(dòng)分布式存儲(chǔ),而移動(dòng)計(jì)算環(huán)境促進(jìn)了無線技術(shù)與分布式數(shù)據(jù)相融合,形成了移動(dòng)分布式數(shù)據(jù)系統(tǒng)。
若想要將移動(dòng)分布式系統(tǒng)安裝在其設(shè)備上,要先將其軟件運(yùn)行環(huán)境部署在其硬件上,以最基礎(chǔ)的LNMJ為例,需安裝Linux系統(tǒng)(如centos),然后在系統(tǒng)環(huán)境上安裝Nginx,MySQL,openjdk等商用免費(fèi)的軟件,作為運(yùn)行系統(tǒng)的基礎(chǔ)環(huán)境條件,或可使用Apache服務(wù)器將移動(dòng)分布式系統(tǒng)作為主系統(tǒng)提供服務(wù),僅需將更新的操作數(shù)據(jù)與文件數(shù)據(jù)進(jìn)行上傳,減少了Nginx的反向代理造成的主服務(wù)器線路擁塞[4]。
且使用了Apache服務(wù)器的LAMJ環(huán)境還能再與主服務(wù)器網(wǎng)絡(luò)不暢甚至中斷的情況下提供持續(xù)性的服務(wù),將大大提高系統(tǒng)的可用性。在可預(yù)見的未來,該機(jī)制可應(yīng)用于無信號(hào)隧道導(dǎo)航、高人口密集信號(hào)接收區(qū)、0延遲切換服務(wù)器等領(lǐng)域,作為移動(dòng)分布式設(shè)備的另一種部署的形式。因此,移動(dòng)分布式平臺(tái)在采用B/S/S的系統(tǒng)部署架構(gòu)的模式下雖然有著極為廣闊的應(yīng)用場景,但在原型法搭建的移動(dòng)分布式系統(tǒng)中也存在著不少的問題,所以該模式的發(fā)展還需要更多的研究。
參考文獻(xiàn)
[1] 王進(jìn).B/S模式下的三層架構(gòu)模式[J].軟件導(dǎo)刊,2011,10(3):30-31.
[2] 張碩.淺談三層結(jié)構(gòu)軟件項(xiàng)目管理工具的設(shè)計(jì)與實(shí)現(xiàn)[J].科技致富向?qū)В?015,(10):362.
[3] 冉得微.應(yīng)用于企業(yè)級(jí)管理系統(tǒng)的B/S/S三層架構(gòu)[J].數(shù)碼設(shè)計(jì),2019,(11):53-53.
[4] 張康.基于Nginx的在線教育平臺(tái)架構(gòu)優(yōu)化研究[D].北京:北京工業(yè)大學(xué),2016.