asp.net-web-api – ApiController的异步方法 – 什么是利润?什
(这可能重复的问题
ASP.NET MVC4 Async controller – Why to use?,但关于webapi,我不同意答案在那里)
假设我有一个长时间运行的SQL请求。它的数据应该序列化为JSON并发送到浏览器(作为xhr请求的响应)。示例代码: public class DataController : ApiController { public Task<Data> Get() { return LoadDataAsync(); // Load data asynchronously? } } 当我做$ .getJson(‘api / data’,…)时会发生什么(见这个海报http://www.asp.net/posters/web-api/ASP.NET-Web-API-Poster.pdf): > [IIS]请求被IIS接受。 请随时纠正我,如果有什么问题。 在上面的问题,他们说,点和利润是,[THREAD2]不是从管理池,但MSDN文章(上面的链接)说,
所以我得出结论,所有三个THREADS是从管理池。 此外,如果我使用同步方法,我仍然保持我的服务器响应,只使用一个线程(从珍贵的线程池)。 那么,从1个线程切换到3个线程的实际点是什么?为什么不只是最大化线程池中的线程? 有什么明显有用的方法使用异步控制器? 解决方法
我认为关键的误解是如何异步任务工作。我有一个
async intro在我的博客,可以帮助。
特别地,由异步方法返回的任务不运行任何代码。相反,它只是一种方便的方法来通知呼叫者该方法的结果。您引用的MSDN文档仅适用于实际运行代码的任务,例如Task.Run。 BTW,你引用的海报与线程无关。下面是在异步数据库请求中发生的情况(略微简化): >请求被IIS接受并传递给ASP.NET。 如果你想要一些概念验证代码,我有an old Gist人为限制ASP.NET线程池到核心数(这是它的最小设置),然后N 1同步和异步请求。该代码只是延迟一秒,而不是联系SQL服务器,但一般的原则是一样的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在Firefox上命名文件以供下载?
- [干货来袭]DevExpress ASP.NET示例资源最全分享!(二)
- asp.net-mvc – 在MVC中使用ViewBag坏?
- Asp.net Web Api开发 性能:使用Jil提升Json序列化性能
- asp.net – 当我提交时,为什么我的文本框无法识别值已更改?
- asp.net-mvc – 单元测试MVC控制器
- 如何在调用WCF服务之前弹出一个确认对话框?
- asp.net-mvc-2 – 如何在asp.net mvc2中的控制器外部获取请
- asp.net-membership – 具有自定义成员资格提供程序的MVC 4
- asp.net – 为什么visual studio给我类型没有为我的App_Cod
- 如何从Asp.Net Code Behind调用JavaScript函数?
- (18)ASP.NET Core 基于现有数据库创建EF模型(
- [ASP NET MVC] 使用ReportViewer执行用户端报表定
- Asp.Net MVC3到MVC4升级工具?
- asp.net – System.Web.Providers.DefaultMember
- asp.net-mvc – 带有并发检查的ASP.NET MVC实体框
- 从ASP.NET C#启动一个程序
- asp.net-mvc – ASP.NET MVC:BLL和DAL到Reposit
- 什么是ASP.NET的最佳/推荐的CAPTCHA组件
- asp.net-mvc – 为什么ListBoxFor不选择项目,但L