2017-05-11 117 views
0

我已經開發了在C#中的ASP.NET Web窗體應用程序,其中包括:包含所有Web表單UI用的ASP.NET Web三層架構窗體

  1. 的.aspx和的.master頁面控制
  2. 用於處理大多數業務邏輯的
  3. .aspx.cs頁面。我也有一個Utility類,我定義了許多不同頁面使用的方法。
  4. 用於存儲數據的SQL Server數據庫。

當我將應用程序發佈到生產服務器時,.aspx.cs頁面被刪除,只剩下.aspx頁面。所有的邏輯被編譯到/ bin文件夾中的[ProjectName] .dll文件中。

這是否符合三層體系結構,還是僅僅是二層體系結構?

我應該採取哪些步驟將其轉換爲3層架構?如果我將.aspx.cs文件中的所有方法移動到Utility類,是否會實現業務邏輯與表示層的分離?

回答

1

該層應該由自己的責任進行分組。

aspx文件的項目和Utility只要Utility類包含有關WebForms問題,如解析查詢字符串,與會話工作代碼可以形成單層。背後的代碼(aspx.csaspx.designer.cs)編譯在一個單獨的dll中。這通常被命名爲PresentationApplication

有一個單一的dll沒有規則。

例如,你可能有兩個dll的數據庫層。這意味着您的解決方案中將包含兩個包含與數據庫通信相關的邏輯的項目。一個項目可能只使用ADO.Net,另一個項目可能使用EntityFramework來持久存取數據庫中的對象。您通常會將這些項目歸類爲DataAccessLayer

在此之前,您有兩層結構:Presentation圖層和DataAccess圖層。中間可以是Business層。這可以是另一個項目,其中包含編排來自Presentation的對象並將它們傳遞到DataAccess圖層的類。

這些項目的耦合是用於分類體系結構的另一個標準。在n層架構中,Presentation參考文獻BusinessBusiness參考文獻DataAccess。這也被命名爲lasagna體系結構,因爲底層的變化會導致上層變化。有一些體系結構,其中DataAccess引用Business來實現與持久性問題有關的業務所需的接口。

但是不要對這些問題虔誠,一切都取決於客戶的需求。通常一層結構就是所需要的。