在构建REST API同步应用程序时,需要考虑哪些架构模式? 太长,读不下去了

在构建REST API同步应用程序时,需要考虑哪些架构模式? 太长,读不下去了,rest,design-patterns,architecture,Rest,Design Patterns,Architecture,我们通过调用第三方api、映射数据并发布到目标api来同步数据。 我们正在整合更多的第三方。 这种软件需要考虑什么样的体系结构? 细节 我所在的团队构建了一个将数据从一个REST Api同步到另一个REST Api的解决方案。 我们目前只从一个源同步到一个目标。将实施更多来源 我们开始构建洋葱架构解决方案,它工作得很好。 然而: 因为我们只想同步(放置或发布)新数据,所以我们必须首先调用目标api来查看我们已经拥有的数据。这发生在应用程序的基础结构层 然后我们调用源api,并对其进行过滤,这

我们通过调用第三方api、映射数据并发布到目标api来同步数据。 我们正在整合更多的第三方。 这种软件需要考虑什么样的体系结构?
细节 我所在的团队构建了一个将数据从一个REST Api同步到另一个REST Api的解决方案。 我们目前只从一个源同步到一个目标。将实施更多来源

我们开始构建洋葱架构解决方案,它工作得很好。 然而:

  • 因为我们只想同步(放置或发布)新数据,所以我们必须首先调用目标api来查看我们已经拥有的数据。这发生在应用程序的基础结构层
  • 然后我们调用源api,并对其进行过滤,这样我们就只有新的或更新的数据(也在基础设施层)
  • 数据从第三方对象转换为核心对象(也在基础架构层)
  • 然后将其转换为目标对象,并发送到目标api(也在基础结构层中)
你可能会明白这是怎么回事

大多数数据处理发生在基础架构层,因为核心层独立于所有内容(项目、NUGET等)。如果我们完全遵循洋葱模式,我们将在核心进行处理,但这意味着我们必须在比较数据之前进行更多的映射

我们都觉得核心层中存在的很多东西都是不必要的,因为我们基本上只是映射到核心对象,然后直接映射到基础结构对象


您对我们应该简化的其他体系结构有什么建议吗?

软件体系结构是科学、工程、艺术和工艺的结合。目标是为系统定义一个总体概念模型,使开发人员和维护人员能够灵活地响应需求或环境的变化

正如Robert C.Martin所说(我认为),好的软件架构是关于对那些在未来很难改变的事情做出正确的决定。代码库中的很多东西都很容易更改,我们不应该过分关注这些。很难改变的是关于语言、平台、框架、应用的技术(例如使用哪个数据库、HTTP与协议缓冲区等)、同步与异步、ACID与最终一致性等的决策

换句话说,您首先分析问题,然后选择一个匹配的体系结构

为什么选择洋葱架构来解决上述问题

关于该架构()的要点是保护域模型不受实现细节的影响(换句话说,保护域模型)

根据OP中的描述,没有业务逻辑可言。相反,这听起来像是一份工作。选择适合该任务的体系结构

它可以是一个简单的问题,也可以是更复杂的问题


几年前,我的一个客户需要实现类似的功能,在这种特定的环境中,我们一致认为最有意义的是基于的最终一致的异步守护进程,并加入了一些CQR作为良好的度量。

感谢您给出了很好的答案!我们摘洋葱是因为它是我们教育的中心。我们的导师建议我们这样做,然后去做我们觉得更好的事情,所以我想这是经验的一部分。。但无论如何,我们将研究ETL的各种方法,并研究您发布的链接。再次感谢!