![Page 1: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/1.jpg)
Игорь Лабутин, 03.06.2016 [email protected]
![Page 2: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/2.jpg)
15 лет в разработке ◦ С/С++: Windows, Linux, QNX, Embedded
◦ .NET – последние 8 лет
Интересы ◦ Сети, протоколы обмена данными
◦ Проблемы производительности
2
![Page 3: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/3.jpg)
Как любой фреймворк – не всегда работает как хочется
Отличные возможности диагностики ◦ Много полезного, но много лишнего ◦ Не всегда тривиально включить ◦ А главное: отфильтровать!
3
![Page 4: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/4.jpg)
Как любой фреймворк – не всегда работает как хочется
Отличные возможности диагностики ◦ Много полезного, но много лишнего ◦ Не всегда тривиально включить ◦ А главное: отфильтровать!
3
Сегодня: Пишем логи Считаем вызовы Меряем трафик Интегрируемся в другие тулы
![Page 5: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/5.jpg)
Sockets
Memory Mapped Files
Named Pipes WM_COPYDATA
4
![Page 6: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/6.jpg)
Sockets
Memory Mapped Files
Named Pipes WM_COPYDATA .NET Remoting
COM DCOM
Web Services
4
![Page 7: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/7.jpg)
Sockets
Memory Mapped Files
Named Pipes WM_COPYDATA .NET Remoting
COM DCOM
Web Services
Windows Communication
Foundation Первый релиз в составе .NET FW 3.0 21.11.2006
4
![Page 8: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/8.jpg)
Address Binding Contract
5
![Page 9: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/9.jpg)
Address Binding Contract
Посмотрим код
5
![Page 10: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/10.jpg)
Address Binding Contract
Посмотрим код
Приложение есть, но оно не работает!
5
![Page 11: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/11.jpg)
WCF логи – подробней не бывает Зачастую подробностей многовато
6
![Page 12: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/12.jpg)
WCF логи – подробней не бывает Зачастую подробностей многовато
6
Решение – logs on demand
![Page 13: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/13.jpg)
Увы, только для серверов
В редких случаях может быть неполным
Работает без останова сервера
Производит меньший объем логов для анализа
7
![Page 14: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/14.jpg)
8
Ограниченный
набор
Есть везде
![Page 15: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/15.jpg)
Скорость? Время?
Память? CPU? Сеть?
9
![Page 16: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/16.jpg)
Скорость? Время?
Память? CPU? Сеть?
9
Зависит от требований!
![Page 17: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/17.jpg)
10
Основные в нашей практике
Мало удобных средств
![Page 18: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/18.jpg)
Мало средств? Напишем своё!
10
Основные в нашей практике
Мало удобных средств
![Page 19: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/19.jpg)
Легко использовать
Не требует изменений в приложении
Узкоспециализировано
11
![Page 20: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/20.jpg)
12
WCF сам по себе не всегда полезен ◦ Нужны более высокоуровневые операции
Минимальное участие пользователя
Работа на боевых серверах
![Page 21: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/21.jpg)
12
WCF сам по себе не всегда полезен ◦ Нужны более высокоуровневые операции
Минимальное участие пользователя
Работа на боевых серверах
![Page 22: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/22.jpg)
Если используете ETW – вам в PerfView
Можно расширить своими надстройками!
13
![Page 23: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/23.jpg)
Если используете ETW – вам в PerfView
Можно расширить своими надстройками!
13
![Page 24: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/24.jpg)
WCF диагностировать можно и нужно ◦ Способов больше одного
Все на так сложно как кажется на первый взгляд
Даже «low-level» инструменты могут быть пригодны для решения высокоуровневых задач
14
![Page 25: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние](https://reader033.vdocuments.mx/reader033/viewer/2022050406/5f838f723fb7850a996443ae/html5/thumbnails/25.jpg)
WCF: Analytic Tracing with ETW (http://bit.ly/1P3I04x)
Метаданные ETW провайдеров
Microsoft TraceEvent Library (@ http://nuget.org)
PerfView ◦ Встроенная помощь
◦ https://channel9.msdn.com/Series/PerfView-Tutorial
15