Microsoft的这个DAL/BLL design suggestion适用于ASP.NET(2.0)应用程序。我知道一些替代方案,我在这里已经阅读了相关问题。但是我想知道这个提议的解决方案现在是否值得实施,你知道它有一个特定的缺点吗?
我想开发DAL / BLL组件以供公司内部使用,从各种应用程序和脚本访问客户和员工数据等。然而,在我开始构建这些东西之前,我想确保这个解决方案是“好的”。例如,BLL传递数据表而不是封装任何东西,您没有包含逻辑的孤立业务对象。它基本上只是一个愚蠢的层,可以简化CRUD操作并允许控件的数据绑定。
在这个领域有经验的人能否指出我对这种方法的赞成和反对意见?
答案 0 :(得分:12)
我完全建议不要使用DATATABLES。查看一个域驱动的设计实现,您的整个框架将使用常规对象,您可以将其传递到List<>或可查询<>。 DataTables是垃圾,甚至不应该包含在.NET中。
我还建议使用依赖注入/控制反转框架(如Microsoft Unity或StructureMap)来创建松散耦合的代码。
答案 1 :(得分:9)
<强>优点:强>
- 简单的方法和一些数据映射是通过数据表完成的。
- 为触发选择,添加,更新和删除查询提供了一些便利。
- 可能适合非常简单的设计,只有很少的桌子。
- 适用于非自引用ER分频或ER,只需很少的查找表和简单/少数连接
- 适用于需要简单数据存储的地方。即。复杂的OO想法应该应用于“业务对象”,这种模式会使事情变得更加困难。
<强>缺点:强>
- 大型OO模型将在这种模式中挣扎
- 具有许多表格,复杂关系或OO对象要求的复杂ER设计将不适合这种模式。数据表不像LINQ那样为代码内对象查询提供很多帮助。
- 大多数查询需要在SQL中手写(这包括连接)。是的,你可以使用查询设计器,但这没有多大帮助。
- 这种方法有很多代码重复。就像在你的BLL课程中你会写很多CRUD方法一样(你也需要从头开始编写)。
<强>结论强> 这真的取决于你的要求。如果你的实现很小/很简单,那么这可能是一个好主意。但是这种方法很难在一个小想法上成长。更多的面向对象方法将为您以后的重构/扩展提供更好的帮助。 这种模式也陈旧/陈旧。对象查询IQueryable / LINQ更受欢迎,很快就会成为更广泛的标准。我建议你跳上这辆马车。从长远来看,这对你的个人发展会更好。 :d
某些链接: