Уже совсем скоро пройдёт .NET-конференция DotNext — а о чём там будут доклады-то? Программа готова, и делимся её описанием. Главные тематические блоки прежние: best practices, архитектура, «внутренности» .NET, тренды. И снова будут воркшопы, уже зарекомендовавшие себя в онлайн-формате (удобно демонстрировать, как сделать что-то, когда зрители смотрят это за компьютерами и могут тут же попробовать сами). А о том, из каких именно докладов в этот раз состоят блоки, рассказали сразу в двух форматах. Если предпочитаете читать — добро пожаловать под кат, а если любите слушать — для вас записали подкаст участники программного комитета Анатолий Кулаков, Андрей Акиньшин и Игорь Лабутин. В подкасте даже разыгрывают билет на DotNext и подписанные книги Джеффри Рихтера! Dapr — опенсорсное решение, призванное упростить разработку микросервисных приложений. На DotNext можно будет научиться им пользоваться на наглядном примере. В этом воркшопе вы узнаете о «готовых блоках», которые Dapr предоставляет разработчикам, и увидите их использование. Для примера будет создан условный интернет-магазин с использованием контейнеров, и будут показаны как преимущества от использования Dapr, так и ограничения. А затем участники смогут попробовать всё лично (от зрителей понадобятся установленные .NET 5 SDK и Visual Studio Code с рядом расширений). Чем хорош спикер: Эдвин — автор многочисленных курсов на Pluralsight, что хорошо соответствует формату воркшопа.
Кому будет полезно: Тем, кто работает с микросервисами, но ещё не пробовал конкретно Dapr. Подробнейший воркшоп: по продолжительности как целых три доклада. С него участники выйдут с умением делать простейшие (и не только) приложения в облаке. Наглядно разберём на практике процесс создания cloud-native-приложений на .NET 5 и Azure Kubernetes Service. Участникам понадобятся .NET 5 SDK, Visual Studio Code, Docker Desktop и активная Azure-подписка с доступом к Azure Kubernetes Service. Чем хорош спикер: Уже знаком нашей аудитории, приветлив в общении, легко и открыто отвечает на вопросы.
Кому будет полезно: Тем, кто никогда не писал облачные приложения на .NET, а также тем, кто уже делает это, но хочет посмотреть на свою работу под другим углом Вам звонят среди ночи с хорошими новостями: приложение зависло в продакшне, загрузка CPU 100%, надо срочно лечить! Знаете, что будете делать?
Если плана спасения у вас нет — приходите на воркшоп Михаила Ярийчука. Он не только расскажет о возможных симптомах и причинах таких проблем, но и покажет на практике, как это исследовать. Чем хорош спикер: У Михаила много интересного опыта — например, он вложил много сил в развитие ядра RavenDB.
Кому будет полезно: Тем, кто хоть раз сталкивался с проблемами загруженного CPU, зависаниями и неожиданными падениями системы в production, но ещё не знает, как это исследовать и лечить. В наше кроссплатформенное время вопрос взаимодействия разных языков становится актуальнее, чем когда-либо. Долгое время вызовы нативных API на .NET требовали нетривиальных действий, и задачу облегчали только наработки энтузиастов. Теперь Microsoft показала красивое решение, использующее новые фишки Roslyn (source generators). Рафаэль Риальди расскажет, как теперь можно обойтись без P/Invoke и C++/CLI. Чем хорош спикер: Рафаэль является не только большим знатоком .NET и многократным MVP, но и одним из авторов книги про C# и создание эффективных программ.
Кому будет полезно: Всем, кто использует вызовы нативных API из C# (и через P/Invoke и через C++/CLI).  Массовый переход от монолитов к микросервисам решает одни проблемы, но создаёт другие: взаимодействие сервисов существенно сложнее и дороже, чем взаимодействие объектов в памяти. Частично упростить это взаимодействие можно с помощью протокола gRPC.
gRPC даёт возможность зафиксировать в репозитории контракты межсервисных вызовов, строгую типизацию, стриминг, кроссплатформенную кодогенерацию и много других полезных для межсервисного общения вещей. Михаил расскажет о том, когда стоит применять gRPC, а когда лучше воздержаться на основе своего опыта, как решаются типичные задачи (конфигурирование, отладка, healthcheck и т.д.) и о чём умалчивает документация. Продолжая тему исправления чужих ошибок с целью повышения производительности, Станислав расскажет о группе техник, при помощи которых его команда достигла многократного увеличения производительности оригинального драйвера MongoDB. И чтобы доклад был максимально полезным, будут раскрыты все шаги, начиная от осознания, разработки PoC-проекта и заканчивая результатом. Тут будут и MemoryPools, и Source Generators, и целый ряд микрооптимизаций. Чем хорош спикер: Станислав является знатным экспертом в области анализаторов кода, низкоуровневых оптимизаций и подкапотного устройства .NET (в частности, он автор онлайн-книги .NET Platform Architecture, получившей распространение благодаря переводу на английский и китайский языки).  Создание парсеров и лексических анализаторов — затратное по времени дело. Обычно к ним прибегают при необходимости реализации различного рода формальных грамматик, в том числе предметно-ориентированных языков (DSL). Наиболее очевидным выбором среди доступных инструментов на .NET является генератор парсеров ANTLR. В докладе мы попробуем обойтись без его использования. Рассмотрим реализацию RFC 4515 (ex RFC 2254) aka LDAP Search filters за менее чем 100 строк кода через LINQ-подобный синтаксис при помощи библиотеки Pidgin. А также произведем измерение производительности получившегося парсера и его сравнение с аналогами. Чем хорош спикер: Карлен является экспертом в подкапотном устройстве .NET, сейчас работает с security. Также Карлен известен на Хабре своими статьями под ником szKarlen. Является автором atomics.net
Кому будет полезно: Тем, кто хочет написать парсер для решения задач, но не знает, с чего начать. Тем, кто уже раньше писал более сложные анализаторы на ANTLR и хочется чего-то "полегче". В своем докладе автор расскажет историю миграции с MS SQL на PostgreSQL большого энтерпрайз-приложения, которое не останавливалось ни на минуту в ходе этого процесса. Естественно, на этом непростом пути возникали подводные камни, о преодолении которых автор с удовольствием расскажет. Структура доклада: Чем хорош спикер: Он прошёл тему по всему периметру: выбор, оценка, планирование, техническая миграция существующего продукта, сбор метрик и анализ итогов. Может рассказать как про сэкономленные деньги, так и про удовлетворенность разработчиков.
Чем хороша тема: Причин миграции довольно много (сокращение расходов, использование БД из реестра государственного ПО, увеличение производительности системы хранения данных). А вот технический путь один, и освещён он слабо. Для тех, кто ранее не сталкивался с Dapr, на конференции будет воркшоп — его уже описали выше. А вот если базовые вещи о Dapr вы уже знаете, и хотите подробностей — приходите на доклад Эдвина ван Вейка и Сандера Моленкампа. Они будут рассказывать про продвинутые штуки: безопасность и авторизацию, rate limiting, интеграции с фреймворками вроде Azure API Management и Logic Apps. Чем хорош спикер: Эдвин (и его ко-спикер) — автор многочисленных курсов на Pluralsight, много презентует и всегда готовит отличные реалистичные примеры для своих проектов/презентаций.
Чем хороша тема: Реализация приложения с помощью контейнеров сейчас актуальна, и Dapr может быть полезен многим. Но если о микросервисах и контейнеризации в целом есть уже много докладов, то вот конкретно о Dapr — куда меньше. Проектирование сложного распределённого realtime UI — всё ещё не решённая и сложная задача. Александр Якунин считает, что ему удалось приблизиться к идеалу. Рекомендуем сходить на его доклад всем, кто хочет посмотреть под капот современным UI-движкам, узнать о самых модных моделях проектирования и навсегда забыть о боли медленных неповоротливых интерфейсов. Чем хорош спикер: Спикер является автором библиотеки Stl.Fusion, показывающей удивительные характеристики как по производительности, так и по удобной организации кода.
Кому будет полезно: Всем, кто хочет посмотреть под капот современным UI-движкам, узнать о самых модных моделях проектирования и навсегда забыть о боли медленных неповоротливых UI'ев. Если вам приходилось по работе иметь дело с авторизацией/аутентификацией, то это доклад для вас. Здесь будет рассказано об имплементации этих вещей с помощью платформы Microsoft Identity. Как использовать библиотеки из своего любого языка, чтобы быстро подключиться к Azure Active Directore и аутентифицировать пользователей в своём приложении — всё это будет не просто объяснено на словах, а показано на примере конкретных демо. Для сложных распределённых систем, поддерживаемых множеством команд, просто необходимо уметь быстро оценивать состояние системы и получать информацию о каждом аспекте ее работы. Наблюдаемость системы становится необходимым условием качества, но её полноценная реализация содержит множество подводных камней. В докладе Филипп раскроет понятие наблюдаемости и покажет, как выжать из нее максимум пользы. Детально обсудим распределённую трассировку процессов, логирование и сбор метрик. Акцент будет на подходах и открытых стандартах, но также Филипп упомянет опыт и инструменты, используемые командой в МТС. Конечно, мы тут все серьёзные люди, но кто из разработчиков никогда в жизни не хотел написать собственную игру? Павел Йосифович известен в первую очередь как автор отличных книг про внутренности Windows, но в этот раз выступит с докладом на совсем другую тему. Он покажет весь путь создания кроссплатформенной 2D-игрушки на фреймворке MonoGame, включая игровые механики, спрайты, анимацию, звук и всё остальное. К концу доклада вы поймёте многое и про геймдев в целом, и про MonoGame в частности. Чем хорош спикер: Автора «Windows Internals» особо представлять не требуется — добавим только, что и спикер он опытный.
Кому будет полезно: Всем, кому .NET интересен не только как работа, но и как инструмент для хобби-проектов.  У нас уже были обзорные доклады про Blazor, и технология продолжает активно развиваться — пришло время погружаться глубже. Роланд Хаут детально расскажет, как делать Blazor-компоненты и каких подводных камней стоит опасаться. После этого доклада у вас появится ачивка "Advanced Blazor Components", и ваши Blazor-приложения перейдут на новый уровень. Чем хорош спикер: Автор курсов Pluralsight, доходчиво рассказывает.
Кому будет полезно: Если вы уже знаете о Blazor и задумываетесь о более детальном погружении — в докладе будет рассказано, как делать компоненты и какие подводные камни могут встретиться. Вагиф — разработчик бэкенда, как и многие из вас. Что ему делать, когда нужно показать какие-нибудь данные? Написать программу для консоли (вздох)? Или, может быть, выучить CSS и JavaScript (глубокий вздох)? В своих ежедневных задачах Вагиф использует F# и функциональное программирование. Поэтому, когда он услышал про паттерн MVU и функциональный подход к разработке интерфейса пользователя, реализованный в языке Elm и перенесенный в F# библиотеками Fable и Elmish, то решил попробовать это в своих проектах. Что у спикера вышло? Получилось ли в действительности написать нормальное веб-приложении на F#? Приходите на доклад Вагифа и судите сами. Чем хорош спикер: Один из самых опытных докладчиков DotNext, известный своими практичными докладами про F#
Кому будет полезно: Всем любящим F# или ненавидящим JS Разработка кроссплатформенных приложений для Windows, iOS, macOS, Android и WebAssembly может быть сложным процессом. И особенно в том, что касается UI: у каждой платформы свои подходы к этому. Тут и может пригодиться опенсорсная Uno Platform, позволяющая .NET-разработчикам применять на всех этих платформах их навыки в C# и XAML. Чем хорош спикер: Жером Лабан — CTO и один из разработчиков Uno Platform.
Кому будет полезно: .NET-разработчикам, которым нужен кроссплатформенный UI. Скотт рассмотрит нестандартный подход к проектированию приложений, где в разработке применяется принцип минимальных привилегий. Хотя подход и нетипичный, цели в нём преследуются понятные всем разработчикам: например, чтобы API получались «самодокументирующимися», и их было сложно использовать неправильно.
Спикер известен как сторонник F#, и примеры в докладе будут на этом языке — но полезные выводы смогут извлечь не только сторонники функционального программирования. Чем хорош спикер: Автор множества популярных докладов, самого известного сайта по F# и отличной книги по функциональному DDD.
Кому будет полезно: Всем, интересующимся дизайном приложений и не боящимся примеров на F#. Логика большинства проектов реализуется «горизонтально» в виде слоя ApplicationServices. Однако существует альтернативный подход, когда для каждого юзкейса создается отдельный класс-хендлер. Чаще всего такой подход используется вместе с CQRS, когда система распиливается на стеки чтения и записи ради повышения производительности. Джимми Богард назвал этот же подход vertical slices. Многие разработчики слышали о нем, но не используют, так как не могут ответить на вопрос: «стоит ли использовать хендлеры, если мы не боремся за производительность при помощи CQRS?» В докладе Денис покажет 9 преимуществ, которые дают вертикальные хендлеры/слайсы по сравнению с привычными горизонтальными слоями. А также он поделится опытом перехода с сервисов на слайсы. Чем хорош спикер: Денис — опытный спикер, причём именно по вопросам архитектуры больших приложений.
Чем хороша тема: Классическая слоёная архитектура разжёвана вдоль и поперек. Однако есть и другие подходы, которые в определенных случаях могут оказаться очень полезными. Vertical Slices, активно продвигаемый Джимми Богардом, — один из них. Современные приложения состоят из множества подсистем: базы данных, кеши, брокеры сообщений. Для обработки одного запроса от пользователя сервер может выполнять десятки внутренних подзапросов. Вы скажете — современные сети очень быстры, оверхед минимален! На живых демках увидим, что это не так, и поговорим о том, как улучшить локальность, сократить затраты на сетевой обмен и упростить масштабирование, применяя эффективную архитектуру данных. Тема DataGrid-систем совсем не раскрыта в мире .NET — пришло время это исправить. Чем хорош спикер: Павел является одним из разработчиков самой популярной DataGrid-системы — Apache Ignite. Он специализируется на .NET-клиенте и может рассказать всё с самых низов.
Кому будет полезно: Кто хочет узнать, что за зверь «DataGrid», в каких условиях его можно использовать и какие проблемы он может решить. А также научиться использовать основной функционал Ignite из своего .NET-кода. Представим, что время прогона модульных тестов выросло в разы, начав мешать разработке. Профайлер показывает первого подозреваемого — библиотеку Moq, долго создающую заглушки. Но команда недовольна перспективой замены заглушек на самописные классы: в Moq много продвинутых возможностей, которые не так-то просто реализовать самостоятельно. За дело берётся C#-сыщик, и теперь подозреваются все: Moq, NUnit, Castle.DynamicProxy и даже сам Reflection.Emit! Поможет ли замена Moq на NSubstitute? NUnit на xUnit? Во время расследования авторы продемонстрируют принципы работы с профайлером, особенности библиотек заглушек (Moq, NSubstitute) и тестовых фреймворков (NUnit, xUnit). Будет показано, как создавать динамические типы через Reflection.Emit и как работать с Castle.DynamicProxy. Но удастся ли раскрыть тайну динамических сборок, скрывающуюся в глубинах clr.dll? Чем хорош спикер: Спикер проявил себя как умелый пользователь инструментами отладки.
Кому будет полезно: Доклад для начинающих: всех, кто хочет научиться пользоваться базовыми инструментами отладки, диагностики и логического мышления при расследовании странного поведения своих программ. Предыдущий доклад в списке рассчитан на тех, кто ещё не погружался в отладку глубоко — а вот здесь всё хардкорнее.  .NET-разработчики привыкли к тому комфорту, который даёт им платформа, скрывая от них много низкоуровневых сложностей. Но что делать, когда сталкиваешься с таким хитрым багом, что приходится отправляться в нативный мир? Кевин расскажет, как спускаться на уровень ниже и работать с особенно хитрыми случаями — вплоть до багов прямо в CLR. В докладе будут затронуты WinDBG, LLDB, реверс-инжиниринг языка ассемблера и погружение в «кишочки» рантайма .NET. Чем хорош спикер: Кевин — известный блоггер и докладчик. Всегда копает очень глубоко, любит инструменты вроде WinDBG.
Кому будет полезно: Тем, кто хочет разобраться в деталях отладки нативного кода и платформы .NET, используя низкоуровневые отладчики. Разработчики постоянно пользуются базами данных — но знают ли о том, что у них внутри? RavenDB — редкий случай базы данных, написанной на .NET (и самый популярный из таких случаев). Из доклада её основателя Орена Эйни можно будет и узнать о том, что конкретно у неё под капотом, и лучше понять, как вообще устроены движки БД. Чем хорош спикер: Основатель компании Hibernating Rhinos, которая разрабатывает RavenDB — NoSQL-базу данных, написанную на платформе .NET. Освещает тему в своём блоге https://ayende.com/blog/.
Кому будет полезно: Всем, кому интересно, как устроена БД изнутри (и как реализовать БД на .NET, чтобы работало быстро). Команда разработки .NET уделяет много внимания производительности, и при работе над каждым новым релизом много энергии вкладывается именно в то, чтобы всё работало быстрее и скалировалось лучше. В этом докладе Стивен продемонстрирует конкретные примеры изменений, которые каким-либо образом улучшали производительность .NET, и опишет, как именно от этого могут выигрывать .NET-приложения. Чем хорош спикер: Докладчик из Microsoft, и его основная роль — как раз работа над ускорением .NET.
Кому будет полезно: Всем, кому небезразлична тема производительности. В докладе расскажут не только что сделали в .NET, а как это можно применять в обычных приложениях тоже. Сегодня многопоточность является актуальной темой для очень многих разработчиков — и при этом она остаётся сложной, проблем с ней хватает. Поэтому Бартош Сипитковский поговорит о паттернах в современном многопоточном программировании, о том, как библиотеки и фреймворки используют ресурсы системы, чем чреват выбор того или иного подхода, как многопоточность реализована в разных рантаймах и компиляторах. Чем хорош спикер: Бартош зарекомендовал себя как хороший докладчик на международных конференциях, а знакомые с Akka.NET знают его как одного из активных контрибьюторов и автора библиотеки Akkling.
Кому будет полезно: Всем, кому важна многопоточность (а кому она сейчас не важна-то). Что стоит учесть, помимо тем докладов, чтобы принять решение «участвовать ли в конференции»? То, что даже в онлайн-формате конференция — это не только «сидеть и слушать»:   И напоследок напоминаем даты: 20-23 апреля, онлайн.  Дополнительная информация и билеты — на сайте. ContentProvider