gpt4 book ai didi

asp.net - 在 ASP.Net Web 应用程序中运行后台任务并获取反馈的最佳方式?

转载 作者:行者123 更新时间:2023-12-02 10:52:27 25 4
gpt4 key购买 nike

我正在考虑以下方法,但不确定这是否是最好的出路:

第1步(服务器端):TaskMangaer类创建一个新线程并启动一个任务。
步骤2(服务器端):将taskManager对象引用存储到缓存中以供将来引用。
步骤3(客户端):使用定期Ajax调用来检查任务的状态。

基本上,目的是建立一个框架来运行后台任务(大约 5 分钟),并在 Web UI 上定期提供任务完成百分比的反馈。

是否有解决这个问题的巧妙方法或任何现有的 ASP.NET API 会有所帮助?

编辑 1#:我想使用应用程序在进程中运行任务。

编辑 2#: 看起来堆栈溢出上的徽章实现也使用缓存来跟踪后台任务。 https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

最佳答案

我认为将结果存储在缓存中的问题在于,ASP.NET 可能会出于其他目的而清除该缓存条目(即,如果内存不足、脾气暴躁等)。从缓存提供的内容应该是您可以根据需要重新创建的内容(如果在缓存中找不到该内容),ASP.NET 运行时可以随时转储缓存条目。

徽章讨论中缓存的使用似乎根本不同,在这种情况下任务是短暂的。缓存只是被用作一个黑客定时器来定期触发任务。

您能否确认这是一项需要 5 分钟的任务,并且一直需要它自己的线程?这本身就是一个性能问题,如果每个请求都需要自己的线程这么长时间,那么您将只能支持有限数量的此类请求。只有当这是可以接受的时候,我才会让这个任务在一个线程中停留这么长时间。

如果这些任务可以驻扎一个线程,那么我就继续将结果存储在进程全局的字典中。字典的键将与客户端请求/AJAX 回调系列相关联。如果安全性非常重要, key 还应该包含用户 ID。

如果您需要扩展到许多用户,那么我认为您需要将任务分解为异步步骤,在这种情况下,我可能会使用数据库表来存储结果(再次按请求/用户键入)。

关于asp.net - 在 ASP.Net Web 应用程序中运行后台任务并获取反馈的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com