小编Din*_*one的帖子

使用AsyncController帮助增加旧版ASP.NET MVC 3项目的并发性

我们现在有一个与并发用户斗争的网站.

以下是该项目的高级背景:

  • 旧版ASP.NET MVC 3项目(.NET 4)
  • 无法对核心代码进行任何重大改写
  • 占用时间最长的主要入口点是控制器SubmitSearch上的操作Search.平均响应时间为5-10秒.

因此,如第二点所述,我们不希望在此项目上花费太多时间来重写大部分内容.但是,我们希望尝试增加并发用户.我们不打算改变其他任何东西或提高性能,因为它需要更多的工作.

我们看到的是,随着越来越多的人受到打击SubmitSearch,网站总体上变慢了.这很可能是由于所有IIS线程被锁定执行搜索.

我们正在寻求实现AsyncControllerSubmitSearch在正常的CLR线程上执行操作.以下是我们想要实现它的方式:

假设这是原始SubmitSearch方法:

/// <summary>
/// Submits a search for execution.
/// </summary>
/// <param name="searchData">The search data</param>
/// <returns></returns>
public virtual ActionResult SubmitSearch(SearchFormModel searchData)
{
    //our search code
}
Run Code Online (Sandbox Code Playgroud)

我们希望转换为最快的方法AsyncController是简单地执行此操作:

/// <summary>
/// Submits a search for execution.
/// </summary>
/// <param name="searchData">The search data</param>
/// <returns></returns>
protected virtual ActionResult SubmitSearch(SearchFormModel searchData)
{
    //our search code …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc multithreading asynccontroller

0
推荐指数
1
解决办法
610
查看次数