我查看了类似标题的问题但没有成功。我可以从业务层创建服务引用以从另一个业务实体提取数据吗?或者应该从服务层完成?
答案 0 :(得分:4)
这不容易回答,因为它可能会成为一场巨大的哲学讨论。但是,我认为您的业务逻辑层不应该返回到您的服务层以获取其他业务实体。
此方案的典型方法是在业务逻辑上方设置外观层。当需要检索多个业务实体时,该层负责协调响应。所以:
服务 - >商业门面 - >业务逻辑 - >数据
编辑:对于小巧简单的应用,这是一种过度杀伤力。删除外观层,只需让服务调用一个逻辑方法,或让服务调用多个逻辑方法。
服务层实际上只是一个传递,你最好尽可能少的逻辑。这使得可以替换服务层,或者在没有必要进行服务调用时让受信任的应用/服务直接(在本地机器上)调用外观层。
此方法还允许您在外观层面放置“信任线”,并在那里实施安全性。如果要进行安全检查,并且可能在此“信任线”处进行其他操作,那么我们只需要对业务外观进行一次服务调用,因此我们不会为每个需要检索的实体重复此逻辑。 / p>
Facade层只是一层调用逻辑层方法的方法。 facade方法可以像在逻辑层上调用一个方法一样简单,它们可以像在逻辑层上调用多个方法一样复杂,并编排适当的域实体甚至DTO的连贯响应。
我可以继续。确实有完整的书籍专门讨论这个问题。希望这至少有一个广泛的概述。