DTO - 多服务和冗余DTO

3
我们使用Spring Boot开发应用程序时遵循微服务架构。为了解释问题,我们考虑三个不同的服务A、B、C。Service C的某些API也被Service A和B消费。
我有一个用于Project C(Service C)API的DTO。我的问题是 - 对于Projects A和B,我是否应该创建冗余的DTO类来消费Service C的API?还是应该创建一个独立的DTO jar文件,以便可以在多个服务之间重复使用?
如果您遇到类似的情况,您所采取的方法是什么?
3个回答

0

我认为这取决于一些特定的用例。

如果 DTO 是一个在项目的许多模块中都使用的公共类,那么它应该包含在一个 common 模块中。

我认为还有另一种解决方案,你可以将服务 C 视为 API 服务(例如 Google Map API)。因此,当你为客户提供服务时,你应该为客户提供一个库。因此,在开发服务 C 后,你可以开发一个包含其客户所需的 DTOC 服务库

要使用 C 服务的 API,A 和 B 需要导入 C 服务库 并调用 (new CService()).getSomething()


1
我是通过实践项目学习的。此外,我使用了相当多的API,其中大部分都为我们提供了库。因此,我认为这可能是一个可行的解决方案。 - TranNgocKhoa
1
你可以查看 https://github.com/spring-petclinic。这个网站还有很多资源,你可以在 https://www.baeldung.com 上学习。 - TranNgocKhoa
1
我只是一个新手,所以有很多东西需要学习 :D - TranNgocKhoa
1
很好,对我来说你是一位资深专家 :) - RamPrakash
1
@RamPrakash 请查看此文章 - Ahmad Hoghooghi
显示剩余4条评论

0
在您的项目中创建一个名为common的包(例如:com.example.common)。然后,您可以创建一个子包并命名为dto(例如:com.example.common.dto),并将所有DTO放入其中,这些DTO将在所有服务中通常使用。
应采用此方法。

0

是的,您可以将它们放在单独的commons API中,并在依赖项中使用此jar。这将非常有帮助,因为您甚至可以在此commons包中编写一些接口(用于服务)或一些实用程序类,例如加密/解密(用于身份验证),并在任何一个微服务中实现它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接