Разрабатывать большие продукты непросто. Когда сложность задач и нагрузка на приложения растёт с каждым днем, старые подходы и практики иногда уже не спасают. Могут ли системы на базе асинхронного обмена сообщениями быть той серебряной пулей, которая решит все наши проблемы?
В докладе я отвечу на этот вопрос, а также расскажу, какие подходы лежат в основе таких систем и что выбрать в мире .Net для их реализации. Мы поговорим о том, какие задачи помогут решить такие подходы и чего стоит избегать при их использовании.
Moscow .Net Meetup #3·13 октября 2016
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Yulia Tsisyk
Сегодня на .NET-конференциях мы все чаще мы слышим про WinDBG, но в тоже время он все еще остается в стороне среди .NET-разработчиков, считается крайне специфичным и даже ненужным инструментом.
В докладе мы попробуем привнести альтернативный взгляд. Покажем как выстроить процесс сбора дампов, их анализа и исправления, встроить его в жизненный цикл разработки вашего приложения, сделав неотъемлемой частью для диагностики как рядовых, так и уникальных случаев. Затем рассмотрим группы основных проблем (deadlocks, out of memory, access violation, logical errors, etc.), которые могут произойти с вашим приложением, и инструменты для их анализа. И, конечно же, разберем примеры каждой из проблем, которые встретились нам на практике в наших продуктах, в коде .NET и WPF:
— Как при помощи флэшки «повесить» WPF-приложение?
— Безопасно ли вызывать DateTime.Now?
и другие жизненные ситуации.
Moscow .Net Meetup #4·14 ноября 2016
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Yulia Tsisyk
В докладе будут рассмотрены приемы оптимизации приложений на платформе .NET, в большей степени специфичные для desktop приложений. Тем не менее, представителям других направлений тоже будет что почерпнуть.
Для достижения максимальной скорости запуска приложения или поднятия из swap'а иногда приходится обращаться к нестандартным подходам, которые, на первый взгляд, могут идти наперекор общепринятой практике (например, отказ от emit в пользу reflection). Каждая из оптимизаций, начиная от устройства CLR, заканчивается анализом в xperf отдельных IO операций, будет подобно разобрана. В качестве результатов будут представлены показатели реальных продуктов.
Moscow .Net Meetup #4·14 ноября 2016
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
Ни один современный продукт не обходится без API. Этот API может быть внешним, для публичного использования, а может быть сугубо внутренним, но требования к созданию расширяемого, версионируемого, тестируемого, документированного программного интерфейса очень похоже. В этом докладе мы поговорим о том, как создавать подобные API на основе REST, какие существуют best-practices, чего следует избегать, на что обращать внимание при проектировании.
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»Yulia Tsisyk
докладе речь пойдёт о том, какие выбрать механизмы аутентификации и авторизации в приложении. Вячеслав поделится опытом использования IdentityServer и продемонстрирует способы его применения.
В любой программе разработчики сталкиваются с необходимостью обработки ошибок. Основной механизм работы с ошибками в .NET Framework — это исключения. Мы поговорим о преимуществах и недостатках их использования. Вы узнаете, используются ли исключения для обработки ошибок в программном обеспечении марсохода NASA, а также о том, какие способы обработки исключений имеются в нашем распоряжении. Также обсудим, можно ли не использовать исключения для обработки ошибочных ситуаций. Приходите, будет интересно.
Moscow .Net Meetup #3
13 октября 2016
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
MSK DOT NET #5
2016-12-07
In this talk Adam will describe how latest changes in.NET are affecting performance.
Adam wants to go through:
C# 7: ref locals and ref returns, ValueTuples.
.NET Core: Spans, Buffers, ValueTasks
And how all of these things help build zero-copy streams aka Channels/Pipelines which are going to be a game changer in the next year.
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Yulia Tsisyk
Доклад с митапа MSK .NET Community (http://mskdotnet.org).
В современном мире уже нельзя писать код, который работает на одном компьютере на одном процессорном ядре и имеет монопольный доступ к данным. Опытом борьбы с трудностями при написании многопоточного кода поделится Никита Цуканов.
Доклад "Параллелизм и распределённые вычисления на акторах с Akka.NET" рассчитан на неподготовленного слушателя, ранее не имевшего дело с акторами, и является улучшенной и дополненной версией доклада с питерского DotNext. 11 августа речь пойдёт непосредственно об акторной модели и её реализации в Akka.NET, особенностях юнит-тестирования, акторах с сохраняемым состоянием, а так же об интеграции всей этой машинерии с имеющимся приложением и ASP.NET.
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Yulia Tsisyk
Сегодня на .NET-конференциях мы все чаще мы слышим про WinDBG, но в тоже время он все еще остается в стороне среди .NET-разработчиков, считается крайне специфичным и даже ненужным инструментом.
В докладе мы попробуем привнести альтернативный взгляд. Покажем как выстроить процесс сбора дампов, их анализа и исправления, встроить его в жизненный цикл разработки вашего приложения, сделав неотъемлемой частью для диагностики как рядовых, так и уникальных случаев. Затем рассмотрим группы основных проблем (deadlocks, out of memory, access violation, logical errors, etc.), которые могут произойти с вашим приложением, и инструменты для их анализа. И, конечно же, разберем примеры каждой из проблем, которые встретились нам на практике в наших продуктах, в коде .NET и WPF:
— Как при помощи флэшки «повесить» WPF-приложение?
— Безопасно ли вызывать DateTime.Now?
и другие жизненные ситуации.
Moscow .Net Meetup #4·14 ноября 2016
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Yulia Tsisyk
В докладе будут рассмотрены приемы оптимизации приложений на платформе .NET, в большей степени специфичные для desktop приложений. Тем не менее, представителям других направлений тоже будет что почерпнуть.
Для достижения максимальной скорости запуска приложения или поднятия из swap'а иногда приходится обращаться к нестандартным подходам, которые, на первый взгляд, могут идти наперекор общепринятой практике (например, отказ от emit в пользу reflection). Каждая из оптимизаций, начиная от устройства CLR, заканчивается анализом в xperf отдельных IO операций, будет подобно разобрана. В качестве результатов будут представлены показатели реальных продуктов.
Moscow .Net Meetup #4·14 ноября 2016
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
Ни один современный продукт не обходится без API. Этот API может быть внешним, для публичного использования, а может быть сугубо внутренним, но требования к созданию расширяемого, версионируемого, тестируемого, документированного программного интерфейса очень похоже. В этом докладе мы поговорим о том, как создавать подобные API на основе REST, какие существуют best-practices, чего следует избегать, на что обращать внимание при проектировании.
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»Yulia Tsisyk
докладе речь пойдёт о том, какие выбрать механизмы аутентификации и авторизации в приложении. Вячеслав поделится опытом использования IdentityServer и продемонстрирует способы его применения.
В любой программе разработчики сталкиваются с необходимостью обработки ошибок. Основной механизм работы с ошибками в .NET Framework — это исключения. Мы поговорим о преимуществах и недостатках их использования. Вы узнаете, используются ли исключения для обработки ошибок в программном обеспечении марсохода NASA, а также о том, какие способы обработки исключений имеются в нашем распоряжении. Также обсудим, можно ли не использовать исключения для обработки ошибочных ситуаций. Приходите, будет интересно.
Moscow .Net Meetup #3
13 октября 2016
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
MSK DOT NET #5
2016-12-07
In this talk Adam will describe how latest changes in.NET are affecting performance.
Adam wants to go through:
C# 7: ref locals and ref returns, ValueTuples.
.NET Core: Spans, Buffers, ValueTasks
And how all of these things help build zero-copy streams aka Channels/Pipelines which are going to be a game changer in the next year.
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Yulia Tsisyk
Доклад с митапа MSK .NET Community (http://mskdotnet.org).
В современном мире уже нельзя писать код, который работает на одном компьютере на одном процессорном ядре и имеет монопольный доступ к данным. Опытом борьбы с трудностями при написании многопоточного кода поделится Никита Цуканов.
Доклад "Параллелизм и распределённые вычисления на акторах с Akka.NET" рассчитан на неподготовленного слушателя, ранее не имевшего дело с акторами, и является улучшенной и дополненной версией доклада с питерского DotNext. 11 августа речь пойдёт непосредственно об акторной модели и её реализации в Akka.NET, особенностях юнит-тестирования, акторах с сохраняемым состоянием, а так же об интеграции всей этой машинерии с имеющимся приложением и ASP.NET.
Демонстрация работы интеллектуальной подсистемы управления в многоуровневой сетиCisco Russia
Многоуровневая подсистема управления (aka SDN).
Автоматизация включения сервисов средствами Cisco MATE иGMPLS.
Повышение надежности сети с помощью оптического восстановления.
Оптимизация работы многоуровневой сети.
Демонстрация работы интеллектуальной подсистемы управления в многоуровневой сетиCisco Russia
Многоуровневая подсистема управления (aka SDN).
Автоматизация включения сервисов средствами Cisco MATE иGMPLS.
Повышение надежности сети с помощью оптического восстановления.
Оптимизация работы многоуровневой сети.
9. MESSAGING
9
MSK .NET MEETUP #3
- АСИНХРОННОСТЬ ВЗАИМОДЕЙСТВИЯ
- ЧЕТКО ОПРЕДЕЛЕННЫЙ КОНТРАКТ
- МИНИМИЗИРОВАНА СВЯЗАННОСТЬ (COUPLING)
- УСТОЙЧИВОСТЬ К ОШИБКАМ (FAULT TOLERANCE)
- СВЕЖЕСТЬ ДАННЫХ (DATA FRESHNESS)
КАКИЕ ПЛЮСЫ
10. НЕМНОГО ИСТОРИИ
Первые messaging системы – TIBCO, IBM MQ.
RabbitMQ, Apache QPID, Kafka, Azure Service Bus NServiceBus MassTransit
MSMQ - messaging system от Microsoft Стандартизация – JMS, AMQP, MQTT.
1980 - 1990е 1997e 2000e
2000e – наше время 2007, 2015 – версия 3.0
10
MSK .NET MEETUP #3
2000 - 2010
17. КОМПОНЕНТЫ
17
MSK .NET MEETUP #3
СООБЩЕНИЯ (КОНТРАКТЫ) – КОМАНДЫ И СОБЫТИЯ
CreateCustomer, WorkItemCreated
IBUS – ШИНА, СОЗДАЕТСЯ ПРИ СТАРТЕ
bus.Publish(…)
CONSUMERS – ПОЛУЧАЮТ И ОБРАБАТЫВАЮТ СООБЩЕНИЯ
IConsumer(ConsumeContext)
21. РАБОТА НАД
ОШИБКАМИ
МОЖНО ПОДПИСЫВАТЬСЯ НА ОШИБКИ
21
MSK .NET MEETUP #3
public class FaultConsumer : IConsumer<Fault<UpdateCustomerAddress>>
{
public async Task Consume(ConsumeContext<Fault<UpdateCustomerAddress>> context)
{
var originalMessage = context.Message.Message;
var exceptions = context.Message.Exceptions;
//Do something interesting.
}
}
25. САГИLONG RUNNING PROCESS
• Сага – распределенный процесс с общим координатором
• Состоят из действий, событий и состояния
• Сохраняются в репозитории
• Описывается как конечный автомат
25
MSK .NET MEETUP #3
29. COURIER
29
MSK .NET MEETUP #3
ROUTING SLIP
• Карта маршрутизации (EIP)
• Позволяет динамически определять маршрут обработки сообщения
• Routing slip включает с себя маршрут (Itinerary). Itinerary - это список
Activity
• Этот маршрут вместе с сообщением отправляется по шине
• Каждая activity имеет два метода: execute, compensate.
34. ЧТО ЕЩЕ
1. Отложенная отправка (scheduling)
через Quartz .Net
2. Сообщения как Streams через Reactive
Extensions
3. Unit tests через встроенный
framework для тестирования
4. Счетчики производительности
5. Turnouts – долгоживущие consumers
6. Request-reply – двухсторонее
взаимодействие
7. Greenpipes – pipes & filters
8. Поддержка ioc контейнеров
34
MSK .NET MEETUP #3
35. В ЗАКЛЮЧЕНИИ
1. Расширяемость
2. Просто обеспечить надежность
3. Легко масштабировать
4. Другая модель взаимодействия
5. В RPC клиент может контролировать что ему нужно
6. RPC есть практически везде, messaging нет
7. Не знаем когда работает или нет
8. Можно комбинировать
35
MSK .NET MEETUP #3
MESSAGING VS RPC