首頁  >  文章  >  後端開發  >  理解ASP.NET中多層架構

理解ASP.NET中多層架構

巴扎黑
巴扎黑原創
2017-08-03 13:13:372822瀏覽

Asp.net的多層架構主要是為了解決資料層,邏輯層,表示層等之間的關係。我的做法是這樣的:先建立一個DataCore的基底類別。基類裡面封裝了一些低層的資料庫的基本操作,比如說資料庫聯接,呼叫預存程序等等。

很多人對開發多層應用程式感到一定的困難。來看一個例子:對於一個只有一、兩個人的小公司,一個人可能同時擔任老闆、出納、會計、市場、銷售、開發等多項工作。而對於一個大公司,就會進行比較嚴密的分工,每個人只完成一部分工作,需要彼此配合才能確保正常運作。以前的開發程式就類似一個小公司,從使用者介面到資料庫存取等所有功能都在一個頁面內完成,這樣的缺點有:

    1. 開發得比較困難,很難實現多人協作開發

    2. 一旦資料庫或規則有變,就可能要重新修改整個頁面,增加維護成本

    3. 因為所有功能都混在一起,程式重複使用性差。如果開發一個新項目,幾乎要重寫程式碼

        為了解決這個問題,人們就提出了「多層應用程式」概念,其本質類似於職權明確的大公司,對頁面進行分工,將資料存取、業務規則等功能都放在專門的文件中。比較流行的有二層架構、三層架構和MVC。

1. 二層架構

         二層架構,是將程式分為使用者介面層與資料存取層。其本質是將存取資料庫的程式碼放入資料存取層中,而使用者介面層則透過資料存取層對資料庫進行操作。 交互作用關係如下:("<--->"表示雙向箭頭)

使用者介面<---> 資料存取<---> 資料庫

二. 三層架構

        三層架構,即將二層架構中的業務邏輯從資料存取層中分離出來,成為一個單獨的業務邏輯層。將程式分為三層後,資料存取層只管對資料庫進行操作,而業務邏輯層負負責對資料進行各種處理。
從頂層主要包含了4個元件:DAL(資料處理層)、BLL(業務邏輯層)、UI(使用者介面層)、Model(實體模型)。其中前三者就是人們常說的三層結構。
    1)資料存取層(database access layer,DAL):有時候也稱為是持久層,其功能主要是負責資料庫的存取。簡單的說法就是實作對資料表的Select,Insert,Update, Delete的操作。如果要加入ORM的元素,那麼就會包含物件與資料表之間的mapping,以及物件實體的持久化;
    2) 業務邏輯層(business logic layer, BLL):是整個系統的核心,它與這個系統的業務(領域)有關;
    3)表示層(user interface layer, UIA):是系統的UI部分,負責使用者與整個系統的互動。在這一層中,理想的狀態是不應包括系統的業務邏輯。表示層中的邏輯程式碼,僅與介面元素有關;
   4)實體模型層(Model):包含了所有的資料訊息,這些資料資訊以各種Entity實例的形式存在。是整個系統基礎層次;

        完善的三層結構應該是:修改表示層而不用修改邏輯層,修改邏輯層二不用修改資料存取層。達到一定程度上的解耦。

        三層架構主要讓專案架構更清楚,分工更明確,有利於後期的維護與升級。它解決了整個應用程式中各個業務操作過程中不同階段的程式碼封裝的問題,使程式設計師更專注的處理某階段的業務邏輯。然而未必會提升效能,因為當子程式模組未執行結束時,主程式模組只能處於等待狀態。這說明將應用程式劃分層次,會帶來其執行速度上的一些損失。但從團隊開發效率角度來講卻可以感受到大不相同的效果。

        需要注意的是,雖然三層架構有很多的好處,但如果你的程式很簡單,或者將來肯定不會重複使用,或不一定要採用兩層架構,也許採用兩層或普通的程式開發速度會更快。要依實際情況具體處理。

三. MVC

#

        M 即Model(模型層),主要負責出來業務邏輯以及資料庫的互動;
        V 即View(檢視層),主要用於顯示資料與提交資料;即#Control   ),主要是用作捕獲請求並控制請求轉發;

        MVC是在應用程式(BS結構)的視圖層中劃分出來的不同功能的幾個模組,主要是為了解決應用程式使用者介面的樣式替換問題,把展示資料的HTML 頁面盡可能的和業務代碼分開。

四.三層結構與MVC的差別

#的話,看圖就能明白:

圖2. MVC 與三層架構的區別

         三層架構是介面層(UI)業務邏輯層(BLL)和資料存取層(DAL)構成的,而MVC是模型層(M)界面層(View)和控制層(Controller)構成的,而且他們之間也不對應。

        如果硬要給他們對應的話,那麼三層架構中的UI對應MVC中的view都是用來顯示以及取得介面的資料;三層架構中的BLL層與DAL層對應MVC中的Model層都是用來處理上層傳遞來的資料以及從資料庫取得的資料的;MVC中的Controller最多算是三層架構中的UI的一部分。

五.三層架構引用關係

Model層:不引用任何項目;

DAL層:引用Model,透過讀取 web. config裡的組件,載入類別的實例,回傳給BLL使用;
BLL 層:引用Model,DAL;
UI層:引用Model,BLL;

       方法是在資源管理器中右鍵點選項目文件,新增引用。在彈出的對話方塊中選取項目標籤,選擇適當的類別庫後點選確定。然後再在專案檔中加入using 「引用類別的命名空間」。

        項目已經新增了引用,但仍然找不到指定類別庫文件,可檢查:

            1. 引用的項目中是否有語法錯誤,是否在頭標檔中新增using “命名文件” ;
            2. 新增的類別庫時,且此類庫是否為public。

以上是理解ASP.NET中多層架構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn