提问人:Stephen Cossgrove 提问时间:11/8/2023 最后编辑:marc_sStephen Cossgrove 更新时间:11/8/2023 访问量:47
.net 6.0 EF 和长时间运行的进程
.net 6.0 EF and a long running process
问:
我有一个使用 EF 与 SQL Server 交互的 ASP.NET Core 6.0 Web API。
我有一个存储过程,负责重建投影表,运行大约需要 10 分钟。
我需要通过 Web API 公开这些保护表的重建,该 API 将此数据公开给我们公司内部的其他应用程序。
谁能告诉我通过存储过程触发重建的最佳方式,但不需要等待调用结束?
提前致谢。
答:
0赞
sich
11/8/2023
#1
据我正确理解,客户端调用您的 API,而 API 又调用运行大约 10 分钟的 sproc。我假设您不需要(通过 API)监控进度或完成情况。因此,若要在后台运行该 sproc,可以使用 .Net Core 辅助角色服务作为 Web 应用的一部分或作为 WebJob(如果在 Azure 中托管)。需要在 Web 应用和后台服务之间使用某种队列或其他通信方法(即使它在同一进程中运行)。一种完全不同的方法是将 Azure Functions 与 Durable Tasks 结合使用(因为 AF 不支持长时间运行的操作)。它们可以由 HTTP 请求触发,因此可以映射到 Web API 图面。
但是,实际上,更简单的方法是使用SQL Server Agent(或者类似,如果您使用其他RDBMS),就像注释中引用的答案所建议的那样。
评论