我聽說層和層之間的差異描述的是,層可以在不同的機器上,而層可能不(我也聽說過反向使用的術語)。因此,n層意味着n層。例如,數據庫服務器代表一個獨立的層,但只有一個業務邏輯庫,不能在獨立於表示代碼的機器上運行,只是層的分離。如果業務邏輯是通過一個服務層來訪問的,該服務層可以被託管在與表示代碼不同的機器上,那麼它將如名稱所暗示的那樣代表一個單獨的層。
N層意味着將代碼分離成可能仍然需要在同一臺物理機器上運行的庫。 N層代表將代碼分離成可能在單獨機器上運行的服務,即使可以在同一臺機器上運行它們。
加成
表示層將包含與顯示信息給用戶的內容。例如,在MVC中,該層被細分爲從業務邏輯層(模型)檢索信息的控制器和顯示信息本身的視圖。數據訪問層將包含用於從數據層檢索信息的代碼。業務邏輯層將包含從數據層檢索信息的代碼,將該信息處理成對象模型,該對象模型對業務規則進行解釋並使其可以像表現層一樣提供給層級。
層級背後的推理是它們提供了與下面一級的分離程度。例如,假設數據層發生了變化,或者更具體地說,數據庫產品發生了變化。它只需要更新數據層而不是整個代碼庫。
使用我提供的定義,例如沒有調用服務的標準數據庫驅動的網站實際上只具有表示層和數據層(數據庫),即使它具有多個表示層,中間層和一個數據層。如果您有服務電話,取決於他們被稱爲的位置,他們將代表另一層。
我們在表示層,應用層,業務邏輯層,用戶界面邏輯,數據訪問層,數據訪問對象,什麼類型的編碼? – Starx 2010-05-29 06:24:33
@Starx:如果不能很好地理解你正在完成什麼以及在以後需要什麼樣的項目,那麼這個問題很難回答。此外,您使用的工具如ORM(如果有),數據庫服務器(關係數據庫,nosql數據庫,甚至品牌數據庫)等都會影響您放置的東西。 雖然簡短的回答是問自己「這段代碼做了什麼?」 UI特定的代碼(像大多數的JavaScript,HTML,CSS,WPF,閃存等)屬於表示層。數據驗證,關係執行等可能在業務邏輯層或其他地方。 – NotMe 2010-05-29 20:19:16