在ASP.Net Web应用程序中运行后台任务并获得反馈的最佳方法?
我正在考虑以下方法,但不确定它是否是最好的出路:
step1(服务器端):TaskMangaer类创建一个新线程并启动一个任务. 基本上,目的是建立一个框架来运行后台任务(约5分钟),并在Web UI上提供有关任务完成百分比的定期反馈. 有没有一个巧妙的方法围绕这个或任何现有的asp.net API有用吗? 编辑1#:我想用应用程序在进程中运行任务. 编辑2#:看起来堆栈溢出上的徽章实现也使用缓存来跟踪后台任务. http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ 解决方法
我认为将结果存储在缓存中的问题是ASP.NET可能会为了其他目的而清除缓存条目(即,如果它的内存不足,如果它的脾气暴躁等).如果在缓存中找不到缓存,则可以根据需要重新创建缓存中的内容,ASP.NET运行时可以随时转储缓存条目.
徽章讨论中缓存的使用似乎根本不同,在这种情况下,任务是短暂的.缓存只是被用作hacky计时器来定期启动任务. 你能否确认这是一项需要5分钟的任务,并且整个时间都需要自己的线程?这本身就是一个性能问题,如果每个请求都需要自己的线程这么长时间,你将只能支持有限数量的此类请求.只有在可以接受的情况下,我才会让任务阵营长期存在. 如果可以将这些任务放在一个线程中,那么我只需继续将结果存储在全局字典中.字典的关键字将与客户端请求/ AJAX回调系列相关联.如果安全性非常重要,密钥应该包含用户ID. 如果你需要扩展到许多用户,那么我认为你需要将任务分解为异步步骤,我可能会使用数据库表来存储结果(再次按每个请求/用户键入). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 报表查看器控件(Web)显示空白报告
- asp.net-mvc – Full-Stack Web应用程序框架的定义是什么
- asp.net-mvc – 为什么ASP.NET MVC 4与IList for editor不能
- asp.net – WebForm_DoCallback定义
- asp.net – 在Google Chrome浏览器中加载两次
- asp.net – 如何按优先级或按字母顺序对Request.UserLangua
- asp-classic – 哪里可以存储经典ASP的连接字符串?
- asp.net-mvc – Url.Action是编码参数值
- asp.net-mvc-3 – 如何从RazorViewEngine访问Request对象?
- asp.net-mvc-3 – ASP.NET MVC – 扩展Ajax.ActionLink方法
- asp.net – 用于Active Directory帐户的Oauth 2令
- asp.net-mvc-3 – 在Kendo网格中显示datetime字段
- 学习ASP.NET的第一天
- asp.net – Mscaptcha在本地运行良好,但图片没有
- asp.net-mvc – asp.net mvc嵌套视图模型表单sum
- asp.net-mvc – 将List参数传递到ASP.NET MVC3中
- asp.net – HttpContext.Current.Request.IsAuth
- asp.net-web-api – 使用带有ASP.Net标识的Autof
- asp.net-mvc – 如何将相同URL的GET和DELETE请求
- 如果关键服务不可用,如何使ASP.NET站点脱机