如果有分層這樣的商業應用的一條線,這會是勞動力的適當分工:如何拆分數據層和業務對象層,每個層的適當職責是什麼?
數據訪問
調用只有存儲過程,映射的DTO的屬性到用於填充ADO.NET命令的參數集合的散列表tablse。
僅參考SqlDataClient的程序集。
- 重要的邏輯處理什麼意味着空白,null和空的映射代碼,但其他方面沒有驗證或其他領域特定的邏輯。
所謂業務邏輯
拆分多個結果集成單獨的數據表,例如
公共無效ReturnNthRecordSetFromStoredProcFoo()
穿過用於數據集的數據訪問,例如
公共無效ReturnDataSet(字符串名稱){ 回報(新PersonController).GetAnotherDataSet(名);}
一個DataTable的一列映射到一個DTO小號
- 重大邏輯處理什麼樣的手段空白,空,並在映射代碼中爲空。
- 保留事務對象,儘管它專門用於包裝單個存儲過程調用。
- 不必SqlDataClient的引用,所以它不能使用SqlDataReaders填寫的DTO
- 沒有提到的System.Web.UI
- 授權規則,但在其他方面沒有域特定的邏輯。
UI
- 2路數據到ASP.NET形式的DTO的結合。
- 驗證控件屬性 - 通常不直接對DTO進行驗證
- 通過將DataSets綁定到網格來導航「集合」。事實上試圖與藏品做任何需要的UI遍歷數據行的數據表,瞭解相應的列名是什麼(這是一般只有一種 - 的 - 類似的DTO)
這樣的問題,最後 - 在此應用程序中,數據訪問層是否應將所謂業務層的職責合併?這不是已經是一個兩層,(差不多一個!)應用程序,除了一個額外的程序集的不便之處?
附加信息:好吧,我已經知道應用程序服務器將是一臺機器,可能永遠都是,因爲它是一個低用戶數的Intranet應用程序。所以我不知道要設計物理上獨立的應用程序層。另外,它可能只支持一個UI,並且如果它需要支持除ASP.NET以外的其他功能,則會被完全廢棄 - 另一個經常被引用的層/層的原因。
請參閱我的迴應: http://stackoverflow.com/questions/549305/how-to-handle-communication-between-the-domain-and-database-layers/1209765#1209765 別如果你喜歡我的想法,不要忘記註冊。 – 2009-07-31 11:46:17