【问题标题】:Asynchronous controller vs multithreading for ASP.NET MVCASP.NET MVC 的异步控制器与多线程
【发布时间】:2015-08-24 15:20:46
【问题描述】:

我一直试图了解何时最好使用异步控制器而不是在单独的线程中处理任务。

根据研究,我认为当有多个任务要完成时,在某些时候涉及资源上的单点条目时,最好使用异步。因此,asp.net MVC 的好处是返回池线程,以便 UI 可以处理其他 UI 事件,而其他一些线程在将其信息克隆回池线程之前继续其处理。

现在让我们说这个任务是从服务器下载一个文件。创建我自己的线程来产生和处理这个操作效率会降低吗?

使用多线程我可以处理数据并发,如何使用异步控制器完成?

在 ASP.NET MVC 中有哪些示例我应该使用异步控制器而不是我自己的线程?

我是 ASP.NET MVC 的新手,并试图更好地理解这个概念,因为我在互联网上进行了详尽的搜索,但无法明确区分两者(对于 ASP.NET MVC)。

【问题讨论】:

  • 服务器上的异步 IO 主要是为了减少线程数,因为每个线程消耗 1MB 内存和一些操作系统资源。这真的是故事的 99%(在服务器上!)。

标签: c# multithreading asp.net-mvc-4 asynchronous


【解决方案1】:

仅当您发送回视图的结果不依赖于线程的操作时,创建线程才有用。或者换一种说法,当涉及耗时的处理而视图不需要关闭知识时,线程很有用。

我遇到的一个潜在陷阱是,如果您的控制器正在使用会话数据,IIS 将阻止后续的 AJAX 调用,直到它被处理为止。 Why would multiple simultaneous AJAX calls to the same ASP.NET MVC action cause the browser to block?

【讨论】:

  • 其实这不是一个错误的说法吗?无论是否同步,控制器都会默认等待返回的视图。
  • 感谢 user3660362... 您能否提供一个 asp.net mvc 的示例或场景,当您将使用每种情况时?
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多