我將領導一個團隊很快創建一個複雜的製造Web應用程序(ASP.NET Web表單),並且之前我們的業務邏輯將處於同一個項目中,或者甚至更糟,在頁面後面的代碼中。ASP.NET Web窗體和問題分離
據我瞭解,關注點分離是很重要的,使測試更容易(測試一直是我們的一個問題),所以這就是我們要在前進的方向。
我有點困惑關於如何實現這一點 - 我們使用了很多RadGrid的等,我們綁定到SqlDataSources。這些事情會如何與另一個項目中的所有業務邏輯一起工作?
我將領導一個團隊很快創建一個複雜的製造Web應用程序(ASP.NET Web表單),並且之前我們的業務邏輯將處於同一個項目中,或者甚至更糟,在頁面後面的代碼中。ASP.NET Web窗體和問題分離
據我瞭解,關注點分離是很重要的,使測試更容易(測試一直是我們的一個問題),所以這就是我們要在前進的方向。
我有點困惑關於如何實現這一點 - 我們使用了很多RadGrid的等,我們綁定到SqlDataSources。這些事情會如何與另一個項目中的所有業務邏輯一起工作?
您可以使用ObjectDataSource而不是SqlDataSource來在其他項目(即另一個圖層)中使用類,但是您仍然要使用Web窗體進行艱苦的戰鬥。
如果關注點和可測試性的分離是重要的問題,我強烈建議使用ASP.NET MVC。
我很喜歡使用MVC,但我們的應用程序可能非常複雜,我們喜歡使用Telerik AJAX庫和相對稀疏的MVC第三方控件庫,這是一個問題 – Chris
@Chris Telerik for MVC太棒了(Kendo UI現在)。測試它。真的..你會欣賞它。 –
我的建議是:
另一種選擇是,讓您的網絡表單,但使用MVP模式。我們發現它對於新手或初級開發人員來說進入門檻要低得多,因爲它只是簡單的c#(不需要學習Razor或MVC的慣例),我們發現90%的開發可以由開發人員完成絕對沒有關於Web開發的內容(我們基本上抽象了與Web相關的任何東西,比如用戶或Profile,以使業務代碼更加可重用)。
你將不得不廢除SqlDataSource
,但我同意其他人的看法,那些人也是邪惡的。在我們的實現中,數據將從數據庫中檢索幷包裝在POCO DTO中,作爲IEnumerable傳遞給視圖,然後在頁面的代碼隱藏中綁定數據。
MVP在企業界的另一個好處是其對變革的適應能力。由於視圖儘可能愚蠢,因此切換它非常簡單。您可以使用相同的模型和演示文稿,並同時在Winforms,Silverlight,Webforms和控制檯應用程序中使用視圖。視圖的實現對演示者或模型沒有影響。
MVC是新的熱點,但對於大型企業級Web應用程序使用了MVC和MVP,其中可維護性和可靠性至關重要,我推薦MVP。
SqlDataSources是業務邏輯隔離的主要敵人。難道你不能取代任何種類的基於對象的數據源嗎?業務邏輯層應該負責檢索這些對象。 –
SqlDataSource非常糟糕.. –