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 – 来自masterpage的Html.RenderPartial调用
- asp.net-mvc – 如何在ASP.NET MVC视图中使用扩展方法?
- asp.net-mvc – 为什么我的ActionFilters都没有运行?
- asp.net – LinkButton CommandName和CommandArgument
- asp.net-mvc-3 – 基于条件渲染部分的剃刀语法
- 在Asp.net中运行外部可执行文件的内存限制
- asp.net-mvc-3 – ASP.NET MVC 3控制器路由 – 使家庭控制器
- 为什么要使用ASP.NET Membership安全模型?
- asp.net-mvc-4 – Asp.Net Web Api – ModelBinders
- asp.net-mvc – MVC3 EF4 POCO存储库/ UnitOfWork连接错误
- VS2005(c#)项目调试问题解决方案集锦 转
- asp.net – 第一个事件?主页Page_Load或内容页P
- 本地化 – MVC 3中DataAnnotations的默认错误消息
- asp.net – Reflection构成了什么风险? (中等信
- asp.net-mvc – ASP.NET MVC路由从html页面开始
- asp.net-mvc-3 – 如何在Razor中创建一个else if
- asp.net – 通过在弹性beanstalk的负载均衡器中的
- asp.net-mvc – 如何在客户端Kendo UI网格中实现
- 从wsdl文件更新asp.net WebService引用?
- 在Asp.net中运行外部可执行文件的内存限制
