1

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

这是它目前的样子

  1. Web App (UI) 参考 BLL 层和 BusinessEntities 层
  2. BusinessEntites 层 - 包含接口和类(对属性进行内部验证)
  3. BLL(引用 BusinessEntities 和 DAL 层)- 主要为每个业务对象提供管理器,使用 Create() Save() Delete() 等方法。
  4. DAL(参考业务实体层)- 具有创建/添加/更新业务实体对象的数据库命令。

我不太确定我用于图层的命名约定,所以如果有人有更好的建议,我会很乐意采用它们。

我也不喜欢 DAL 引用 BusinessEntities 层的想法,但我还能如何返回对象而不是 Datasets/DataTables?

感谢您的任何反馈。

4

1 回答 1

1

关于您需要从 DAL 引用业务层,我同意这可能不是最优的——较低的层不应该知道它们上面的那些,它降低了可重用性并增加了额外的/潜在的循环依赖。

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

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

因此,您建议的变体可能是:

  1. Web/UI,引用业务实体
  2. BusinessEntities,包含具有业务逻辑的接口和类。参考数据服务层
  3. DataServices,包含加载、查找和持久化数据的类。可以提供包含可由业务实体生成、使用和处理的数据(数据传输对象)的“通用”结构。参考 DAL。
  4. DAL,它只是提供映射到表的类。

根据您的要求,我会考虑将您的 BusinessEntities 和 DataServices(原始设计中的 BLL)合并到一个层中;我能想到将它们分开的唯一原因是,如果您正在做类似 Silverlight 的事情,您需要在客户端业务实体上进行异步数据操作。

当然,所有这些都与您对特定系统要求的不完全了解有关——您需要设计最适合您的特定应用程序的东西。祝你好运!

于 2009-04-08T17:21:30.843 回答