三層體系結構總結(四)

2021-08-29 18:44:23 字數 1396 閱讀 2304

前一段時間幫乙個專案組做他們的專案,有幸了解了一下他搭建的架構。相比起以前所見過的架構,我覺得這個應該算是不錯的。大體結構如下圖:

1、 層與層之間依賴於介面:

ui依賴於ibll,ibll依賴於idal,這樣做在設計模式中叫做依賴倒置。也就是說依賴於抽象,而不是具體實現。如果今後的業務邏輯有變動可以不變程式的主體框架,靈活性較好。

2、 使用castle對類進行管理:

由於層與層之間使用介面連線,但是畢竟要實現多型已實現實際的業務邏輯。使用castle對類的管理機制,以依賴注入的方式,將介面對應的子類關聯起來。這樣做可以把變化放到執行時,維護性較好。

3、 singleton模式的應用

關鍵的型別因為長期使用,而且其本身占用資源較高,使用singleton模式,用長期占用空間換取因例項化而造成的時間上的浪費。效能較好。

覺得還存在的問題:

對於複雜業務邏輯處理的還是不太理想:

對於乙個事物裡有多個操作的問題是這樣解決的,在idal中有乙個方法的入口點,ibll呼叫這個入口方法。在dal擴充套件這個方法時進行對多個方法業務上的拼裝。這樣感覺好像把業務層的任務放到了資料層解決。

不過對於這個問題,現在找到了一些解決方法,在vs2003中可以使用transactionattribute屬性將操作放到乙個事務中。在vs2005中有乙個transaction的類(聽說的),可以很好的解決這個問題。

下一片文章中打算研究一下這個問題,當然重心放在vs2005上,畢竟vs2003將是過去時,何況transactionattribute是com+中的東西,使用起來覺得不方便。

三層體系結構總結(五)

在這次專案開發中,我們對以前用的三層結構有進行了進一步的改變,除了使用castle的windsor容器來管理bll層和dal層,在資料的封裝和對資料的讀取上比以前更加物件導向。1 對於bll層和dal層的型別,分別繼承各自的ibll和idal,使用windsor容器以注入的方式對其進行例項化,這一點...

三層體系結構總結(二)

第二種我所見過的三層設計模式是 還是分為ui層 業務層 bll 資料訪問層 dal 但其中的資料的儲存和傳遞使用的是model類,model類中只有私有欄位和公有的屬性,並不存在對資料的操作,定義邏輯業務實體,但是實體的定義並不是以單錶定義的,而是以乙個業務邏輯來定義。我所遇到的問題是,隨著開發的深...

三層體系結構總結(五)

在這次專案開發中,我們對以前用的三層結構有進行了進一步的改變,除了使用castle的windsor容器來管理bll層和dal層,在資料的封裝和對資料的讀取上比以前更加物件導向。1 對於bll層和dal層的型別,分別繼承各自的ibll和idal,使用windsor容器以注入的方式對其進行例項化,這一點...