B端技術(shù)常識:MVC模式
文章介紹了程序設(shè)計中最重要的MVC三層分層模型,與大家分享。
編程語言種類繁多,無論采用哪種語言進(jìn)行程序設(shè)計,都要遵循經(jīng)典的軟件工程設(shè)計模式——MVC模式。
MVC是Modeling、View、Controller的縮寫,代表軟件設(shè)計的分層理念:Modeling指數(shù)據(jù)模型,View指前端交互視圖,Controller指業(yè)務(wù)邏輯,MVC模式下的軟件分層結(jié)構(gòu)如下圖所示。
任何一套軟件系統(tǒng)運作的本質(zhì)都是相同的:用戶在前端交互層操作后,系統(tǒng)通過業(yè)務(wù)邏輯層處理數(shù)據(jù)層的數(shù)據(jù)。不論是BS架構(gòu)的系統(tǒng)(例如通過瀏覽器訪問的管理后臺),還是CS架構(gòu)的系統(tǒng)(例如App應(yīng)用),都會遵循MVC模式搭建程序結(jié)構(gòu)。
將一套軟件系統(tǒng)分為數(shù)據(jù)、業(yè)務(wù)邏輯處理、前端交互三層來設(shè)計、開發(fā),可以非常有效地保證程序結(jié)構(gòu)合理、邏輯清晰。
MVC模式下的軟件分層結(jié)構(gòu)
我們來具體介紹一下MVC每一層的特點。
一、前端交互層
前端交互層負(fù)責(zé)繪制程序界面,完成前端程序和用戶的交互互動,并實現(xiàn)一些簡單的業(yè)務(wù)邏輯,例如數(shù)據(jù)校驗。常見的負(fù)責(zé)繪制界面的編程語言有JavaScript、HTML5(即H5,嚴(yán)格來講不能算編程語言,只是一種記號語言)、PHP等。
前端方向是升級迭代非??斓募夹g(shù)方向,例如針對移動端,有JavaScript、Flex等前端語言;針對PC端,前端語言也從曾經(jīng)的HTML + JS + CSS,到流行一時的富客戶端RIC(Rich Internet Client),再到ExtJS、Node.js等。前端工程師需要不斷地刷新自己的技能樹,來適應(yīng)快速變化的前端需求。
二、業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層負(fù)責(zé)處理業(yè)務(wù)邏輯,例如在分銷運營管理后臺的門店列表頁,點擊“關(guān)聯(lián)賬號”按鈕,前端交互層把指令發(fā)送給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層要判斷門店狀態(tài)是否能夠關(guān)聯(lián)賬號、是否有空閑賬號可以進(jìn)行關(guān)聯(lián)等。
開發(fā)人員應(yīng)該盡量將復(fù)雜的校驗、判斷、業(yè)務(wù)規(guī)則都封裝在業(yè)務(wù)邏輯層,這樣可以讓前端交互層的負(fù)擔(dān)更輕,更容易擴(kuò)展,因此業(yè)務(wù)邏輯層是MVC結(jié)構(gòu)中最復(fù)雜的部分。
例如,假設(shè)分銷運營管理后臺除了PC版本,還打算做一套H5移動版本,以方便審核人員操作。如果業(yè)務(wù)邏輯層代碼和接口設(shè)計良好,則只需要前端工程師實現(xiàn)H5代碼即可;但如果之前的前端交互層和業(yè)務(wù)邏輯層耦合緊密,那么實現(xiàn)H5版本就需要前后端工程師一起調(diào)整代碼,非常麻煩。
業(yè)務(wù)邏輯層常用的編程語言有Java、C++、C#、PHP等。
三、數(shù)據(jù)層
數(shù)據(jù)層代表底層的數(shù)據(jù)存儲。數(shù)據(jù)包括結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),既可以存儲在數(shù)據(jù)庫中,也可以存儲在文本文件中。數(shù)據(jù)存儲操作一般由程序來完成,例如通過程序?qū)﹃P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行增刪改查處理。
在早期的軟件開發(fā)工作中,工程師既要開發(fā)前端,也要開發(fā)后端,還要設(shè)計并管理數(shù)據(jù)庫,可以說是真正的全棧工程師。除此以外,工程師還要承擔(dān)產(chǎn)品經(jīng)理的工作,與業(yè)務(wù)方聊需求、掌控項目進(jìn)度……
現(xiàn)如今,互聯(lián)網(wǎng)公司對工作內(nèi)容的劃分非常細(xì)致,會將前后端的開發(fā)分離。下圖所示為前后端分離的MVC模式,不論是CS架構(gòu)還是BS架構(gòu),前端部分統(tǒng)稱為客戶端,業(yè)務(wù)邏輯層和數(shù)據(jù)層統(tǒng)稱為服務(wù)端。
前端工程師負(fù)責(zé)客戶端開發(fā),后端工程師負(fù)責(zé)服務(wù)端開發(fā),客戶端和服務(wù)端之間完全通過接口交互。這樣便實現(xiàn)了專業(yè)化分工,兩端的工程師都聚焦于自己的技術(shù)領(lǐng)域,讓工作更精細(xì)專業(yè)。
MVC模式下的前后端分離結(jié)構(gòu)
現(xiàn)在,你是否更加理解程序設(shè)計的分層模型,以及前后端分離的原因了呢?希望本文能夠幫到你。
插播一條廣告
大家好,我是《決勝B端》作者楊堃,曾在VIPKID任產(chǎn)品總監(jiān)一職。在工作中,遇見有很多優(yōu)秀的B端產(chǎn)品經(jīng)理,但缺少體系化、針對B端產(chǎn)品的實操訓(xùn)練,在成長中走了許多彎路。
我努力將自己多年做B端產(chǎn)品的經(jīng)驗提煉總結(jié)出來,和起點學(xué)院聯(lián)合打造了一門B端產(chǎn)品體系課——《To B產(chǎn)品實戰(zhàn)訓(xùn)練營》希望能給需要的同學(xué)一些實質(zhì)性的幫助。
幫助大家構(gòu)建B端產(chǎn)品知識體系脈絡(luò),掌握B端產(chǎn)品建設(shè),從業(yè)務(wù)診斷、需求分析,到抽象建模、設(shè)計落地的全過程的方法思路,最終直接應(yīng)用于工作實踐。
掃碼即可報名,還可為大家爭取到的專屬優(yōu)惠~
立即搶座,報名成功后即可領(lǐng)取詳細(xì)課程資料!
#專欄作家#
楊堃,公眾號:PM楊堃(ID:pmYangKun)。人人都是產(chǎn)品經(jīng)理專欄作家,《決勝B端》作者,11年互聯(lián)網(wǎng)研發(fā)、產(chǎn)品設(shè)計經(jīng)驗,曾就職于傳統(tǒng)外資保險公司、百度,現(xiàn)就職于VIPKID。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
業(yè)務(wù)層和交互層做到低耦合后續(xù)調(diào)整起來才方便
業(yè)務(wù)層和交互層做到低耦合后續(xù)調(diào)整起來才方便
作為技術(shù)人員,轉(zhuǎn)崗B端產(chǎn)品是不是比較有優(yōu)勢呢
前端部分統(tǒng)稱為客戶端,業(yè)務(wù)邏輯層和數(shù)據(jù)層統(tǒng)稱為服務(wù)端。
對架構(gòu)理解得很透徹
可以來個案例說明嗎
說了很多,唯獨少了總結(jié),讓人知其所以,不知其然
MVC可不止于B端
任何一套軟件系統(tǒng)運作的本質(zhì)都是相同的