Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15...

26
Игорь Лабутин, 03.06.2016 [email protected]

Upload: others

Post on 31-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Игорь Лабутин, 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 – последние

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 – последние

Как любой фреймворк – не всегда работает как хочется

Отличные возможности диагностики ◦ Много полезного, но много лишнего ◦ Не всегда тривиально включить ◦ А главное: отфильтровать!

3

Page 4: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Как любой фреймворк – не всегда работает как хочется

Отличные возможности диагностики ◦ Много полезного, но много лишнего ◦ Не всегда тривиально включить ◦ А главное: отфильтровать!

3

Сегодня: Пишем логи Считаем вызовы Меряем трафик Интегрируемся в другие тулы

Page 5: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

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 – последние

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 – последние

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 – последние

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 – последние

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 – последние

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 – последние

WCF логи – подробней не бывает Зачастую подробностей многовато

6

Page 12: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

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 – последние

Увы, только для серверов

В редких случаях может быть неполным

Работает без останова сервера

Производит меньший объем логов для анализа

7

Page 14: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

8

Ограниченный

набор

Есть везде

Page 15: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Скорость? Время?

Память? CPU? Сеть?

9

Page 16: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Скорость? Время?

Память? CPU? Сеть?

9

Зависит от требований!

Page 17: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

10

Основные в нашей практике

Мало удобных средств

Page 18: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Мало средств? Напишем своё!

10

Основные в нашей практике

Мало удобных средств

Page 19: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Легко использовать

Не требует изменений в приложении

Узкоспециализировано

11

Page 20: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

12

WCF сам по себе не всегда полезен ◦ Нужны более высокоуровневые операции

Минимальное участие пользователя

Работа на боевых серверах

Page 21: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

12

WCF сам по себе не всегда полезен ◦ Нужны более высокоуровневые операции

Минимальное участие пользователя

Работа на боевых серверах

Page 22: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Если используете ETW – вам в PerfView

Можно расширить своими надстройками!

13

Page 23: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

Если используете ETW – вам в PerfView

Можно расширить своими надстройками!

13

Page 24: Игорь Лабутин, 03.06public.jugru.org/dotnext/2016/spb/day_1/track_3/labutin.pdf · 15 лет в разработке С/С++: Windows, Linux, QNX, Embedded .NET – последние

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 – последние

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