如果有分层这样的商业应用的一条线,这会是劳动力的适当分工:如何拆分数据层和业务对象层,每个层的适当职责是什么?
数据访问
调用只有存储过程,映射的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