从另一个服务调用服务 vs dao

Posted

技术标签:

【中文标题】从另一个服务调用服务 vs dao【英文标题】:call service vs dao from another service 【发布时间】:2015-11-10 01:03:34 【问题描述】:

我有用户和角色实体和服务,它们的 DAO 层。我需要来自 UserService 的角色列表。

我应该从 UserService 中使用哪个层? RoleService vs RoleDAO 的调用列表方法?哪一个是常用的,为什么?

【问题讨论】:

【参考方案1】:

调用RoleService中的list方法。

围绕角色的业务逻辑可能有一天会发生变化,RoleService 中的所有更改都将无法处理所有直接调用 DAO 的代码。

【讨论】:

是的,我一开始也是这么想的。但是Service称它为DAO,我认为仅从服务层调用DAO可能是个好主意(可能有一些原因),因为服务层用于调用dao。 服务调用服务完全没问题【参考方案2】:

通常 DAO 层靠近数据库,Service 层封装你的业务逻辑,执行任何事务或其他事情,而不仅仅是调用 DAO。

服务调用另一个服务更常见,因为

    您的 RoleService 可以评估一些业务代码,您可以从事务或通过 JMS 传递消息中受益,或者您可以在将来对服务方法进行一些安全保护。因此,分离关注点是一种很好的做法。

    易于模拟服务和测试(甚至可以测试DAO),但是使用服务层接口分离业务逻辑是一个好方法。

但是如果你在服务层没有任何业务逻辑,你可以通过简单地使用DAO来避免冗余代码(但将来如果你想到服务层业务,你将有代码债务重构)

【讨论】:

以上是关于从另一个服务调用服务 vs dao的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个服务方法调用 WCF 服务?

如何从另一个 rpc 服务调用 rpc 服务方法?

使用 Spring Boot 从另一个服务调用 Rest Service 以进行课程注册系统

DAO调用DAO,DAO调用服务还是SQL join?

从另一个 DAO 调用一个 DAO?

如何使用无服务器框架从另一个 lambda 异步调用 lambda