【发布时间】:2013-07-22 19:29:55
【问题描述】:
我目前正在运营一个电子商务网站。
所以当用户结账时,我有一个银行回调页面...
但由于我必须在付款发生后执行一项冗长的任务(目前是同步完成的),因此用户必须等待很长时间才能将其重定向回我的网站。
我尝试使用 thread.start 创建一个后台线程,但问题是我失去了会话,这是不明显的。
那么,根据这个描述,您将如何进行?你会选择异步还是多线程?
如果您选择异步,会怎样?
所以我们有类似的东西:
public ActionResult CallBack()
{
if (AcceptPayment() == "OK")
{
LenghtyTask();
}
return RedirectToUrl("MyWebSite");
}
【问题讨论】:
-
您是要解决用户必须等待很长时间的事实,还是要让这个漫长的过程不再像现在这样对您的整体可扩展性造成太大影响?
-
您的实际问题是,听起来您希望客户端在运行冗长的任务时使用一些 UI 进行更新,是吗?如果是这样,那么这个问题或多或少毫无意义,因为您需要制作一个ajax请求端点来确定您长时间运行的任务的状态。
-
异步实际上是在启动一个线程,但是你只是在释放服务器资源,并没有真正让用户的事情变得更快。
-
我删除了您对 MVP 答案的请求,因为这是一个毫无意义的请求。这里的答案是根据其质量而不是基于某些闪亮的标题而被赞成或否决的。
标签: c# asp.net-mvc-4