BCA*_*BCA 2 asp.net entity-framework async-await
在.NET 4.5中,使用async/await模式,可以通过CancellationToken在异步控制器方法中包含一个Web请求来轻松取消.这当然可以传递给任何异步实体框架方法,整个事情可以很好地取消.
但回到6年前,在异步之前,WebAPI或MVC控制器方法是如何取消的?它甚至可能吗?如果是这样,是否有可能在取消的请求中取消长时间运行的实体框架查询?
我的询问动机是我已经进行了一些实验,发现在几乎所有情况下,我的同步版本的大型EF查询都比它们的异步对应项更快.异步版本的长度在10%到50%之间.此外,我的应用程序是供内部使用的,并且实际上只能为最多3个并发用户提供服务,因此可伸缩性不是问题.
简而言之,我想要老式的,同步的Entity Framework方法(因此,同步控制器方法)的速度,但具有可取消性.
但回到6年前,在异步之前,WebAPI或MVC控制器方法是如何取消的?它甚至可能吗?如果是这样,是否有可能在取消的请求中取消长时间运行的实体框架查询?
旧版ASP.NET用于Thread.Abort取消同步请求.这当然最终导致应用程序不稳定,因此ASP.NET将定期回收您的应用程序域(和服务进程).
我不确定遗留的ASP.NET是否Thread.Abort用于取消异步请求(当他们运行代码时,我的意思是).我会这么认为,但我不确定.
最后,请告知EF团队您的性能问题.
| 归档时间: |
|
| 查看次数: |
32 次 |
| 最近记录: |