我正在查看POCO 和 DTO 之间的区别(看起来 POCO 是具有行为(方法?)的 dto),并遇到了 Martin Fowler 关于贫血域模型的这篇文章。
由于缺乏理解,我想我已经创建了这些贫血的领域模型之一。
在我的一个应用程序中,我在“dto”dll 中定义了我的业务域实体。它们有很多与 getter 和 setter 相关的属性,其他的不多。我的业务逻辑代码(填充、计算)在另一个“bll”dll 中,而我的数据访问代码在一个“dal”dll 中。“最佳实践”我想。
所以通常我会像这样创建一个 dto:
dto.BusinessObject bo = new dto.BusinessObject(...)
并将其传递给 bll 层,如下所示:
bll.BusinessObject.Populate(bo);
反过来,它执行一些逻辑并将其传递给 dal 层,如下所示:
dal.BusinessObject.Populate(bo);
据我了解,要使我的 dto 成为 POCO,我需要使业务逻辑和行为(方法)成为对象的一部分。因此,而不是上面的代码,它更像是:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
IE。我在对象上调用方法,而不是将对象传递给方法。
我的问题是 - 我怎样才能做到这一点,并且仍然保留关注点的“最佳实践”分层(单独的 dll 等......)。在对象上调用方法不就意味着必须在对象中定义方法吗?
请帮助我的困惑。