应用架构反馈

时间:2009-04-08 16:30:04

标签: asp.net architecture feedback

我正在寻找有关当前设计的一些反馈。

目前看来是这样的

  1. Web App(UI)引用BLL Layer和BusinessEntities Layer
  2. BusinessEntites Layer - 包含接口和类(对属性进行内部验证)
  3. BLL(引用BusinessEntities和DAL层) - 主要使用Create()Save()Delete()等方法为每个Business Objects管理。
  4. DAL(引用BusinessEntities图层) - 具有创建/添加/更新业务实体对象的DB命令。
  5. 我不太确定我用于图层的命名约定,所以如果有人有任何更好的建议,我会很乐意采用它们。

    此外,我不喜欢DAL引用BusinessEntities Layer的想法,但我还有什么方法可以返回对象而不是数据集/ DataTables?

    感谢您的反馈。

1 个答案:

答案 0 :(得分:1)

关于你需要从DAL引用业务层,我同意这可能不是最佳的 - 较低层不应该知道它们之上的层,它会降低可重用性并增加额外/潜在的循环依赖性。

您是否考虑让您的业务实体“填满”并使用DAL类进行自己的持久性操作,而不是DAL就像他们的工厂一样(如您当前的设计)?这样,您的DAL将更直接地表示数据库,并且业务实体将包含填充和持续适当所需的(业务)逻辑。

此外,您指定的“BLL”图层在我看来并不真正包含业务逻辑;它看起来更像是实体的持久性服务层。

所以你建议的变化可能是:

  1. Web / UI,引用业务实体
  2. BusinessEntities,包含具有业务逻辑的接口和类。引用DataServices层
  3. DataServices,包含加载,查找和保留数据的类。可以提供包含可由业务实体生成,使用和处理的数据(数据传输对象)的“通用”结构。参考文献DAL。
  4. DAL,它只提供映射到表的类。
  5. 根据您的要求,我会考虑将您的BusinessEntities和DataServices(原始设计中的BLL)合并为一个单独的层;我能想到将它们分开的唯一原因是,如果你正在做类似Silverlight的事情,你需要在客户端业务实体上进行异步数据操作。

    当然,所有这些都是对您特定系统要求的不完全了解 - 您需要设计最适合您特定应用的产品。祝你好运!