gpt4 book ai didi

java - Web应用程序架构: RESTful and web should share the same DTOs?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:59 25 4
gpt4 key购买 nike

我是 Web 应用程序开发新手,目标是设计一个同时为浏览器和移动设备提供服务的应用程序,这些设备将使用 REST 服务与服务器进行通信。

为此,我考虑为网络和休息创建 2 个独立的层。我遵循 spring io 入门指南完整教程 ( http://spring.io/guides#gs ),该教程使用一种架构,该架构在其余层中保存域包,该架构构建将作为对其余请求的回复发送的对象。

在另一个 Web 教程中,他们在 Web 层下有一个类似的包,用于在显示域对象之前处理它们。

我阅读了这个问题,如果我遵循答案中的一般准则,我将实现单独的域包,因为即使 View 层使用 REST,仍然存在一些差异,如果我决定将来更改某些内容,这些差异可能会成为维护问题的根源:(Best Practice - Multi Layer Architecture and DTOs)

我的问题是关于一个同时具有这两种功能的应用程序,Web 层是否应该像其他层一样保留 DTO,或者让 View 调用其余服务或使用相同的 rest.domain.POJO(并将这些 POJO 从该包中提取到一个通用的 POJO)是否是一种好的做法?

谢谢。

最佳答案

考虑到问题标签,实现您想要的最简单的架构是一个同时提供 Web 内容和 REST 服务的简单 Spring MVC 项目。更复杂的架构可能需要某种“commons”项目,其中包含所有模型 (DTO)、服务、存储库、实用程序等——这将生成可供 Web 和 REST 项目使用的 JAR。

如果您不需要单独扩展 Web/REST,也不需要在不同的发布周期/版本控制中使用它们,则可能不需要将它们作为单独的可部署项。如果 Web/REST 组件实际上不需要单独存在,则不要对其进行过度设计。

我会严重倾向于 KISS从单个项目开始,同时做出设计决策,以便在需要时转向更复杂的架构。例如,利用包将 Web Controller 与 REST Controller 分开、分离“公共(public)”类、使用依赖项管理(例如 Maven)。

至于组织 DTO,它将在很大程度上取决于您的用例。尽可能使用通用模型,但不要害怕在需要时为 Web 或 REST 创建轻量级模型。

关于java - Web应用程序架构: RESTful and web should share the same DTOs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com