Материалы по backend-разработке

Нас часто спрашивают, с чего начать, чтобы успешно работать в .NET-стеке. Подготовили список полезных материалов по технологиям, архитектуре и проектированию.

Язык

Советуем освежить знания по C#. Многие считают, что разбираются в нем идеально. Однако спотыкаются то о generic-и, то о рефлексию, то об async/await и task-и (в принципе с TPL проблемы встречаются часто). Этим не стоит пренебрегать — в конечном итоге будет проще работать с необходимыми технологиями, изучать и понимать код и архитектуру.

Минимальная литература по .NET и C#:

Обязательно ознакомьтесь с идеологией, архитектурой и особенностями .NET Core. Мы давно ведем разработку именно под Core, а не под Framework — это важно с учетом кроссплатформенности и перспектив развития.

Троелсена читать в первую очередь

.NET

Для веб-разработки под .NET вариантов немного — это ASP.NET WebForms / MVC / Web Api и ASP.NET Core.

ASP.NET WebFroms можно даже не смотреть. Стоит ли вкладываться в изучение именно ASP.NET — вопрос. Возможно, для начала — да, чтобы погрузиться и пощупать технологию. Тогда достаточно любой обзорной литературы. Например: https://professorweb.ru/my/ASP_NET/base/level1/base_aspnet_index.php — коротко, просто и почти обо всем. Для первого знакомства неплохо.

ASP.NET Core более продуман, так как является переосмыслением архитектуры. В основе хорошо продуманный пайплайн из middleware, инверсия зависимостей уже лежит в сердце самой технологии и т. д. Плюсов по сравнению с ASP.NET много, поэтому необходимость изучения последнего под сомнением. Изучать ASP.NET Core — только по официальным докам https://docs.microsoft.com/en-us/aspnet/core/. Это лучшая литература. Плюс всегда есть возможность посмотреть исходники на Гитхабе.

Архитектура и код

Если говорить об общей литературе, которая поможет придерживаться хорошей архитектуры в приложениях, следует обязательно прочесть:

Для дисциплины при написании кода:

Незнакомый кот @phillennium, отражающий эмоции от первого прочтения Мартина

Проектирование

При разработке энтерпрайз-приложений мы используем предметно-ориентированное проектирование (DDD). Часть используемых технологий была выбрана как раз в силу того, что они лучше сочетаются с данным подходом к структурированию и разработке приложений.

По DDD обязательно к прочтению:

Работа с данными

Для реализации слоя работы с данными используем NHibernate + Fluent NHibernate и Dapper (с трудом можно назвать ORM, скорее просто средство для маппинга). Не рекомендуем использовать Entity Framework: он очень плохо вяжется с DDD.

По ORM только официальная документация:

Управление зависимостями

Для полноценной работы необходимо знать, что такое инверсия зависимостей, контроля, IoC-контейнеры. Теории в сети навалом — от Википедии до Хабра. Из IoC-контейнеров используем Autofac. Доки читать официальные: https://autofaccn.readthedocs.io/en/latest/getting-started/.

На что подписаться

Много хороших постов по архитектуре .NET-приложений можно найти в блоге Александра Бындю https://blog.byndyu.ru/. Стоит обратить внимание как минимум на CQRS, Event Sourcing, распределенную архитектуру и Integration Patterns.