Отличия IEnumerable<T> от IQueryable<T> и назначение QueryProvider IEnumerable<T> — интерфейс для работы с коллекциями, выполняющий LINQ-запросы в памяти (LINQ to Objects) IQueryable<T> — расширяет IEnumerable<T> и…
Архитектурные паттерны построения UI MVP (Model-View-Presenter): View передаёт события Presenter Presenter обрабатывает логику и обновляет View и Model Явное разделение UI и бизнес-логики MVVM (Model-View-ViewModel):…
Многопоточность и асинхронный код в проектах Многопоточность применял для увеличения степени параллелизма и ускорения выполнения задач. Для синхронизации доступа к разделяемым ресурсам и защиты от гонок данных…
Как в C# устроено замыкание (closure) с внешней переменной замыкание — это сохранённый контекст окружения лямбды внешняя переменная (например, counter) захватывается по ссылке, а не копируется все обращения к этой…
подход к управлению распределёнными транзакциями крупная транзакция представляется последовательностью локальных операций в отдельных сервисах для каждой операции предусматривается компенсирующее действие, позволяющее…
Как заменить исключения в управлении потоком выполнения с помощью Result Pattern? Контекст: обработка ошибок и повышение отказоустойчивости Result Pattern — объект, который возвращает состояние успеха или ошибки…
Как IQueryable<T> преобразует лямбда-выражения в SQL IQueryable<T> предназначен для формирования запросов к удалённому источнику данных, например к базе данных. В этом случае лямбда-выражения представлены как…
Как обеспечить гарантированную доставку сообщений между микросервисами с помощью паттернов Outbox и Saga? гарантия доставки устраняет риски при асинхронном взаимодействии и сбоях Outbox: сообщение записывается вместе…
паттерн интеграции, обеспечивающий гарантированную доставку сообщений сохраняет события в специальной таблице (outbox) одновременно с изменениями в БД в рамках одной транзакции устраняет риск рассинхронизации данных и…
Паттерны для высокой нагрузки Load Balancer: равномерно распределяет входящие запросы Кэширование: уменьшает нагрузку на БД и сервисы CQRS: разделяет операции чтения и записи для масштабирования Шардирование:…
Категории типов данных в .NET и различия value/reference type В .NET типы данных относятся к двум основным категориям: value type и reference type Value type непосредственно содержат значение и хранят данные в стеке…
Опыт работы с контейнерами внедрения зависимостей ServiceCollection (.NET Core) — стандартный DI-контейнер с компактным и понятным API ** Autofac** — расширяемое решение для сложных сценариев и модульной конфигурации…