[英]MVC long running EF stored procedure call
我想知道通过ASP.NET MVC 3用户界面触发长效/运行存储过程调用的简单有效方法是什么,该用户界面具有立即返回的Web UI并允许用户“允许”关闭浏览器并再次检查后来。
我真的不想仅为此创建Windows服务,我当时正在考虑使用ThreadPool.QueueUserWorkItem
方法,回收甚至不是什么大问题,应用程序也不会承受沉重的负担,这是内部WebUI正在简化一些维护任务。
是否有人尝试过ThreadPool.QueueUserWorkItem
方法并使用应用程序缓存或类似方法来持久化存储过程调用(例如“ EXECUTING”或“ COMPLETED”)的状态?
您应该考虑通过MSMQ http绑定托管WCF服务。 这样,您可以直接通过http调用将此Web服务请求插入异步队列。
为了使服务更易于从UI使用,您可以将WCF端点设为REST端点。
您可以利用Microsoft提供的开箱即用的排队技术,从javascript直接发布到REST服务,而不必处理多线程。
您还可以使用AsyncController和Microsoft提供的开箱即用的解决方案。
排队进入ThreadPool的所有内容都会将资源窃取到ASP.NET请求处理队列。 如果计划运行许多长时间运行的任务,则应使用其他线程/线程池。 如果只是偶尔使用,那么它肯定是一个可行的解决方案。
无论如何,请记住,您无法从Web请求外部访问应用程序缓存/会话,因此必须找到另一种方法来保持任务状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.