使用 .NET Core 将来自第三方 API 的数据集成到本地数据库

Integrating the data from third parties API to a local database using .NET Core

我的问题是关于干净的架构。我是 .NET Core 的新手,我的任务是将第三方 API 集成到控制台应用程序中,以便将数据存储在 SQL 数据库中。这两天我一直在研究,我发现了很多关于如何创建一个查询本地数据库的存储库服务的例子,但是我找不到任何像样的例子来说明如何将外部 APIs 的数据集成到一个本地数据存储解决方案,在我的例子中是 SQL 数据库。

任何关于如何以干净的方式构建服务的信息都会对我有很大帮助!

基本上可以归结为是否需要在本地存储来自 3d 派对的数据的问题 API。您不是该数据的所有者。

在许多情况下,每次需要一些数据时,最好查询外部 API。您不知道数据是否会更改以及何时更改。例如。您每次查询天气数据或货币兑换率。外部系统知道如何产生这样的结果,所以每次都询问系统。通常可以缓存来自 3d party APIs 的数据,这取决于您的应用程序的需要(您的用户是否需要每次刷新时更新天气或每天一次就足够了,例如在滑雪场的网站上) .

现在可能会出现 3d 派对 API 与您的域松散耦合的情况。例如。您使用单独的 API 来管理智能家居解决方案中的设备。在这种情况下,我们讨论的是微服务架构(Microservices by Fowler 是一个好的开始)。在这种情况下,可以从 3d 派对 API 构建数据的本地副本。想象您的服务只对更换设备的频率感兴趣。因此,您可以查询设备管理 API 以查找损坏的设备,并以更适合您的应用程序的形式在本地存储此信息。您获取数据,将其重新组织为更适合您的方式,然后存储和使用它。

所以基本上一如既往地提出如此广泛的问题:这取决于。你在构建什么,外部 API 提供什么,你想用你查询的数据做什么。

对您的问题进行技术分析:您查询数据,例如通过来自第三方的 REST。这会让你得到 TheirObjectDto。您处理这些数据。他们的对象可能会改变,你不是合约的所有者。您创建 MyObject,其中包含您需要的数据。您将它保存到您的数据库(如果需要,可以通过存储库)。您为它和 DB table 构建一个实体。当 3d 派对 API 发生变化并且 returns TheirObjectDto2 时,您仍然使用 MyObject。对您来说,最小的改变是将 TheirObjectDto2 转换为 MyObject。您的应用程序继续工作。在第二步中,如果您想要 TheirObjectDto2 的一些新的很酷的信息,您可以修改您的内部数据结构。