2012-01-10 19 views
-1

我正在將我的一頁轉換爲3層。3層簡單的定義和優點是什麼?

我相信優點是它更有組織。

因爲我現在有3層,我感到困惑,因爲我發現我沒有清楚地瞭解3層是什麼。

這是我所知道的或者想我知道

數據訪問層=獲取所有的連接/值

業務接入層=運行從DAL這些連接和價值觀。不確定,但在這裏進行錯誤檢查?

表示層=這是我更加困惑的地方......這部分叫BAL?爲什麼有3層,如果這是真的?

+3

不知道你在讀什麼,但這似乎夠清楚,http://en.wikipedia.org/wiki/Multitier_architecture閱讀,然後改變你的問題......如果你還有一個問題。 – Hogan 2012-01-10 00:35:24

回答

7

表示層與用戶交互,獲取他們的請求並向他們顯示信息。我們以銀行應用程序爲例。用戶想要登錄他們的賬戶,獲得他們的餘額,並轉移一些發現。

表示層:爲用戶提供登錄提示,獲取用戶的登錄信息,告訴他們他們已成功登錄,向他們顯示他們的餘額,爲他們提供轉移資金的選項,獲取轉移細節,告知用戶轉移被批准。

業務訪問層:驗證用戶的登錄信息。計算要顯示給用戶的餘額。決定允許轉讓並批准轉讓。

數據訪問層:存儲用戶的登錄信息。存儲賬戶餘額信息,持有基金等。

基本上:

數據訪問層存儲信息。業務訪問層決定檢索什麼信息,基於它做出決定,傳遞結果。表示層從用戶獲取信息並向用戶提供信息。

+0

BAL存儲結果?我認爲這是DAL的工作? – healxph0enix 2012-01-10 00:47:22

+0

它命令存儲結果。它實際上並沒有在整個行動中持有它們。我會澄清。 – 2012-01-10 00:58:52

1

本文在這裏似乎一個很好的總結:http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture

它的主要一點,我要強調的是,你可以運行在不同的環境中的每個層。你可以用asp.net運行你的web服務器上的表現層。您可以在另一臺服務器(應用程序服務器)上運行業務訪問層,也可以使用Windows服務或WCF服務等。最後一層可以位於數據庫服務器上或附近。

能夠將您的圖層劃分爲不同物理位置的優勢意味着您可以提高可伸縮性。一個例子可能是您的網絡服務器正在努力爭取很多請求。您決定使用兩個稱爲您的業務訪問層的網絡服務器。

另一個優點是可維護性。如果您的所有數據訪問代碼彼此相鄰,則更容易調試數據訪問層問題。你有一個項目可能會減少三分之一的代碼,以便找到你要找的東西更容易。

另一個優點是可交換性。說你不想再使用asp.net了。您可以交換一個php web層,並且可以更輕鬆地與您的.NET業務邏輯進行通信。

基本上我提到的優點是相當多的模塊化/粒度優勢。

1

首先,「層」不是「層」的同義詞。

一層是一個邏輯分離。

層是潛在的物理分離,通常在機器或過程級別。

(參見:http://pranshujain.wordpress.com/2006/09/15/layers-and-tiers/

=======

這且不說那些三層的原因是爲了給你換出來的意願的能力。例如,您可能有多個表示層(Web,Mobile,Desktop App)。此處的目的是將演示文稿與其他所有內容分開,以便您可以更改業務邏輯,而無需重做所有不同的演示代碼。

業務對象層用於封裝和執行所有常規邏輯。例如,你可能會說生日必須在今天的日期之前。許多開發人員喜歡將其與存儲和演示分開。

數據訪問層負責將業務對象中的數據編組到您的實際存儲機制中。有了這樣的想法,你可以決定存儲在SQL Server或Oracle或平面文件的東西,其餘的應用程序不應該關心這種或那種方式。

============

所有這些圖層是否必需?不,但是對於大量的應用程序,當它們需要改變時,它們會提供幫助。


現在,關於層級。桌面或瀏覽器可以被認爲是一個層級。 Javascript代碼和HTML會在這裏執行。如果你有桌面應用程序,這就是它的存在。

另一層將是您的Web服務器或Web服務界面。這是負責提供渲染和使用客戶端的HTML。它通常包含演示文稿渲染和業務對象層。

另一層是您的實際存儲機制。例如SQL Server或Oracle。

完全可能的是,您可能有5或6種不同的層級,具體取決於您的架構是多麼先進(或馬虎)。但是數字通常是2並且不超過3.

這也完全有可能只有一層或一打。但是,這裏的數字通常是2到3.再次,取決於您的架構。

相關問題