1. 程式人生 > >C#中的三層架構+工廠模式BLL、DAL、IDAL、MODEL、DBUtility、DALFactory層級

C#中的三層架構+工廠模式BLL、DAL、IDAL、MODEL、DBUtility、DALFactory層級

三層架構,我們一般說的三層架構通常指的是
1、表現層(UI):就是展現給使用者的介面,無論是網站前臺還是應用程式介面;
2、業務邏輯層(BLL):針對具體問題的邏輯操作;
3、資料訪問層(DAL):對資料進行操作。其他的層級基本都是在這三層之上的補充。
UI(User Interface)表示層:
就是我們看到的網站前臺、應用程式介面。
BLL(Business Logic Layer)業務邏輯層:
主要是針對資料業務邏輯的處理。它的關注點主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計。它處於資料訪問層與表示層中間,起到了資料交換中承上啟下的作用。對於表示層而言它是被呼叫者,對於資料訪問層而言它則是呼叫者。如果說資料層是積木,那邏輯層就是對這些積木的搭建層。
DAL(Data Access Layer)資料訪問層:


主要是對資料的操作而不是資料庫,具體為上層業務邏輯層提供資料服務。簡單地說就是寫資料連線和執行的SQL語句來實現對實體也就是資料表的增、刪、改、查的操作。進一步的話可以加入ORM的元素,那麼就會包括物件和資料之間的表mapping,以及物件屍體的持久化。
DAL中常用的技術有ADO.NET + SQL語句、O/R Mapping框架 NHiberate、訪問不同資料來源時LINQ TO (SQL、Oracle、XML)。
IDAL(Interface Data Access Layer)DAL的介面層:
是DAL的介面層它體現了“抽象”的精神,或者說是“面向介面程式設計”的最佳體現。在工廠設計模式中需要支援多資料來源時面向介面程式設計的思想就有所體現。然後“IUserDAL iUserDal = new UserDAL();”。邏輯上我們可以這麼理解,那就是以為存在這樣的關係:BLL->IDAL->DAL,認為IDAL起到了BLL和DAL之間的橋樑作用,BLL是通過IDAL作為接收器來接收不同的DAL的物件。實際上你如此編碼:“IUserDAL iUserDal = ClassFacotry.CreateUserDAL();”,那麼在執行“iUserDal.SelectUsers()”時,其實還是執行的UserDAL例項,而不是IUserDAL例項,所以IDAL在三層中的位置是與DAL平級的關係。但是面向介面的思想就在此體現了。
MODEL這是實體/資料模型層:

一般來講Model層裡面的一個類對應資料庫裡面的一張表,類裡面的每一個屬性對應表裡面的每一個欄位,每個屬性都有自己的 GET 和 SET 方法, 專案中的資料存取都要依靠GET和SET方法來實現。它其實就是面向物件程式設計中最基本的東西:類。確切的說它不屬於縱向的哪一層,而是所有層都要用到的業務實體層。這樣,Model在三層架構中的位置,和int,string等變數的地位就一樣了,沒有其它的目的,僅用於資料的儲存而已,只不過它儲存的是複雜的資料。當你取資料時,如果使用DataSet,就沒有體現”面向物件”。相反,如果把DataSet裡的行,變成Model層裡的類物件。把DataSet變成List<>這樣的集合,更面向物件,也更符合多層架構的設計思想。(是物件的集合,不是資料行的集合)。或者使用泛型集合來代替DATASET。 IList