Architecture 表示、服务和DAO层关系

Architecture 表示、服务和DAO层关系,architecture,data-access-layer,relationship,business-logic-layer,presentation-layer,Architecture,Data Access Layer,Relationship,Business Logic Layer,Presentation Layer,关于这个问题,我想了很多,但找不到明确的答案: 正如我上次所理解的,业务层应该只与模型对象一起工作。它不应该知道我们是如何获取这些数据的。它允许我们独立于DAO使用业务层API 所以,在服务层内使用DAO方法调用是正常的,还是我们应该尝试减少它们之间的依赖关系。因此,我看到了层之间关系的两种变体: 控制器–>服务–>Dao 第一步:modelObject=Controller–>Dao 第2步:控制器–>服务(modelObject) 那么,哪种变体是正确的呢?在旧体系结构中,有两层客户端和服务

关于这个问题,我想了很多,但找不到明确的答案:

正如我上次所理解的,业务层应该只与模型对象一起工作。它不应该知道我们是如何获取这些数据的。它允许我们独立于DAO使用业务层API

所以,在服务层内使用DAO方法调用是正常的,还是我们应该尝试减少它们之间的依赖关系。因此,我看到了层之间关系的两种变体:

  • 控制器–>服务–>Dao
  • 第一步:modelObject=Controller–>Dao
    第2步:控制器–>服务(modelObject)

  • 那么,哪种变体是正确的呢?

    在旧体系结构中,有两层客户端和服务器。服务器保存所有数据库信息和逻辑。但是,三层架构在层与层之间带来了清晰的封装和抽象。在两层架构中,没有良好的封装和抽象以及可维护性,扩展能力是一个问题,因为层之间没有明确的封装和抽象。客户端层不直接调用服务。相反,它使用代理调用服务。对于客户端,它充当本地计算机程序来调用服务。因此,通过中间层服务器中的代理调用服务访问客户端。在中间层,您可以假设可以有控制器、服务、serviceImpl、,模型没有任何与数据库相关的内容。中间层有一个硬性规定。关键是它不应该与数据库内容混淆。第三层有数据库。假设dao是返回与数据库相关结果的容器。客户端应该通过服务传递呼叫,dao应该通过服务将结果传递给客户端。

    谢谢你的回答。我知道DAO层(DB staff)应该与其他系统层隔离。我的问题是什么样的应用层关系更合适。