使用 Angular 前端从多个 Azure SQL 数据库提取数据的 ASP.NET Core API 中的实时仪表板最佳实践

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

我正在开发带有 Angular 前端的 ASP.NET Core 8 API(均托管在 Azure 应用服务中)。在前端应用程序中,我有一个仪表板页面,需要显示从 Azure SQL 托管的多个数据库中提取的数据。挑战在于仪表板上显示的数据可能会在单个数据库级别同时更新。

我正在寻求有关实现此场景的最佳方法的建议。具体来说,我正在寻找以下方面的指导:

在 ASP.NET Core API 中从多个 Azure SQL 数据库高效提取数据的最佳实践是什么? 考虑到数据库级别发生的潜在更新,如何确保仪表板上显示的数据是实时或接近实时的? 是否有任何推荐的架构模式或技术可以有效地处理这种情况? 如果可能的话,您能否提供代码参考或示例来演示建议方法的实现?

任何人都可以通过提供指导来帮助我吗

c# angular azure-sql-database .net-8.0 azure-appservice
1个回答
0
投票

有几种可能的方法可以解决这个问题:

  1. FE 上的长轮询机制 - 使用

    setInterval
    请求您需要的所有数据。在 BE 中,它需要一些端点,其中所有必需的信息都聚合在某个 DTO 中。

    但这也需要 FE 上的一些逻辑来忽略值(如果它们不改变)。

  2. BE 上的长轮询机制 - 与上面相同,但请求数据库将在 BE 上间隔完成(一些 [

    IHostedService
    ]{https://learn.microsoft.com/en-us/dotnet/architecture/microservices/ multi-container-microservice-net-applications/background-tasks-with-ihostedservice}),还需要逻辑与以前的值进行比较 - 如果它们发生了变化 - 将更新发送到 FE。

    这需要在FE和BE上实现通知机制(例如SignalR)。

  3. 我会探索 SQL 数据库中的触发器 - 也许有一种方法可以挂钩这些触发器:

    创建触发器 (Transact-SQL)

    预览版中还有一个有趣的功能,允许将 Azure Function 挂接到数据库触发器中:

    函数的 Azure SQL 触发器(预览版)

    然后在这种方法中 - 你只会得到“真实的”相关更新,这将导致 BE 上的代码简化。在这样的触发器上,您只需向 FE 发送通知(同样是 SignalR)。

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