大自然的搬運(yùn)工
0x01 前后端分離
????前后端分離的邊界判定很簡(jiǎn)單:如果前端和后端只通過(guò)簡(jiǎn)單的 API 文檔就能進(jìn)行數(shù)據(jù)交流,就說(shuō)明他們的邏輯是分離的星虹。本來(lái)前端只需要掌管視覺(jué)交互的部分。現(xiàn)在因?yàn)閏ontroller層也歸前端管了,前端必須對(duì)公司的業(yè)務(wù)流程有深入的了解,才能準(zhǔn)確的寫(xiě)出顯示邏輯掷酗。
ps:前后端分離有兩種不同的含義
? ? 1.定義為網(wǎng)頁(yè)的動(dòng)態(tài)內(nèi)容都通過(guò)ajax等異步的方式進(jìn)行
????2.前端完全負(fù)責(zé)view層和controller層。
如何正確理解前后端分離窟哺?簡(jiǎn)單說(shuō)下前后端分離的實(shí)現(xiàn):
1泻轰、前端部署:將前端的所有代碼使用javascript+node.js的方式部署在node.js服務(wù)器上,作為前端穩(wěn)定的服務(wù)且轨,提供頁(yè)面使用浮声。原本的js腳本由瀏覽器解釋器進(jìn)行解釋執(zhí)行,但是node.js是基于 google v8引擎開(kāi)發(fā)的組件殖告,使用事件驅(qū)動(dòng)阿蝶。
2、后端服務(wù)開(kāi)發(fā):使用微服務(wù)(比如springcloud黄绩,dubbo等)等實(shí)現(xiàn)業(yè)務(wù)的解耦合羡洁,所有的服務(wù)模塊使用某種協(xié)議提供不同的服務(wù)。
3爽丹、連接前后端:后端服務(wù)為前端提供一個(gè)統(tǒng)一的訪問(wèn)入口(一般是單獨(dú)部署一個(gè)服務(wù))筑煮,使用restful風(fēng)格提供http服務(wù)供前端調(diào)用,實(shí)現(xiàn)前后端數(shù)據(jù)傳輸粤蝎。
參考:https://blog.csdn.net/qq_19768163/article/details/93998521
0x02 三層架構(gòu)
三層架構(gòu)是指:視圖層 View真仲、服務(wù)層 Service,與持久層 Dao初澎。它們分別完成不同的功能秸应。
????View 層:用于接收用戶提交請(qǐng)求的代碼在這里編寫(xiě)虑凛。
????Service 層:系統(tǒng)的業(yè)務(wù)邏輯主要在這里完成。
????Dao 層:直接操作數(shù)據(jù)庫(kù)的代碼在這里編寫(xiě)软啼。
為了更好的降低各層間的耦合度桑谍,在三層架構(gòu)程序設(shè)計(jì)中,采用面向抽象編程祸挪。
????即上層對(duì)下層的調(diào)用锣披,是通過(guò)接口實(shí)現(xiàn)的。
????而下層對(duì)上層的真正服務(wù)提供者贿条,是下層接口的實(shí)現(xiàn)類雹仿。
????服務(wù)標(biāo)準(zhǔn)(接口)是相同的,服務(wù)提供者(實(shí)現(xiàn)類)可以更換整以。
這就實(shí)現(xiàn)了層間解耦合胧辽。
參考鏈接:http://www.reibang.com/p/731d027b2d91
0x03 mvc
Model(模型)承載數(shù)據(jù),并對(duì)用戶提交請(qǐng)求進(jìn)行計(jì)算公黑。分為兩類:
? ? ? ? ? ?數(shù)據(jù)承載Bean(實(shí)體類)
? ? ? ? ? ?業(yè)務(wù)處理Bean(Service或Dao對(duì)象)
View(視圖)接受用戶的請(qǐng)求票顾,可以是表單請(qǐng)求、超鏈接請(qǐng)求帆调、AJAX請(qǐng)求等。
Controller(控制器)調(diào)度(將用戶的請(qǐng)求轉(zhuǎn)發(fā)給Model進(jìn)行處理豆同,并根據(jù)其計(jì)算結(jié)構(gòu)向用戶提供相應(yīng))
0x04 三層架構(gòu)與MVC的關(guān)系
三層架構(gòu)中的View層是跟用戶發(fā)生直接關(guān)系的層番刊。
MVC中的V和C就是這樣的存在,所以MVC中的V和C均屬于三層架構(gòu)的View層影锈。
同時(shí)芹务,MVC中的M(Model)包括了數(shù)據(jù)承載Bean和業(yè)務(wù)處理Bean,其中業(yè)務(wù)處理Bean分為Service或Dao對(duì)象鸭廷,分別對(duì)應(yīng)業(yè)務(wù)邏輯處理和數(shù)據(jù)庫(kù)操作枣抱,相應(yīng)的,它們對(duì)應(yīng)的是三層架構(gòu)中的Service層和Dao層辆床。
所以佳晶,三層架構(gòu)與mvc還是有區(qū)別的。