【问题标题】:Which layers should speak Domain Models?哪些层应该使用领域模型?
【发布时间】:2009-02-27 19:24:10
【问题描述】:

假设我的业务层有这样的方法:

// This is in the business layer
public Result DeleteSomeDomainObject( ???? )
{
   //Enforce business logic here.

   //Delete records in the database
   DAL. DeleteSomeDomainObject( ??? )
}


// This is in the data access layer
public Result DeleteSomeDomainObject( ???? )
{
   // Delete records from the database.       
}

这些方法应该采用域模型的实例还是只采用主键?

【问题讨论】:

    标签: language-agnostic design-patterns


    【解决方案1】:

    我经常为此挣扎。我通常说你的业务/服务层应该将领域对象作为参数。

    如果我们谈论的是 Web,您的 Web 层将具有 ID。它可能会从服务层实例化或检索对象的实例。所以将它传递给你的服务层是有意义的。

    但是,有时您最终会复制对象的检索。有时,由于 Web 层未捕获一些附加数据,您的服务无论如何都会加载对象。我什至曾经有过数据访问层必须为依赖加载对象的情况。缓存可以解决其中一些问题,重新构建数据/模型可以解决其他问题。当然。但有时,考虑到性能或其他问题,传递 ID 更有意义。

    总而言之,更喜欢将域对象传递给业务层。但请注意,出于其他原因,您最好传递一个 ID,不幸的是,您的规则需要有例外。

    【讨论】:

      【解决方案2】:

      只要是合理的,就可以将政策与实施脱钩。我想说,如果您打算使用某种 ORM,请传递您的业务对象的实例。

      【讨论】:

        猜你喜欢
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        相关资源
        最近更新 更多