SlideShare a Scribd company logo
9-я конференция .NET разработчиков 
12 октября 2014 
dotnetconf.ru 
Введение в реактивный 
dotNet 
Акуляков Артём 
Неизвестный банк
Кто я? 
● 5+ лет 
– Финансовый сектор 
– Энергетика 
● Докладчик и 
организатор 
Dev2Dev 
2
Реактивное 
программирование 
3
Внимание! Реактивные 
двигатели тут совершенно не 
причем... 
4
Реактивный от слова «реакция». 
5
Зачем? 
6
Обычное приложение 
7
Проблемы 
● Не масштабируется 
● Отказоустойчивости нет 
8
Масштабируем 
9
Проблемы 
● Сложно 
● Масштабирование имеет 
латентность 
● Любая ошибка приводит к потере 
сервера 
10
Что делать? 
11
Решение #1 
12
Решение #2 
13
Решение #3 
14
Решение #4 
15
Плюсы 
● Гибкое и быстрое масштабирование 
● Просто тестировать 
● Ошибки локализованы компонентом 
● Эффективное неиспользование ресурсов 
16
Минусы 
● Сложно на первый взгляд 
● Дополнительные расходы на 
обмен сообщениями 
● Большая инфраструктура под 
капотом 
17
Философия 
18
Reactive manifesto 
19
Reactive manifesto 
● Ориентированность на события 
20
Reactive manifesto 
● Ориентированность на события 
● Отказоустойчивость 
21
Reactive manifesto 
● Ориентированность на события 
● Отказоустойчивость 
● Масштабируемость 
22
Reactive manifesto 
● Ориентированность на события 
● Отказоустойчивость 
● Масштабируемость 
● Отзывчивость 
23
Когда использовать? 
24
Использовать 
● Transaction processing 
● Service backend 
● Concurrency/parallelism 
● Complex event stream processing 
25
Уже используют 
● Box 
● Wix 
● LinkedIn 
● Blizzard 
● Twitter 
26
С чем работать в dotNet? 
27
Akka.NET 
● Actors model 
28
ActorModel 
29
Actor 
● Состояние 
● Поведение 
30
Actor 
● Состояние 
● Поведение 
● Асинхронность 
● Обмен сообщениями 
31
Actor 
● Supervisor strategy 
● Routing 
32
33
Пути 
34
● akka://my-sys/user/service-a 
● akka.tcp://sys@localhost:80/user/service-b 
● ../brothers 
● ../* 
● /user/service-c 
35
Как обрабатываются 
ошибки? 
36
Supervisors 
37
38
OneForOne vs OneForAll 
39
Что с routing? 
40
41
Routing 
● Broadcast 
42
Routing 
● Broadcast 
● RoundRobin 
43
Routing 
● Broadcast 
● RoundRobin 
● ConsistentHash 
44
Routing 
● ScatterGatherFirstCompleted 
45
Routing 
● ScatterGatherFirstCompleted 
● Random 
46
Routing 
● ScatterGatherFirstCompleted 
● Random 
● SmallestMailbox 
47
Akka.Net итог 
● AkkaDotNet это framework. 
● Многое не озвучено 
– DI 
– Remoting 
– Actor lifecycle 
48
Не любишь hardcore? 
49
Rx (Reactive Extensions) 
● Push-collections 
50
Don't call us, 
We will call you. 
-Hollywood principle 
51
IEnumerable vs IObservable 
IEnumerator vs IObserver 
LINQ to Events 
52
53
54
Итоги 
● Удобно работать с event streams 
● Удобно обрабатывать 
асинхронные операции 
● Не позволяет строить реактивные 
приложения полностью 
55
Хочется больше hardcore? 
56
F# 
● Functional reactive programming 
– Actor model 
– Async 
– Functional 
57
MailboxProcessor 
58
F# 
● … но это далеко не все 
– Rx 
– Akka.NET 
59
Akka.Net F# API 
60
Итоги 
● Больше возможностей 
● Для построения полностью 
реактивного приложения 
необходима Akka.Net 
61
Что почитать? 
● http://akkadotnet.github.io/ 
● https://rx.codeplex.com/ 
● http://rxwiki.wikidot.com/101samples 
● http://fsharpforfunandprofit.com/ 
● http://www.reactivemanifesto.org/ 
● https://www.coursera.org/course/reactive 
62
Итоги 
63
На правах рекламы 
64
Спасибо за внимание 
Акуляков Артем 
Неизвестный банк 
akulyakov.artem@gmail.com

More Related Content

What's hot

CodeFest 2011. Уразбаев А. — Пробуем Kanban!
CodeFest 2011. Уразбаев А. — Пробуем Kanban!CodeFest 2011. Уразбаев А. — Пробуем Kanban!
CodeFest 2011. Уразбаев А. — Пробуем Kanban!CodeFest
 
9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.
Maxim Boguslavsky
 
DevOps для Legacy-продуктов
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
ScrumTrek
 
Технический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&ATТехнический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&AT
CodeFest
 
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
SQALab
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
Badoo Development
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Badoo Development
 
GithubFlow. Тестировщики против тестирования.
GithubFlow. Тестировщики против тестирования.GithubFlow. Тестировщики против тестирования.
GithubFlow. Тестировщики против тестирования.
Tatyana Pischasova
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Oleg Poludnenko
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
Fwdays
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'codeIvan Mosiev
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
CodeFest
 

What's hot (12)

CodeFest 2011. Уразбаев А. — Пробуем Kanban!
CodeFest 2011. Уразбаев А. — Пробуем Kanban!CodeFest 2011. Уразбаев А. — Пробуем Kanban!
CodeFest 2011. Уразбаев А. — Пробуем Kanban!
 
9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.
 
DevOps для Legacy-продуктов
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
 
Технический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&ATТехнический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&AT
 
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
GithubFlow. Тестировщики против тестирования.
GithubFlow. Тестировщики против тестирования.GithubFlow. Тестировщики против тестирования.
GithubFlow. Тестировщики против тестирования.
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
 

Viewers also liked

Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
DotNetConf
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
DotNetConf
 
от авгиевых конюшен к звездам
от авгиевых конюшен к звездамот авгиевых конюшен к звездам
от авгиевых конюшен к звездам
Lev Goncharov
 
Внутреннее устройство GC
Внутреннее устройство GCВнутреннее устройство GC
Внутреннее устройство GC
tym32167
 
Know Your Security Model
Know Your Security ModelKnow Your Security Model
Know Your Security Model
Mikhail Shcherbakov
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
DotNetConf
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистов
Alexander Byndyu
 
Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?
VMware Tanzu
 

Viewers also liked (8)

Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
от авгиевых конюшен к звездам
от авгиевых конюшен к звездамот авгиевых конюшен к звездам
от авгиевых конюшен к звездам
 
Внутреннее устройство GC
Внутреннее устройство GCВнутреннее устройство GC
Внутреннее устройство GC
 
Know Your Security Model
Know Your Security ModelKnow Your Security Model
Know Your Security Model
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистов
 
Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?
 

Similar to Введение в реактивный .NET

reactive dotNet
reactive dotNetreactive dotNet
reactive dotNet
0xffAA
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
Roman Dvornov
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
SQALab
 
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
JetBrains Russia
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
etyumentcev
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
FDConf
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
Артем Захарченко
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Ontico
 
"Dealing with legacy code"
"Dealing with legacy code""Dealing with legacy code"
"Dealing with legacy code"
HYS Enterprise
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
PyNSK
 
Павел Пушкарев "Отказоустойчивость сервисов"
Павел Пушкарев "Отказоустойчивость сервисов"Павел Пушкарев "Отказоустойчивость сервисов"
Павел Пушкарев "Отказоустойчивость сервисов"
Yandex
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
corehard_by
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
Alexey Vakhov
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Ontico
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
Кирилл Толкачёв
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
Roman Grebennikov
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
SpbDotNet Community
 

Similar to Введение в реактивный .NET (20)

reactive dotNet
reactive dotNetreactive dotNet
reactive dotNet
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
"Dealing with legacy code"
"Dealing with legacy code""Dealing with legacy code"
"Dealing with legacy code"
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
 
Павел Пушкарев "Отказоустойчивость сервисов"
Павел Пушкарев "Отказоустойчивость сервисов"Павел Пушкарев "Отказоустойчивость сервисов"
Павел Пушкарев "Отказоустойчивость сервисов"
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
 
R-Style Part
R-Style PartR-Style Part
R-Style Part
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
 

More from DotNetConf

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованы
DotNetConf
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
DotNetConf
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
DotNetConf
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
DotNetConf
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
DotNetConf
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
DotNetConf
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историй
DotNetConf
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
DotNetConf
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
DotNetConf
 
Кроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и противКроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и против
DotNetConf
 
Быстрый бэкенд с parse.com
Быстрый бэкенд с parse.comБыстрый бэкенд с parse.com
Быстрый бэкенд с parse.com
DotNetConf
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?
DotNetConf
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
DotNetConf
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
DotNetConf
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
DotNetConf
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистов
DotNetConf
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
DotNetConf
 

More from DotNetConf (17)

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованы
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историй
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Кроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и противКроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и против
 
Быстрый бэкенд с parse.com
Быстрый бэкенд с parse.comБыстрый бэкенд с parse.com
Быстрый бэкенд с parse.com
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистов
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
 

Введение в реактивный .NET