繁体   English   中英

MVC长时间运行的EF存储过程调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM