服务层和表示层职责

问题描述 投票:0回答:1

我正在使用 Spring Boot 开发一个 Web API 应用程序,并且对在哪里处理事务和安全性感到困惑。 Martin Fowler 在《企业应用程序架构模式》中建议

“表示逻辑纯粹通过服务层与域交互,服务层充当应用程序的 API。除了提供清晰的 API 之外,服务层也是放置事务控制和安全等内容的好地方。 ”

我完全同意服务层应该是事务控制的地方,但我已经习惯并看到了在表示层(控制器)中配置的安全性,例如控制器上注释的基于角色的访问。

我应该如何处理安全性并遵循企业架构的最佳设计?

我尝试通过结合两者来配置安全控制,但这种方法会增加重复代码并使应用程序更加复杂。寻找不仅仅是 Spring Boot 开发的解决方案。

oop design-patterns spring-security architecture domain-driven-design
1个回答
0
投票

Martin 撰写这本书时,REST(表述性状态传输)和 SPA(单页应用程序)还不是很流行。我认为他正在研究服务器端渲染架构,例如 JSP/JSF,其中将完全生成的视图发送到客户端,而不是其状态。在这种架构中,控制器确实是表示层的一部分,因为它们负责显示数据和处理用户界面事件。因此,将安全功能放在服务层中更符合逻辑。然而,在 REST 架构中,控制器在形成用户界面方面的作用已显着下降。表示层几乎完全转移到客户端浏览器,控制器只负责处理 HTTP 请求。在 REST 架构中,控制器不再归属于表示层,它们创建了一个新层 - API,安全功能和谐地融入其中。

© www.soinside.com 2019 - 2024. All rights reserved.