1

我查看了标题相似的问题,但没有成功。我可以从业务层创建服务引用以从另一个业务实体中提取数据吗?还是应该从服务层完成?

4

1 回答 1

4

这并不容易回答,因为它可能会演变成一场巨大的哲学讨论。但是,我认为您的业务逻辑层不应该回到您的服务层来获取其他业务实体。

这种场景的典型方法是在业务逻辑之上有一个外观层。当需要检索多个业务实体时,该层负责协调响应。所以:

服务 -> 业务外观 -> 业务逻辑 -> 数据

编辑:对于小型、简单的应用程序,这是矫枉过正的。去掉门面层,简单的让服务调用一个逻辑方法,或者让服务调用多个逻辑方法。

服务层实际上只是一个传递,您最好在其中尽可能少地使用逻辑。这样就可以替换服务层,或者在不需要进行服务调用时让受信任的应用程序/服务直接(在本地机器上)调用外观层。

这种方法还允许您在外观级别放置“信任线”,并在那里实现安全性。如果要进行安全检查,并可能在此“信任线”上进行其他操作,那么我们只希望对业务外观进行一次服务调用,因此我们不会为每个需要检索的实体重复此逻辑。

外观层只是调用逻辑层上的方法的一层方法。外观方法可以像在逻辑层调用一个方法一样简单,也可以像在逻辑层调用多个方法并编排适当域实体甚至 DTO 的连贯响应一样复杂。

我可以继续。确实有整本书专门讨论这个问题。希望这至少有助于进行广泛的概述。

于 2012-05-02T00:15:58.730 回答