Web 金字塔式開發框架分層模型概述

2021-09-11 09:44:55 字數 1196 閱讀 9673

現在的大部分 web 框架都是使用金字塔式的分層架構,一般這種應用都是阻塞同步 io 模型的程式設計實現,理解這種分層架構模型的實質有助於理解框架。

因為萬變不離其宗,理解這種架構後你不管這種模型如何變化實際上都是在遵守一些約定和規則,那麼理解這個模型,只要這個框架是這種架構那麼你都會掌握的很快。

首先我們從最簡單的 mvc 三層架構說起。

file

實際上,一般框架分層就是這種分層的,這種分層模型使用時通過乙個入口檔案啟動框架服務,註冊一些框架依賴,然後通過路由分發將請求分發到各個控制器裡去,一般邏輯寫在控制器層,模型層做資料處理,檢視層負責展現。

隨著專案變大,協作人數變多,這種分層會不太能適應需求,那麼我們可以通過增加分層來解決問題。

file

我們在模型層和控制器層中增加服務層,通過依賴注入的方式將控制反轉,能解決擴充套件和重用的問題,但隨著專案繼續擴大,我們又要增加一層。

file

我們再分一層,將資料修改獲取邏輯放到儲藏庫層,模型只負責模型定義,這樣多個程式設計師就可以工作在不同的層上。

理論上我們可以無限分層,不斷的拆分將業務分層拆的更細。但是有的場景中我們需要做一些操作其實不能很好的分層,因為有的業務可能用到,有的業務可能不會用到,同時由於分層我們製造了許多元件和分層之間的依賴,在這樣的系統中物件導向設計和編碼變的重要。

此時引進了乙個新的概念 aop ,既面向切面程式設計

file

上圖的藍色就是切面,面向切面程式設計,這種程式設計方法就是在需要的地方實現乙個切面,把一些需要做但不是每個業務都要做的東西放到這裡去做,如中介軟體、過濾器、***、事件通知、觀察者都算是這種切面的實現之一。

金字塔分層模型是阻塞 io 程式設計的常用處理方式。

分層會帶來業務低耦合及增強程式復用性,但同時也會帶來業務邏輯**變得複雜。

物件導向程式設計時為了解決大型專案的複雜性問題而產生的程式設計方法,有些人說這個不重要或者沒有用很有可能是做的專案還不夠大還不夠複雜,或者是根本不涉及到協作開發的原因,亦或者是真的是要使用底層語言做高效能的開發,而語言本身不支援。

金字塔式架構開發,業務平行展開難度較大,這種架構在人員分組上 5-7 人一般會達到極限,此時即使增加人手也不會增加開發速度和效率。解決這個問題的就是微服務或者是扁平化的基於訊息傳遞的面向訊息程式設計。

世界上不止阻塞 io 程式設計,還有多執行緒、協程,也有非阻塞 io 非同步程式語言,它們使用的程式設計模型和金字塔分層模型是有區別的,但在理解和使用上難度更高些。

python 金字塔 Python金字塔

托倫,函式中有幾個小錯誤和乙個邏輯問題print y to a 請注意,此函式生成乙個以z開頭的字串,但您希望將字串以相反的方向連線,而您的另乙個函式print a to y 確實停止了 1位置 例如 還要注意,您需要新增新行字元 n 以獲得一些不錯的輸出。在 我的解決方案是 def print a...

字母金字塔(類同數字金字塔)

問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 aaba abcba abcdba abcdecba 演算法分析 每行包括三個部分內容 若干個空格 正序排列的字母 倒序排列的字幕。使用乙個外部迴圈來處理行,在每乙個行中使用三個內部迴圈 乙個處理空格,乙個以公升序列...

數字金字塔

觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 多組輸入資料 第乙個行包含 r...