Скачать презентацию Асинхронное программирование для самых маленьких Что такое Скачать презентацию Асинхронное программирование для самых маленьких Что такое

C#5 async and ASP.NET - Slides.pptx

  • Количество слайдов: 18

Асинхронное программирование для самых маленьких • Что такое асинхронное программирование • История асинхронного программирования. Асинхронное программирование для самых маленьких • Что такое асинхронное программирование • История асинхронного программирования. NET • Применение async await • Асинхронность в вебе • Как выстрелить себе в ногу

Асинхронное и параллельное программирование Асинхронное программирование Вызывающий поток не дожидается окончания Чтение из портов Асинхронное и параллельное программирование Асинхронное программирование Вызывающий поток не дожидается окончания Чтение из портов ввода-вывода Параллельное программирование Использование нескольких ядер процессора Fork-Join aka Map. Reduce

Зачем нужен асинхронный код Desktop приложения Веб приложения Silverlight, Windows Phone, Windows 8 Любые Зачем нужен асинхронный код Desktop приложения Веб приложения Silverlight, Windows Phone, Windows 8 Любые приложения

Три модели асинхронности в. NET Asynchronous Programming Model (APM) Evented Asynchronous Programming (EAP) Task-based Три модели асинхронности в. NET Asynchronous Programming Model (APM) Evented Asynchronous Programming (EAP) Task-based Asynchronous Programming (TAP)

Asynchronous Programming Model (APM) //. NET 1 model file. Begin. Read(buffer, 0, max. Length, Asynchronous Programming Model (APM) //. NET 1 model file. Begin. Read(buffer, 0, max. Length, async. Result => { int num. Bytes. Read = file. End. Read(async. Result); // Now do something with "buffer“ }, null); Microsoft не рекомендует использовать этот паттерн!

Event-based Asynchronous Programming (EAP) //. NET 2 model web. Client. Download. String. Completed += Event-based Asynchronous Programming (EAP) //. NET 2 model web. Client. Download. String. Completed += (sender, args) => { string html = args. Result; // Now do something with "html" }; web. Client. Download. String. Async(new Uri("http: //example. com")); Microsoft не рекомендует использовать этот паттерн!

Task-based Asynchronous Programming (TAP) Task<string> html. Task = web. Client. Download. String. Task. Async(url); Task-based Asynchronous Programming (TAP) Task html. Task = web. Client. Download. String. Task. Async(url); string html = html. Task. Result; // Sync (block until done) html. Task. Continue. With(task => { string html = task. Result; // Async, C# 4 }); string html = await html. Task; // Async, C# 5 Microsoft рекомендует использовать этот паттерн!

Как работает C# 5 “async” До компиляции public async Task<View. Result> My. Method() { Как работает C# 5 “async” До компиляции public async Task My. Method() { string my. Param = "some value"; var data = await Fetch. Some. Data(my. Param); return View(data); } 1 2 После компиляции (концепт) public Task My. Method() { string my. Param = "some value"; return Fetch. Some. Data(my. Param). Continue. With(task => { var data = task. Result; return View(data); } 1 2

Демонстрация! Демонстрация!

Synchronization Context Захватывается асинхронным кодом Используется для того, чтобы выполнить ваш колбек Имеется только Synchronization Context Захватывается асинхронным кодом Используется для того, чтобы выполнить ваш колбек Имеется только у особенных потоков Windows Forms UI Thread WPF UI Thread ASP. NET Threads

IO and CPU bound operations Асинхронные вычисления, использующие процессор Поток из Thread. Pool IO IO and CPU bound operations Асинхронные вычисления, использующие процессор Поток из Thread. Pool IO bound operations Чтение или запись из устройств ввода-вывода IO Completion Port

Демонстрация! Демонстрация!

C# 5 and Async Web Applications Evented web programming with ASP. NET C# 5 and Async Web Applications Evented web programming with ASP. NET

Traditional Web request handling “thread-per-request” Requests Thread pool Busy Traditional Web request handling “thread-per-request” Requests Thread pool Busy

Evented Web request handling Requests Thread pool Evented Web request handling Requests Thread pool

Демонстрация! Демонстрация!

Как выстрелить себе в ногу Async Void Methods Нет возможности ожидать Исключения теряются Result Как выстрелить себе в ногу Async Void Methods Нет возможности ожидать Исключения теряются Result Property Вызывающий поток блокируется Deadlock

Источники Async in C# 5 – книга Mastering Parallel Extensions – книга C#5, ASP. Источники Async in C# 5 – книга Mastering Parallel Extensions – книга C#5, ASP. NET MVC 4, and asynchronous Web applications - презентация Async programming deep dive – презентация Хабр – статья, см. полезные коменты