2010-05-29 90 views
1

N層體系結構只是代碼的物理分離還是還有更多的東西?N層體系結構只是代碼的物理分離還是還有更多的東西?

我們在表示層,應用層,業務邏輯層,用戶界面邏輯,數據訪問層,數據訪問對象,什麼類型的編碼?

上面提到的所有層都可以提供全功能的N層體系結構嗎?

一種情況:

每當用戶點擊一個按鈕,加載通過AJAX內容,它們我們就編碼來請求一個HTML輸出,然後更新元素,所以沒有這個JavaScript編碼也位於不同梯隊?因爲如果N層體系結構真的關於代碼的物理分離,那麼我認爲它更好地分離JavaScript編碼。

回答

4

層和層是完全不同的東西。

N層較少關於代碼分離,更多關於可伸縮性。這個想法是,你可以根據需要輕鬆擴展不同的「層」。大多數網站是2層:網絡服務器和數據庫服務器。有時候他們會選擇3,採用面向服務的體系結構。

圖層是關於代碼分離和可重用性的。 MVC是分層代碼的一個很好的例子。

除了所有這些之外,在您快樂地在代碼的不同部分之間設置障礙之前,您真的需要問自己兩個問題:您是什麼分離以及爲什麼關注它?如果你不能給這兩個人(特別是第二個)提供堅定的答案,那麼我會說停止你的行爲並退出鍵盤。而且,通過堅定的回答,我不是故意的,「因爲bob說這是它應該工作的方式。」

花時間真正瞭解正在發生的事情,代碼和理智如何通過設置這些障礙而受到影響。如果他們幫忙,好極了;如果他們不這樣做,那麼很好..

+0

我們在表示層,應用層,業務邏輯層,用戶界面邏輯,數據訪問層,數據訪問對象,什麼類型的編碼? – Starx 2010-05-29 06:24:33

+0

@Starx:如果不能很好地理解你正在完成什麼以及在以後需要什麼樣的項目,那麼這個問題很難回答。此外,您使用的工具如ORM(如果有),數據庫服務器(關係數據庫,nosql數據庫,甚至品牌數據庫)等都會影響您放置的東西。 雖然簡短的回答是問自己「這段代碼做了什麼?」 UI特定的代碼(像大多數的JavaScript,HTML,CSS,WPF,閃存等)屬於表示層。數據驗證,關係執行等可能在業務邏輯層或其他地方。 – NotMe 2010-05-29 20:19:16

1

我聽說層和層之間的差異描述的是,層可以在不同的機器上,而層可能不(我也聽說過反向使用的術語)。因此,n層意味着n層。例如,數據庫服務器代表一個獨立的層,但只有一個業務邏輯庫,不能在獨立於表示代碼的機器上運行,只是層的分離。如果業務邏輯是通過一個服務層來訪問的,該服務層可以被託管在與表示代碼不同的機器上,那麼它將如名稱所暗示的那樣代表一個單獨的層。

N層意味着將代碼分離成可能仍然需要在同一臺物理機器上運行的庫。 N層代表將代碼分離成可能在單獨機器上運行的服務,即使可以在同一臺機器上運行它們。

加成

表示層將包含與顯示信息給用戶的內容。例如,在MVC中,該層被細分爲從業務邏輯層(模型)檢索信息的控制器和顯示信息本身的視圖。數據訪問層將包含用於從數據層檢索信息的代碼。業務邏輯層將包含從數據層檢索信息的代碼,將該信息處理成對象模型,該對象模型對業務規則進行解釋並使其可以像表現層一樣提供給層級。

層級背後的推理是它們提供了與下面一級的分離程度。例如,假設數據層發生了變化,或者更具體地說,數據庫產品發生了變化。它只需要更新數據層而不是整個代碼庫。

使用我提供的定義,例如沒有調用服務的標準數據庫驅動的網站實際上只具有表示層和數據層(數據庫),即使它具有多個表示層,中間層和一個數據層。如果您有服務電話,取決於他們被稱爲的位置,他們將代表另一層。

+0

我們在表示層,應用層,業務邏輯層,用戶界面邏輯,數據訪問層,數據訪問對象,放置了什麼樣的編碼? – Starx 2010-05-29 06:24:56

+0

@ Starx-我修改了我的帖子來解決你的問題。儘管我沒有提到它,但是在許多情況下可以使用數據訪問對象。通常,它用作在中間層和數據層之間傳遞信息的手段。即,數據層從數據層中檢索數據並使用數據訪問對象傳遞到它上面的層。如果你的數據層返回DataTables,那麼DataTable就是你的數據訪問對象。 – Thomas 2010-05-29 15:57:15

相關問題