抽象三层应用程序的DataLayer(DAL)

时间:2010-09-18 17:48:22

标签: c# architecture factory-pattern 3-tier

继续上一个问题,(见https://stackoverflow.com/questions/3737848/creating-a-loosely-coupled-scalable-software-architecture

有人建议抽象DAL,就像我在三层项目中从表示层抽象BLL一样。有关如何做到这一点的任何建议?我还需要BLL和DAL之间的工厂吗?我需要你的输入员......谢谢。

1 个答案:

答案 0 :(得分:2)

有趣 - 在我为表示层执行此操作之前,我会在BL和DAL之间进行抽象。

您的其他问题中使用的方法似乎是合理的 - 为什么不重用它?

  • 是的,你需要一个工厂;但是你可以把它包含在一个公共的类/程序集中,让它只返回一个object,然后你可以在它返回时进行转换 - 即:在BL中被调用它的那一点。
  • (为了完整性:)使用Activator.CreateInstance()(正如您在其他问题中使用的那样)是正确的方法。
  • 对于DAL,我倾向于使用存储在配置中的值(作为传递到工厂的参数);经常更改DAL实现并不常见 - 所以配置对我来说效果很好。
  • 在设计BL和DAL之间的接触/抽象时观察Interface Segregation Principle(ISP) - 如果你做得对,你将能够同时混合和匹配不同的物理DAL实现。
  • 如果您将DTO和工厂保存在一个通用程序集(可能是同一个程序集)中,那么可以很容易地将它们与BL和各种DAL实现重复使用 - 与警告保持这一点普通阶级尽可能缺乏依赖性。如果这样做,您将能够添加/更新DAL实现,而无需重新编译和重新部署整个系统。
相关问题