2010-06-09 132 views
0

我是一名asp.net開發人員,對模式和架構不太瞭解。如果您可以請在這裏指導我,我將非常感激。什麼模式是asp.net中的分層體系結構?

在我的web應用程序中,我使用4層。

  1. 網站項目(具有網絡形式的背後CS文件+代碼,後面的CS文件中的用戶控件+代碼,母版頁後面CS文件+代碼)

  2. CustomTypesLayer類庫(具有自定義類型,枚舉,DTO的,構造,獲取,設置和驗證)

  3. BusinessLogicLayer類庫(其所有的業務邏輯,規則和所有調用DAL功能)

  4. DataAccessLay呃類庫(只有類與數據庫通信)。

- 我的用戶界面只是調用BusinessLogicLayer。 BusinessLogicLayer會自行處理數據,併爲數據調用DataAccessLayer函數。

-Web表單不直接調用DAL。

-CustomTypesLayer由所有圖層共享。

請指導我這是一種模式嗎?我雖然可能是MVC或MVP,但頁面中有代碼隱藏在文件中,這些都讓我感到困惑。

如果它沒有模式是靠近某種模式?

+1

您的CustomTypesLayer聽起來像您的域名。這通常會根據您的設計跨越所有圖層,通常不會自行考慮圖層。 – JamesC 2010-06-09 07:41:49

回答

2

這不是四層,這是三層,所以它是一個普通的三層架構。

CustomTypesLayer根本不是圖層。如果是這樣,用戶界面將僅使用自定義類型層,並且不會直接與業務層交談,並且數據訪問層不會使用自定義類型層。

的三層架構是一個Multitier architecture

1

看看實體框架或LinqToSQL。他們都可以從數據庫自動生成數據訪問層。這將爲您節省很多(無聊)工作,並讓您專注於有趣的層面。

代碼隱藏與架構沒有任何關係 - 它更像是一種編碼風格。這是一種將邏輯與表示分離的方式。您提到的任何架構都可以使用或不使用代碼隱藏。

您似乎在描述標準的三層體系結構。 MVC是一種描述你的圖層和用戶如何交互的模式。用戶請求一個頁面(由一個視圖表示),該頁面從控制器請求其數據。控制器與您的業務層(模型)進行通信,以提取正確的數據並將其傳遞給您的視圖進行顯示。如果視圖是交互式的,例如它允許用戶更新某些內容,那麼這個用戶操作行爲將被傳回給您的控制器,控制器會針對業務層調用相關方法以將更新保存到數據庫中。

希望這會有所幫助。

+0

感謝Mikey的這麼好的回覆,但請讓我在這裏有兩個連接問題,我希望你能指導。 1.實體框架和LinqToSQL哪一個更好,甚至Linq是LinqToSQL最好用? 2.通過使用Entity Framework或Linq進行分層是什麼? 謝謝 – haansi 2010-06-11 09:38:21

+1

看看這個問題的意見,來自比我更懂行的人的意見... http://stackoverflow.com/questions/8676/entity-framework-vs-linq-to-sql 總之, LinqToSQL是一種快速(也許是骯髒)的方法,而EF則是一個龐大的,包含所有的ORM,它將實體引入爲一個新的抽象層。這是非常強大的,但也可以是一個威脅。無論你選擇哪一種,你仍然可以在查詢中使用LINQ語句。 有人說LinqToSQL已經死了,未來在於EF。看起來,EF可以完成LinqToSQL可以完成的所有工作,等等。 – 2010-06-11 12:25:31

2

至於模式走,我建議得到認真處理這些:

  • 我biggets一英里最喜歡的是Dependency Inversion Principle(DIP),通常也被稱爲(或至少非常相似)Inversion of control (IoC)和依賴注射劑;他們很受歡迎,所以你應該沒有問題找到更多的信息 - 例子。抽象出接口後面的數據訪問實現真的很好。
  • Lazy Load也是有用的。有趣的是,有時你實際上可能想要做相反的事情 - 在一個巨大的爆炸中獲得所需的所有數據。
  • Factory pattern是一個非常知名的 - 有很好的理由。
  • Facade pattern也幫助我擺脫困境。

如果您還沒有看過,維基百科有一個相當不錯的Software design patterns列表。

最後要注意的是,有三種基本類型的模式(加上第四類多線程/併發);它可以幫助剛剛知道這些類別,並承擔他們記住,當你做這種事情,他們是:

  • 創力
  • 結構
  • 行爲
2
+0

您好CodeToGlory, 我讀過這篇文章,很高興謝謝分享。但是,蘇格蘭人沒有評論服務器端數據驗證應放在代碼後面的.cs文件中,在商業實體還是業務邏輯層中?你可以請指導。其次,他在圖中顯示了安全,運營管理和溝通層,他沒有在文章中提到這些。 請在此指導。 – haansi 2010-06-11 09:34:49