8. ASP.NET
IIS
Свой ThreadPool
IO Thread передает управление ASP.NET worker thread
Thread starvation
Если потоки будут долго работать, то пул потоков
может кончиться
13. ASP.NET MVC 4 и Web API
Исходный код новой веб-платформы MS:
http://aspnetwebstack.codeplex.com/
Доступно через
Install-Package AspNetMvc
Install-Package AspNetWebApi
14. AsyncController в MVC4
// Controller now supports asynchronous operations.
// This class only exists
// a) for backwards compat for callers that derive from it,
// b) ActionMethodSelector can detect it to bind to
// ActionAsync/ActionCompleted patterns.
public abstract class AsyncController : Controller
{
}
15. Task’и тоже бывают неправильные!
Task.Factory.StartNew( ()=> DoWork() );
Возвращает текущий worker thread в thread pool, и
забирает еще один
Имеет смысл иногда для параллельного выполнения
задач, но зависит от конкретики
Нужно использовать IO-bound tasks, в этом
нам поможет API библиотеки классов
16. Что же делать?
Поддержать работу с Task в MVC3 самим
ActionInvoker
ControllerDescriptor
ActionDescriptor
В сумме 4 файла, из которых только один требует
усилий
18. Неудобно
Как перейти от Task<Model> к
Task<ViewResult>?
TaskCompletionSource
Помогает перейти от одного Task’а к другому
19. Счастья все равно нет
Нет есть! LINQ провайдер для Task
ParallelExtensions от pfx team
http://blogs.msdn.com/b/pfxteam/archive/2010/04/04/9
990342.aspx
LinqToTasks
3 файла