业务层与服务层的服务引用

Posted

技术标签:

【中文标题】业务层与服务层的服务引用【英文标题】:Service References from Business Layer vs Service Layer 【发布时间】:2012-05-11 10:23:00 【问题描述】:

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

【问题讨论】:

谢谢鲍勃!!刚刚为以前的问题做了... 【参考方案1】:

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

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

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

编辑:对于小型、简单的应用程序,这太过分了。去掉Facade层,简单让服务调用一个逻辑方法,或者让服务调用多个逻辑方法。

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

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

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

我可以继续。事实上,有整本书专门讨论这个问题。希望这至少有助于大致了解一下。

【讨论】:

所以鲍勃你说不!从业务层到服务参考?在这种情况下,您是否建议为 Business Facade 使用单独的 VS 项目? (与服务层分开)。 正确。希望您的业务层在安全的机器上运行,并且客户端代码不会直接调用它们。客户端代码会调用服务层,服务层会调用业务门面,等等……一个单独的项目通常是要走的路,但这取决于这一切有多大。对于大型应用,可以,使用单独的项目。

以上是关于业务层与服务层的服务引用的主要内容,如果未能解决你的问题,请参考以下文章

Jalo 层与服务层

Spring数据访问和数据访问层与业务或服务层之间的交互

Spring数据访问和数据访问层与业务或服务层之间的交互

Spring数据访问和数据访问层与业务或服务层之间的交互

AutoMapper 使用总结1

用于业务逻辑或数据访问层的 Web 服务