Съдържание и теми, включени в курса
От езикови умения до дизайн на решения
- Разширени функции на C# и техните архитектурни последици.
- Възстановяване на намеренията за дизайн от съществуващ код.
Анализ на изискванията и моделиране на домен
- Сценарии за използване, потребителски истории и критерии за приемане.
- Доменни модели и универсален език.
Принципи на софтуерния дизайн
- Принципите SOLID, приложени към .NET решения.
- Свързаност, кохезия и посока на зависимостите.
Дизайн модели за .NET приложения
- Избор на креационни, структурни и поведенчески модели.
- Модели и анти-моделите в съществуващ код.
Стилове на архитектура и вземане на технически решения
- Сравнение между наслойна, хексагонална и чиста архитектура.
- Регистри за архитектурни решения и анализ на компромиси.
Планиране на структурата на решението
- Организация на решенията и проектите за големи кодови бази.
- Модулен монолит срещу граници, ориентирани към услуги.
Съременно C# за поддържания код
- Съвпадения по шаблони, записи и nullable референтни типове.
- Обобщения, LINQ и функционално състава.
Обработване на изключения, водене на журнални записи и наблюдениемост
- Стратегия за изключения и договорки за грешки.
- Структурирани журнални записи, корелация и проверки на здравето.
Рефлексия, атрибути и метапрограмиране
- Дизайн, базирани на атрибути, и случаи за използване на рефлексия.
- Генератори на източник и генериране на код по време на компилация.
Основни принципи на ASP.NET Core
- Модел за хостинг, инжектиране на зависимости и конфигурация.
- Конвейър за заявки, middleware и филтри.
Дизайн на REST API-и
- Моделиране на ресурси и HTTP семантика.
- Версионизиране, валидация и отговори за грешки.
- API договори с OpenAPI.
Осигуряване на .NET приложения
- Аутентикация и авторизация с OpenID Connect.
- Авторизация, базирана на политики, и управление на тайни.
Моделиране на заплахи и сигурен дизайн
- STRIDE моделиране и граници на доверието.
- Преглед на сигурния дизайн преди имплементация.
Достъп до данни с Entity Framework Core
- Моделиране на ентитети и връзки.
- Времетраене на DbContext и стратегия за миграция.
Производителност на заявките и архитектура на данните
- Стратегии за зареждане и капани при предварително зареждане.
- Транзакции, токени за конкурентност и заобикаляне на EF.
Конкурентност и асинхронно програмиране
- Задачи, TPL и капани при async/await.
- Синхронизация, отмяна и сигурност на нишките.
Оптимизация на производителността
- Профилиране и бенчмаркиране с BenchmarkDotNet.
- Памет, алокации и събиране на отпадъци.
- Стратегии за кеширане и натоварващи тестове.
Стратегия за тестване между слоевете
- Граници между юнит, интеграционни и крайно-крайни тестове.
- Тестируема архитектура и тестови двойници.
Разгръщане и оперативна готовност
- Контейнери, конфигурация и CI/CD конвейри.
- Диагностика в продуктивна среда и безопасност на releases.
Кулминация: Преглед на дизайна и имплементация
- Архитектурен преглед на примерен апликационен кейс.
- Имплементация и рефакторинг на функционален срез.
Изисквания
- Опит в програмирането на C#
- Знание за работа с обектно-ориентирано програмиране
- Основни познания по SQL и релационни бази данни
Целева аудитория
- .NET разработчици
- Софтуерни инженери и технически лидери
- Разработчици, преминаващи към роли в дизайна на приложения
Отзиви от участници (3)
Тренингът беше индивидуален, така че беше специализиран според моите конкретни нужди. Шейн подчерта елементи на WPF/C#, които може да бъдат полезни за моите проекти по развитие.
Warren Nolan - Northrop Grumman
Курс - Programming in WPF
Машинен превод
Обясненията и интерактивността на инструктора реално донесоха темата много добре; и въпреки че вероятно не бях достатъчно опытен, все пак научих много от това!
Pieter Bruynseels - Spot Buy Center BV
Курс - Design Patterns
Машинен превод
Приятен и дружелюбен. Много добре осведомен. Бих препоръчал Шейн на други.
Joshua - California State University Bakersfield
Курс - Programming in C# with Visual Studio 2022
Машинен превод