【问题标题】:POCO Best PracticePOCO 最佳实践
【发布时间】:2010-03-19 10:50:05
【问题描述】:

所有,我有一系列域对象(项目基于 NHibernate)。目前,根据“良好实践”,它们仅定义业务对象,包括特定于域内每个对象功能的属性和方法。但是,其中一个对象需要发送 SMTP 消息。我在单独的“实用程序”程序集中定义了一个简单的 SMTP 客户端类。为了在 POCO 中使用这个邮件客户端,我需要在域中保存对实用程序程序集的引用。我的问题是……为了获得必要的业务功能,在 POCO 中保存这样的引用是否背离了最佳实践。

亲切的问候

保罗·J.

【问题讨论】:

    标签: poco


    【解决方案1】:

    代码反对抽象并使用依赖注入以避免引用。

    public class PocoObject{
        public PocoObject(IMailSender mailSender){
          _mailSender=mailSender;          
        }
    
        public void DoStuff(){
          mailSender.Send(to,content,blabla);
        }
    }
    

    但是发送类型 a 的邮件不适合域。看起来更像是应用服务。

    【讨论】:

      【解决方案2】:

      是的。发送 SMTP 消息听起来更像是一种业务规则,而不是业务对象的职责。您的业​​务对象是一个 POCO,在大多数情况下,它只意味着数据而没有行为。正如 Arnis L. 所提到的,最好在您的系统中有一个服务来管理消息发送工作。

      【讨论】:

      • 这取决于我们试图遵循什么样的架构。领域驱动设计专门旨在将业务逻辑放入业务对象中。
      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 2010-09-05
      • 2014-12-21
      • 2010-12-23
      • 2010-10-14
      • 2023-03-19
      • 2011-11-08
      • 2010-11-03
      相关资源
      最近更新 更多