Уже совсем скоро пройдёт .NET-конференция DotNext — а о чём там будут доклады-то? Программа готова, и делимся её описанием.
Главные тематические блоки прежние: best practices, архитектура, «внутренности» .NET, тренды. И снова будут воркшопы, уже зарекомендовавшие себя в онлайн-формате (удобно демонстрировать, как сделать что-то, когда зрители смотрят это за компьютерами и могут тут же попробовать сами).
А о том, из каких именно докладов в этот раз состоят блоки, рассказали сразу в двух форматах. Если предпочитаете читать — добро пожаловать под кат, а если любите слушать — для вас записали подкаст участники программного комитета Анатолий Кулаков, Андрей Акиньшин и Игорь Лабутин. В подкасте даже разыгрывают билет на DotNext и подписанные книги Джеффри Рихтера!
Содержание
Воркшопы
«Воркшоп: Build microservice applications the easy way», Edwin van Wijk
Dapr — опенсорсное решение, призванное упростить разработку микросервисных приложений. На DotNext можно будет научиться им пользоваться на наглядном примере.
В этом воркшопе вы узнаете о «готовых блоках», которые Dapr предоставляет разработчикам, и увидите их использование. Для примера будет создан условный интернет-магазин с использованием контейнеров, и будут показаны как преимущества от использования Dapr, так и ограничения. А затем участники смогут попробовать всё лично (от зрителей понадобятся установленные .NET 5 SDK и Visual Studio Code с рядом расширений).
Чем хорош спикер: Эдвин — автор многочисленных курсов на Pluralsight, что хорошо соответствует формату воркшопа.
Кому будет полезно: Тем, кто работает с микросервисами, но ещё не пробовал конкретно Dapr.
«Building Cloud Native applications with .NET 5 and AKS», Johnny Hooyberghs
Подробнейший воркшоп: по продолжительности как целых три доклада. С него участники выйдут с умением делать простейшие (и не только) приложения в облаке. Наглядно разберём на практике процесс создания cloud-native-приложений на .NET 5 и Azure Kubernetes Service. Участникам понадобятся .NET 5 SDK, Visual Studio Code, Docker Desktop и активная Azure-подписка с доступом к Azure Kubernetes Service.
Чем хорош спикер: Уже знаком нашей аудитории, приветлив в общении, легко и открыто отвечает на вопросы.
Кому будет полезно: Тем, кто никогда не писал облачные приложения на .NET, а также тем, кто уже делает это, но хочет посмотреть на свою работу под другим углом
«Воркшоп. Отладка post-mortem: Падения, зависания и остальные радости продакшена», Михаил Ярийчук
Вам звонят среди ночи с хорошими новостями: приложение зависло в продакшне, загрузка CPU 100%, надо срочно лечить! Знаете, что будете делать?
Если плана спасения у вас нет — приходите на воркшоп Михаила Ярийчука. Он не только расскажет о возможных симптомах и причинах таких проблем, но и покажет на практике, как это исследовать.
Чем хорош спикер: У Михаила много интересного опыта — например, он вложил много сил в развитие ядра RavenDB.
Кому будет полезно: Тем, кто хоть раз сталкивался с проблемами загруженного CPU, зависаниями и неожиданными падениями системы в production, но ещё не знает, как это исследовать и лечить.
Best practices
«The new inter-language interoperability in .NET 5 and 6», Raffaele Rialdi
В наше кроссплатформенное время вопрос взаимодействия разных языков становится актуальнее, чем когда-либо. Долгое время вызовы нативных API на .NET требовали нетривиальных действий, и задачу облегчали только наработки энтузиастов. Теперь Microsoft показала красивое решение, использующее новые фишки Roslyn (source generators). Рафаэль Риальди расскажет, как теперь можно обойтись без P/Invoke и C++/CLI.
Чем хорош спикер: Рафаэль является не только большим знатоком .NET и многократным MVP, но и одним из авторов книги про C# и создание эффективных программ.
Кому будет полезно: Всем, кто использует вызовы нативных API из C# (и через P/Invoke и через C++/CLI).
«gRPC в .NET — рецепты счастья», Михаил Кузнецов
Массовый переход от монолитов к микросервисам решает одни проблемы, но создаёт другие: взаимодействие сервисов существенно сложнее и дороже, чем взаимодействие объектов в памяти. Частично упростить это взаимодействие можно с помощью протокола gRPC.
gRPC даёт возможность зафиксировать в репозитории контракты межсервисных вызовов, строгую типизацию, стриминг, кроссплатформенную кодогенерацию и много других полезных для межсервисного общения вещей.
Михаил расскажет о том, когда стоит применять gRPC, а когда лучше воздержаться на основе своего опыта, как решаются типичные задачи (конфигурирование, отладка, healthcheck и т.д.) и о чём умалчивает документация.
«Точечная переработка драйвера MongoDB для многократного увеличения производительности», Станислав Сидристый
Продолжая тему исправления чужих ошибок с целью повышения производительности, Станислав расскажет о группе техник, при помощи которых его команда достигла многократного увеличения производительности оригинального драйвера MongoDB.
И чтобы доклад был максимально полезным, будут раскрыты все шаги, начиная от осознания, разработки PoC-проекта и заканчивая результатом. Тут будут и MemoryPools, и Source Generators, и целый ряд микрооптимизаций.
Чем хорош спикер: Станислав является знатным экспертом в области анализаторов кода, низкоуровневых оптимизаций и подкапотного устройства .NET (в частности, он автор онлайн-книги .NET Platform Architecture, получившей распространение благодаря переводу на английский и китайский языки).
«Простая и быстрая реализация парсеров на C#», Карлен Симонян
Создание парсеров и лексических анализаторов — затратное по времени дело. Обычно к ним прибегают при необходимости реализации различного рода формальных грамматик, в том числе предметно-ориентированных языков (DSL). Наиболее очевидным выбором среди доступных инструментов на .NET является генератор парсеров ANTLR.
В докладе мы попробуем обойтись без его использования. Рассмотрим реализацию RFC 4515 (ex RFC 2254) aka LDAP Search filters за менее чем 100 строк кода через LINQ-подобный синтаксис при помощи библиотеки Pidgin. А также произведем измерение производительности получившегося парсера и его сравнение с аналогами.
Чем хорош спикер: Карлен является экспертом в подкапотном устройстве .NET, сейчас работает с security. Также Карлен известен на Хабре своими статьями под ником szKarlen. Является автором atomics.net
Кому будет полезно: Тем, кто хочет написать парсер для решения задач, но не знает, с чего начать. Тем, кто уже раньше писал более сложные анализаторы на ANTLR и хочется чего-то "полегче".
«Миграция приложения с MS SQL Server на PostgreSQL», Станислав Флусов
В своем докладе автор расскажет историю миграции с MS SQL на PostgreSQL большого энтерпрайз-приложения, которое не останавливалось ни на минуту в ходе этого процесса. Естественно, на этом непростом пути возникали подводные камни, о преодолении которых автор с удовольствием расскажет. Структура доклада:
- Стоимость владения — когда софт дороже железа.
- Инструменты для работы с PostgreSQL.
- Инструменты мониторинга.
- Миграция схемы данных и подводные камни.
- Разница в синтаксисе.
- Миграция схемы и данных средствами efCore.
- Результаты нагрузочного тестирования.
- Синхронизация и проверка целостности данных.
Чем хорош спикер: Он прошёл тему по всему периметру: выбор, оценка, планирование, техническая миграция существующего продукта, сбор метрик и анализ итогов. Может рассказать как про сэкономленные деньги, так и про удовлетворенность разработчиков.
Чем хороша тема: Причин миграции довольно много (сокращение расходов, использование БД из реестра государственного ПО, увеличение производительности системы хранения данных). А вот технический путь один, и освещён он слабо.
«Advanced Dapr», Edwin van Wijk, Sander Molenkamp
Для тех, кто ранее не сталкивался с Dapr, на конференции будет воркшоп — его уже описали выше. А вот если базовые вещи о Dapr вы уже знаете, и хотите подробностей — приходите на доклад Эдвина ван Вейка и Сандера Моленкампа. Они будут рассказывать про продвинутые штуки: безопасность и авторизацию, rate limiting, интеграции с фреймворками вроде Azure API Management и Logic Apps.
Чем хорош спикер: Эдвин (и его ко-спикер) — автор многочисленных курсов на Pluralsight, много презентует и всегда готовит отличные реалистичные примеры для своих проектов/презентаций.
Чем хороша тема: Реализация приложения с помощью контейнеров сейчас актуальна, и Dapr может быть полезен многим. Но если о микросервисах и контейнеризации в целом есть уже много докладов, то вот конкретно о Dapr — куда меньше.
«Могу ли я спрыгнуть с F5-корабля прямиком в гиперпространство в реальном времени?», Александр Якунин
Проектирование сложного распределённого realtime UI — всё ещё не решённая и сложная задача. Александр Якунин считает, что ему удалось приблизиться к идеалу. Рекомендуем сходить на его доклад всем, кто хочет посмотреть под капот современным UI-движкам, узнать о самых модных моделях проектирования и навсегда забыть о боли медленных неповоротливых интерфейсов.
Чем хорош спикер: Спикер является автором библиотеки Stl.Fusion, показывающей удивительные характеристики как по производительности, так и по удобной организации кода.
Кому будет полезно: Всем, кто хочет посмотреть под капот современным UI-движкам, узнать о самых модных моделях проектирования и навсегда забыть о боли медленных неповоротливых UI'ев.
«Introduction to the Microsoft identity platform for developers», Christos Matskas
Если вам приходилось по работе иметь дело с авторизацией/аутентификацией, то это доклад для вас. Здесь будет рассказано об имплементации этих вещей с помощью платформы Microsoft Identity. Как использовать библиотеки из своего любого языка, чтобы быстро подключиться к Azure Active Directore и аутентифицировать пользователей в своём приложении — всё это будет не просто объяснено на словах, а показано на примере конкретных демо.
«Наблюдаемость систем и процессов», Филипп Бочаров
Для сложных распределённых систем, поддерживаемых множеством команд, просто необходимо уметь быстро оценивать состояние системы и получать информацию о каждом аспекте ее работы. Наблюдаемость системы становится необходимым условием качества, но её полноценная реализация содержит множество подводных камней.
В докладе Филипп раскроет понятие наблюдаемости и покажет, как выжать из нее максимум пользы. Детально обсудим распределённую трассировку процессов, логирование и сбор метрик. Акцент будет на подходах и открытых стандартах, но также Филипп упомянет опыт и инструменты, используемые командой в МТС.
Тренды
«Building a cross-platform 2D game with MonoGame and C#», Pavel Yosifovich
Конечно, мы тут все серьёзные люди, но кто из разработчиков никогда в жизни не хотел написать собственную игру?
Павел Йосифович известен в первую очередь как автор отличных книг про внутренности Windows, но в этот раз выступит с докладом на совсем другую тему. Он покажет весь путь создания кроссплатформенной 2D-игрушки на фреймворке MonoGame, включая игровые механики, спрайты, анимацию, звук и всё остальное. К концу доклада вы поймёте многое и про геймдев в целом, и про MonoGame в частности.
Чем хорош спикер: Автора «Windows Internals» особо представлять не требуется — добавим только, что и спикер он опытный.
Кому будет полезно: Всем, кому .NET интересен не только как работа, но и как инструмент для хобби-проектов.
«Blazor сomponents deep dive», Roland Guijt
У нас уже были обзорные доклады про Blazor, и технология продолжает активно развиваться — пришло время погружаться глубже.
Роланд Хаут детально расскажет, как делать Blazor-компоненты и каких подводных камней стоит опасаться.
После этого доклада у вас появится ачивка "Advanced Blazor Components", и ваши Blazor-приложения перейдут на новый уровень.
Чем хорош спикер: Автор курсов Pluralsight, доходчиво рассказывает.
Кому будет полезно: Если вы уже знаете о Blazor и задумываетесь о более детальном погружении — в докладе будет рассказано, как делать компоненты и какие подводные камни могут встретиться.
«Фронтенд на функциональном языке? Подержите мое пиво!», Вагиф Абилов
Вагиф — разработчик бэкенда, как и многие из вас. Что ему делать, когда нужно показать какие-нибудь данные? Написать программу для консоли (вздох)? Или, может быть, выучить CSS и JavaScript (глубокий вздох)? В своих ежедневных задачах Вагиф использует F# и функциональное программирование. Поэтому, когда он услышал про паттерн MVU и функциональный подход к разработке интерфейса пользователя, реализованный в языке Elm и перенесенный в F# библиотеками Fable и Elmish, то решил попробовать это в своих проектах.
Что у спикера вышло? Получилось ли в действительности написать нормальное веб-приложении на F#? Приходите на доклад Вагифа и судите сами.
Чем хорош спикер: Один из самых опытных докладчиков DotNext, известный своими практичными докладами про F#
Кому будет полезно: Всем любящим F# или ненавидящим JS
«Introduction to open source Uno Platform», Jérôme Laban
Разработка кроссплатформенных приложений для Windows, iOS, macOS, Android и WebAssembly может быть сложным процессом. И особенно в том, что касается UI: у каждой платформы свои подходы к этому. Тут и может пригодиться опенсорсная Uno Platform, позволяющая .NET-разработчикам применять на всех этих платформах их навыки в C# и XAML.
Чем хорош спикер: Жером Лабан — CTO и один из разработчиков Uno Platform.
Кому будет полезно: .NET-разработчикам, которым нужен кроссплатформенный UI.
Архитектура
«Designing with capabilities», Scott Wlaschin
Скотт рассмотрит нестандартный подход к проектированию приложений, где в разработке применяется принцип минимальных привилегий. Хотя подход и нетипичный, цели в нём преследуются понятные всем разработчикам: например, чтобы API получались «самодокументирующимися», и их было сложно использовать неправильно.
Спикер известен как сторонник F#, и примеры в докладе будут на этом языке — но полезные выводы смогут извлечь не только сторонники функционального программирования.
Чем хорош спикер: Автор множества популярных докладов, самого известного сайта по F# и отличной книги по функциональному DDD.
Кому будет полезно: Всем, интересующимся дизайном приложений и не боящимся примеров на F#.
«9 способов улучшить архитектуру вашего проекта при помощи CQRS и vertical slices», Денис Цветцих
Логика большинства проектов реализуется «горизонтально» в виде слоя ApplicationServices. Однако существует альтернативный подход, когда для каждого юзкейса создается отдельный класс-хендлер. Чаще всего такой подход используется вместе с CQRS, когда система распиливается на стеки чтения и записи ради повышения производительности. Джимми Богард назвал этот же подход vertical slices. Многие разработчики слышали о нем, но не используют, так как не могут ответить на вопрос: «стоит ли использовать хендлеры, если мы не боремся за производительность при помощи CQRS?»
В докладе Денис покажет 9 преимуществ, которые дают вертикальные хендлеры/слайсы по сравнению с привычными горизонтальными слоями. А также он поделится опытом перехода с сервисов на слайсы.
Чем хорош спикер: Денис — опытный спикер, причём именно по вопросам архитектуры больших приложений.
Чем хороша тема: Классическая слоёная архитектура разжёвана вдоль и поперек. Однако есть и другие подходы, которые в определенных случаях могут оказаться очень полезными. Vertical Slices, активно продвигаемый Джимми Богардом, — один из них.
«Боремся с сетевым оверхедом в распределённых системах: Эффективный подход к работе с данными», Павел Тупицын
Современные приложения состоят из множества подсистем: базы данных, кеши, брокеры сообщений. Для обработки одного запроса от пользователя сервер может выполнять десятки внутренних подзапросов. Вы скажете — современные сети очень быстры, оверхед минимален! На живых демках увидим, что это не так, и поговорим о том, как улучшить локальность, сократить затраты на сетевой обмен и упростить масштабирование, применяя эффективную архитектуру данных. Тема DataGrid-систем совсем не раскрыта в мире .NET — пришло время это исправить.
Чем хорош спикер: Павел является одним из разработчиков самой популярной DataGrid-системы — Apache Ignite. Он специализируется на .NET-клиенте и может рассказать всё с самых низов.
Кому будет полезно: Кто хочет узнать, что за зверь «DataGrid», в каких условиях его можно использовать и какие проблемы он может решить. А также научиться использовать основной функционал Ignite из своего .NET-кода.
Internals
«Тайна динамических сборок», Игорь Шаталкин
Представим, что время прогона модульных тестов выросло в разы, начав мешать разработке. Профайлер показывает первого подозреваемого — библиотеку Moq, долго создающую заглушки. Но команда недовольна перспективой замены заглушек на самописные классы: в Moq много продвинутых возможностей, которые не так-то просто реализовать самостоятельно.
За дело берётся C#-сыщик, и теперь подозреваются все: Moq, NUnit, Castle.DynamicProxy и даже сам Reflection.Emit! Поможет ли замена Moq на NSubstitute? NUnit на xUnit? Во время расследования авторы продемонстрируют принципы работы с профайлером, особенности библиотек заглушек (Moq, NSubstitute) и тестовых фреймворков (NUnit, xUnit). Будет показано, как создавать динамические типы через Reflection.Emit и как работать с Castle.DynamicProxy. Но удастся ли раскрыть тайну динамических сборок, скрывающуюся в глубинах clr.dll?
Чем хорош спикер: Спикер проявил себя как умелый пользователь инструментами отладки.
Кому будет полезно: Доклад для начинающих: всех, кто хочет научиться пользоваться базовыми инструментами отладки, диагностики и логического мышления при расследовании странного поведения своих программ.
«Debugging one layer deeper», Kevin Gosse
Предыдущий доклад в списке рассчитан на тех, кто ещё не погружался в отладку глубоко — а вот здесь всё хардкорнее.
.NET-разработчики привыкли к тому комфорту, который даёт им платформа, скрывая от них много низкоуровневых сложностей. Но что делать, когда сталкиваешься с таким хитрым багом, что приходится отправляться в нативный мир? Кевин расскажет, как спускаться на уровень ниже и работать с особенно хитрыми случаями — вплоть до багов прямо в CLR. В докладе будут затронуты WinDBG, LLDB, реверс-инжиниринг языка ассемблера и погружение в «кишочки» рантайма .NET.
Чем хорош спикер: Кевин — известный блоггер и докладчик. Всегда копает очень глубоко, любит инструменты вроде WinDBG.
Кому будет полезно: Тем, кто хочет разобраться в деталях отладки нативного кода и платформы .NET, используя низкоуровневые отладчики.
«A deep dive into a database engine internals», Oren Eini
Разработчики постоянно пользуются базами данных — но знают ли о том, что у них внутри? RavenDB — редкий случай базы данных, написанной на .NET (и самый популярный из таких случаев). Из доклада её основателя Орена Эйни можно будет и узнать о том, что конкретно у неё под капотом, и лучше понять, как вообще устроены движки БД.
Чем хорош спикер: Основатель компании Hibernating Rhinos, которая разрабатывает RavenDB — NoSQL-базу данных, написанную на платформе .NET. Освещает тему в своём блоге https://ayende.com/blog/.
Кому будет полезно: Всем, кому интересно, как устроена БД изнутри (и как реализовать БД на .NET, чтобы работало быстро).
«Unlocking performance improvements in .NET», Stephen Toub
Команда разработки .NET уделяет много внимания производительности, и при работе над каждым новым релизом много энергии вкладывается именно в то, чтобы всё работало быстрее и скалировалось лучше. В этом докладе Стивен продемонстрирует конкретные примеры изменений, которые каким-либо образом улучшали производительность .NET, и опишет, как именно от этого могут выигрывать .NET-приложения.
Чем хорош спикер: Докладчик из Microsoft, и его основная роль — как раз работа над ускорением .NET.
Кому будет полезно: Всем, кому небезразлична тема производительности. В докладе расскажут не только что сделали в .NET, а как это можно применять в обычных приложениях тоже.
«Behind modern concurrency primitives», Bartosz Sypytkowski
Сегодня многопоточность является актуальной темой для очень многих разработчиков — и при этом она остаётся сложной, проблем с ней хватает. Поэтому Бартош Сипитковский поговорит о паттернах в современном многопоточном программировании, о том, как библиотеки и фреймворки используют ресурсы системы, чем чреват выбор того или иного подхода, как многопоточность реализована в разных рантаймах и компиляторах.
Чем хорош спикер: Бартош зарекомендовал себя как хороший докладчик на международных конференциях, а знакомые с Akka.NET знают его как одного из активных контрибьюторов и автора библиотеки Akkling.
Кому будет полезно: Всем, кому важна многопоточность (а кому она сейчас не важна-то).
Напоследок
Что стоит учесть, помимо тем докладов, чтобы принять решение «участвовать ли в конференции»?
То, что даже в онлайн-формате конференция — это не только «сидеть и слушать»:
- После каждого доклада можно как следует позадавать спикеру вопросы в специальном видеосозвоне.
- Есть и общий конференционный чат, и отдельные чаты по всем докладам.
- А проходит всё на виртуальной площадке, где можно «подойти» к другим участникам и пообщаться с помощью веб-камер:
И напоследок напоминаем даты: 20-23 апреля, онлайн.
Дополнительная информация и билеты — на сайте.