周紹景 應杰 潘宏斌 黃建 楊正元
摘要:隨著軟件產業的快速發展,為研究應用的開發模式從前后端耦合演變為前后端分離的過程,通過分析前后端耦合開發模式到RESTful架構開發模式的優劣性,發現使用RESTful架構的應用具有開發周期短、層次分明和邏輯清晰等優勢。
關鍵詞:前后端耦合;前后端分離;RESTful架構
中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2018)05-0059-02
隨著軟件規模的不斷擴大,團隊并行開發成為必然。前后端耦合開發模式無法最大限度的協調各團隊開發,使得開發的項目耦合性高,結構不清晰。為了能很好的解決這一問題,傳統開發模式演變成如今的前后端分離開發模式,相比傳統開發模式新的開發模式擁有開發周期短、應用層次分明、耦合度低等特點。文章敘述了傳統開發模式到新開發模式轉變的過程,對傳統模式和新模式之間的優劣性進行了分析。
1 前后端代碼集成到分離的衍化
前后端耦合的開發模式將業務處理代碼集成在用戶視圖中,為開發帶來便捷的同時還有致命的缺陷:后端開發只能在前端開發完成后才能進行,造成了開發效率的低下;開發的項目層次不清晰,不利于項目的擴展與維護[1]。
MVC是一種被Web應用廣泛使用的設計模式,它將應用分離成Model層,View層和Controller層[2]。View層存放與用戶交互的視圖;Model層細分為Dao層和Service層,分別用于與數據庫交互和業務邏輯處理;Controller層粘合Model層和View層。當瀏覽器向服務器發起請求時,Controller接收到請求調用合適的Model進行處理,將所得的模型返回到相應的View中。MVC架構對請求的處理流程如圖1所示。
MVC架構很好的解決了傳統開發模式所帶來的問題。在MVC架構中進行項目開發,對象間直接的橫貫關系將不會帶來依賴關系的組合爆炸,使各層功能明確、職責分明,項目的更新、維護和擴展更加的方便。但MVC架構還是存在如下缺點:(1)無法讓各團體并行開發。(2)前端依賴于相應的后端模型[3]。(3)Controller層處理所有請求,服務器負載過大。
2 RESTful架構基本思想
RESTful架構是對MVC架構改進后所形成的一種架構,通過使用事先定義好的接口與不同的服務聯系起來。在RESTful架構中,瀏覽器使用POST,DELETE,PUT和GET四種請求方式分別對指定的URL資源進行增刪改查操作。因此,RESTful是通過URI實現對資源的管理及訪問,具有擴展性強、結構清晰的特點。
RESTful架構將服務器分成前端服務器和后端服務器兩部分,前端服務器為用戶提供無模型的視圖;后端服務器為前端服務器提供接口。瀏覽器向前端服務器請求視圖,通過視圖中包含的AJAX函數發起接口請求獲取模型。MVC架構對請求的處理流程如圖2所示。
項目開發引入RESTful架構,利于團隊并行開發。在RESTful架構中,將多數HTTP請求轉移到前端服務器上,降低服務器的負荷,使視圖獲取后端模型失敗也能呈現。
3 RESTful架構項目的搭建及分析
3.1 項目搭建
使用Maven搭建SSM框架。在java包中新建user包用于存放controller、dao、entity和service層的代碼。數據庫中新建user表,用于存放user賬號信息,分別包括id(主鍵)、用戶名、用戶密碼。
在Controller層中創建deleteUser的方法,在方法上添加@ResponseBody用于將返回的對象進行序列化,添加@RequestMapping用于表明其所接收的請求方法和URI,在方法中調用賬號刪除的service對象進行業務處理。
在View層中創建一個帶有賬號、密碼參數的表單,設置其請求方式為POST。由于前端界面只支持POST和GET兩種請求方式,所以需要使用隱藏字段將PUT和DELETE的值傳遞給Controller進行相對應的操作,在標簽中設置type為hidden,name為_method,value為delete表明使用DELETE的請求方式。
Controller識別GET和POST請求方式需要在web.xml中配置filter對請求方式進行攔截,filter標簽調用名為HiddenHttpMethodFilter的類。該應用通過在前端視圖的表單中輸入需要刪除的賬號名稱,然后單擊刪除按鈕,進行賬號刪除操作,如果刪除成功,那么將返回{“message”:”刪除成功”,”stateCode”:200}。
3.2 應用分析
通過案例看出RESTful架構是基于HTTP訪問協議對接口進行了抽象化,在數據交互使用輕量級的JSON格式,因此其擁有易訪問,可擴展性強等特點[4]。但RESTful架構卻不適用于所有的項目,當項目比較小時無需使用RESTful架構,項目變得更加復雜。
4 結語
文中對前后端耦合到前后端分離的開發模式進行了詳細的闡述。MVC架構通過將Web應用進行分層實現了項目的低耦合性,提升了項目的可擴展性;RESTful架構基于MVC架構利用URI進行資源管理和訪問,采用RESTful架構開發的項目層次分明、結構清晰,開發團體之間能夠并行的開發降低開發周期。如今RESTful架構是應用最廣的架構模式。
參考文獻
[1]劉亮,霍劍青,郭玉剛,袁泉,王曉蒲.基于MVC的通用型模式的設計與實現[J].中國科學技術大學學報,2010,40(06):635-639.
[2] 張曉麗,路楊.基于MVC模式的Web OA系統的設計與實現[J].計算機技術與發展,2012,22(08):63-66.
[3]zhijinzhong.前后端分離springmvc和RESTful理解[EB/OL]. https://blog.csdn.net/zhijinzhong/article/details/54644872,2017-01-21.
[4] 孫祖漢,李瑩,羅智凌,柳生鵬,高洪皓.可視化REST服務組合框架的設計與實現[J].小型微型計算機系統,2017,38(01):10-14.