iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
1
Software Development

在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映系列 第 13

✾後花園D13✾-你的MVC是我的MVC嗎?

本系列文的環境狀態,可點擊此連結後花園環境參考

前輩們說有100種人就有100種MVC,不同背景對MVC的解讀也可能都不同。

琳琅滿目的MVC解釋,小的不是專家,所以僅從個人認爲的後端跟MVC的關係做解讀,至於他跟其他人的關係,大家可以自己再去研究。

而說起前後端MVC的差異,有人說前端開發的MVC架構核心是事件流;後端開發的MVC核心是數據流。也有比較直觀的說後端MVC的view是前端MVC的全部,還是菜逼巴的在下,只能就目前找到的資料消化過後跟大家做些分享。

此圖用淺顯的方式直接表達後端MVC的V跟前端的MVC關係

圖片來源:前端與後端MVC、MVVM等設計模式區別與聯絡

MVC模式(Model-View-Controller)是一種軟體架構模式,把軟體系統分為三個基本部分:

最早由Trygve Reenskaug在1978年提出,是全錄帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體架構,目的是實現一種動態的程式設計,使後續對程式的修改和擴充簡化,並且使程式某一部分的重複利用成為可能。

各層之間是平行的,是彼此獨立的組件,是相互協作的關係。


圖片來源:Model-View-Controller Explained in C++

  • 模型(Model):資料庫變更,數據處理(業務邏輯處理)單元。
    定義資料的結構與資料庫的連接,當 View 或 Controller 提出請求資料或變更狀態時更新資料庫,例如新增、更新、刪除菜單,並將最新的狀態回傳給View。

  • 視圖(View):網頁內容,結果展示單元,也是用戶看到的單元。
    呈現 Model 提供的資料,而使用者介面上的動作也會影響 Controller 的行為,能夠實現資料有目的的顯示(理論上,可以是非必需的),在 View 中一般沒有程式上的邏輯。

  • 控制器(Controller):商業邏輯,整體流程調度的單元。
    負責決定當前需要呈現的畫面以及根據使用者行為將 view 與 model 搭配連結,不同層面間的組織作用,控制應用程式的流程,處理事件並作出回應,「事件」包括用戶的行為和 Model 上的改變。

優點:

  • 多視圖對應一模型
  • 分層各司其職,降低各層間的耦合,提供應用擴展性
  • 程式結構可以更加直覺化

缺點:

  • 架構複雜,不太適宜小規模的開發
  • 增加系統結構和實現的複雜性
  • 架構需載入較多函式、定義去運行,易降低效能

想跟MVC更親密些,可參考下方連結:
❁ 前後端分離與 SPA
❁ PHP的MVC規範
❁ Model-View-Controller Explained in C++
❁ 維基百科 - MVC
❁ 淺談MVC共通架構 -- Laravel、Django、ASP.NET MVC
❁ 前端跟後端的MVC架構有什么不同?
❁ MVC是一個巨大誤會


上一篇
✾後花園D12✾-我只是想搞懂 -> 、 => 、 :: , 下集
下一篇
✾後花園D14✾-可以REST嗎?(來認識RESTful API吧!)
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言