2010-09-18 44 views
0

至于延续我刚才的问题,(见https://stackoverflow.com/questions/3737848/creating-a-loosely-coupled-scalable-software-architecture抽象三层应用程序的数据层(DAL)

有人建议也摘要DAL像我抽象从表现层的BLL我的三层项目如何做到这一点的任何建议?我还需要BLL和DAL之间的工厂吗?我需要你的输入人员..谢谢

+2

我不明白为什么有人投票要关闭它,这似乎是一个非常好的问题。他正在寻求抽象数据访问的最佳实践和方法。这听起来像我们想培养的东西。也许重新提出这个问题? – David 2010-09-18 18:02:12

+0

@David:他之前的问题非常详细,有相当多的背景。这种延续缺乏。如果他用这个编辑他以前的问题,OP将得到更好的答案,IMO。 – 2010-09-18 18:15:19

回答

2

有趣 - 我会在BL和DAL之间抽象'd为表示层做这件事

在你的其他问题中使用的方法似乎是合理的 - 你为什么不重用这个?

  • 是的,你需要一个工厂;但是你可以将它包含在一个普通的类/程序集中,并且它只返回一个object,然后你可以在它返回时进行投射 - 即:在BL被调用的地方。
  • (完整性:)使用Activator.CreateInstance()(正如您在其他问题中所使用的)是正确的选择。
  • 对于DAL,我倾向于使用存储在配置中的值(作为传入工厂的参数);经常更改DAL实现并不常见 - 所以配置对我来说很合适。
  • 当设计BL和DAL之间的对比/抽象时,请注意Interface Segregation Principle(ISP) - 如果您做得对,您可以一次混合并匹配不同的物理DAL实现。
  • 如果您将DTO和工厂保留在一个通用的组件中(可能是同一个组件),那么可以很容易地将它们与BL和各种DAL实现一起使用 - 以及注意事项,您将该公共类保留为依赖可能。如果你这样做,你可以添加/添加DAL实现,而无需重新编译和重新部署整个系统。