【发布时间】:2012-12-25 08:15:59
【问题描述】:
我正在开发具有以下要求之一的 asp.net mvc 应用程序。
场景:用户提交请求以处理长时间运行的任务。该任务必须在服务器端启动。并且无需等待任务完成,就必须向用户发送响应,说一旦任务完成,他们将收到电子邮件通知。
这似乎是异步处理的场景。最初我想使用异步委托,但后来知道异步委托将作为后台线程运行,并且如果主线程退出将不会保持活动状态。对我来说,似乎一旦将响应发送给用户,主线程就会退出等等作为后台线程。如果我错了,请纠正我。
所以我想到了使用 Thread 类创建一个前台线程。但是在我读过的一篇文章中,提到asp.net不会查看它是否是前台线程并且不会有用。是真的吗?
我目前正在查看以下替代方案。请推荐
将任务处理逻辑移出 asp.net 并放入控制台应用程序/服务 并通过将消息从 asp.net 推送到 MSMQ 来通知应用程序。收到消息后,控制台应用程序将进行处理并发送电子邮件通知
接收消息并进行处理的 WCF 服务
还有其他更好的想法欢迎分享
谢谢,
盗贼
【问题讨论】:
-
我不知道,但这两种解决方案中的任何一种对我来说都很好。