2017-03-06 101 views
4

我對我正在使用的體系結構有疑問。將數據訪問層與服務層分開一層是好事情

我們有一個後端寧靜服務,一個數據層(由python eve和一個restful服務實現)和數據庫。數據(訪問)層本身是一個獨立的restful api。

在我們的後端服務應用程序中,我們有一個自定義的python eve庫,它調用數據(訪問)層,然後數據層將查詢來自數據庫調用的任何請求。

將它分開的原因之一是,我們希望從業務邏輯(後端服務)中隔離數據邏輯(查詢邏輯)。

成本是顯而易見的,另一層,每一個查詢的另一輪I/O。

任何具有建築經驗的人都可以告訴我這個單獨的數據訪問層是否是一種好的做法,爲什麼?

回答

5

看着你正在討論的架構,你的項目必須足夠大才能證明它的開發成本。對於小型項目來說,這種體系結構將會過度殺傷。

假設你的項目足夠大,是的;分離DAL,BLL和應用程序層總是很好。請參閱thisthis

好處是乾淨的分離提高了理解,因爲您可以控制每個零件並降低維護成本。

另一方面,如你所說,成本是顯而易見的(另一層,另一輪I/O)。是;這就是爲什麼我的第一段討論了項目的規模。在大型項目中,這是一個折衷;你選擇了其中一個。

在大型項目中,主要目標應該是IMO的可維護性。瞭解premature optimization is the root of all evil。所以,你從良好的可維護架構開始。每項技術都建議改進性能的基本規則;最初實施它們。如果您發現任何性能問題,請查找並修復它。事實上,由於分層,很容易找到瓶頸。

還有其他的好處。您可以單獨測試每個圖層。您可以獨立處理每個圖層,以提高性能,改變技術等。調試將非常簡單。