2013-07-13 64 views
1

我將領導一個團隊很快創建一個複雜的製造Web應用程序(ASP.NET Web表單),並且之前我們的業務邏輯將處於同一個項目中,或者甚至更糟,在頁面後面的代碼中。ASP.NET Web窗體和問題分離

據我瞭解,關注點分離是很重要的,使測試更容易(測試一直是我們的一個問題),所以這就是我們要在前進的方向。

我有點困惑關於如何實現這一點 - 我們使用了很多RadGrid的等,我們綁定到SqlDataSources。這些事情會如何與另一個項目中的所有業務邏輯一起工作?

+2

SqlDataSources是業務邏輯隔離的主要敵人。難道你不能取代任何種類的基於對象的數據源嗎?業務邏輯層應該負責檢索這些對象。 –

+0

SqlDataSource非常糟糕.. –

回答

1

您可以使用ObjectDataSource而不是SqlDataSource來在其他項目(即另一個圖層)中使用類,但是您仍然要使用Web窗體進行艱苦的戰鬥。

如果關注點和可測試性的分離是重要的問題,我強烈建議使用ASP.NET MVC。

+0

我很喜歡使用MVC,但我們的應用程序可能非常複雜,我們喜歡使用Telerik AJAX庫和相對稀疏的MVC第三方控件庫,這是一個問題 – Chris

+2

@Chris Telerik for MVC太棒了(Kendo UI現在)。測試它。真的..你會欣賞它。 –

2

我的建議是:

  • 如果可以,忘了SqlDataSources。如果您使用的是SqlDataSources,您仍然可以實現一些業務規則隔離,但對於以數據爲中心的應用程序,大多數業務規則都與編輯和檢索數據有關。最好的數據源是簡單的IEnumerables。大多數網格控件都會支持它。您的業​​務規則應該檢索綁定到網格控件的簡單C#對象。 ObjectDataSource也是一個不錯的選擇。
  • 如果可以,請使用ASP.NET MVC而不是ASP.NET WebForms。在可測試性和關注點分離方面的優勢是巨大的。這就是爲什麼這項技術已經創建。當你開始一個新項目時,我會強烈推薦它。實際上,ASP.NET MVC全都是讓Controller層將對象傳遞給View,它可以顯示它們。
1

另一種選擇是,讓您的網絡表單,但使用MVP模式。我們發現它對於新手或初級開發人員來說進入門檻要低得多,因爲它只是簡單的c#(不需要學習Razor或MVC的慣例),我們發現90%的開發可以由開發人員完成絕對沒有關於Web開發的內容(我們基本上抽象了與Web相關的任何東西,比如用戶或Profile,以使業務代碼更加可重用)。

你將不得不廢除SqlDataSource,但我同意其他人的看法,那些人也是邪惡的。在我們的實現中,數據將從數據庫中檢索幷包裝在POCO DTO中,作爲IEnumerable傳遞給視圖,然後在頁面的代碼隱藏中綁定數據。

MVP在企業界的另一個好處是其對變革的適應能力。由於視圖儘可能愚蠢,因此切換它非常簡單。您可以使用相同的模型和演示文稿,並同時在Winforms,Silverlight,Webforms和控制檯應用程序中使用視圖。視圖的實現對演示者或模型沒有影響。

MVC是新的熱點,但對於大型企業級Web應用程序使用了MVC和MVP,其中可維護性和可靠性至關重要,我推薦MVP。