О разделе
Здесь — сквозной практикум для разработчика на C#, который хочет собрать полноценное клиент-серверное десктоп-приложение на Windows. Вы пройдёте путь от первого окна WPF до REST API, клиента на Prism, автотестов и итогового проекта TaskDesk.
Базовый одиночный WPF без сети уже разобран в 119.md. Этот маршрут продолжает ту линию и добавляет сервер, DI, навигацию по регионам и проверку качества.
Сценарий TaskDesk
TaskDesk — учебный менеджер задач для небольшой команды:
| Компонент | Стек | Роль |
|---|---|---|
| TaskDesk.Api | ASP.NET Core 8, Web API | CRUD задач, фильтры, JSON по REST |
| TaskDesk.Client | WPF + Prism + MVVM | Окно со списком, формой и статусом подключения к API |
| TaskDesk.Core | Class Library | Общие DTO и контракты между клиентом и сервером |
Синхронная связь — HTTP/JSON (GET/POST/PUT/DELETE на /api/v1/tasks). Клиент хранит состояние UI в ViewModel, данные — на сервере.
Маршрут по шагам
| Шаг | Статья | Содержание |
|---|---|---|
| 1 | WPF и XAML — введение | Платформа, дерево элементов, привязки, связь с 119 |
| 2 | Основы MVVM | Model, View, ViewModel, ICommand, INotifyPropertyChanged, CommunityToolkit |
| 3 | Сервер на ASP.NET Core Web API | REST, контроллеры, DTO, Swagger, CORS для десктоп-клиента |
| 4 | Клиент WPF на Prism | Регионы, навигация, DI, HttpClient, обработка ошибок сети |
| 5 | Тестирование запросов и unit-тесты | Postman, WebApplicationFactory, xUnit + Moq для ViewModel и API |
| 6 | Итоговый проект TaskDesk | Solution из трёх проектов, чек-лист сборки, типичные сбои |
Что понадобится
- Windows 10/11 и .NET SDK 8+
- Visual Studio 2022 (рабочая нагрузка «Разработка классических приложений .NET») или VS Code + C# Dev Kit
- Postman или встроенный Swagger UI
- Базовое знакомство с C# и HTTP
Сначала пройдите 119.md (локальные заметки без сервера), затем вернитесь сюда. Параллельно держите открытым справочник XAML и 116.md — карту стеков Windows.
Как учиться по разделу
- Прочитайте шаг 1 и шаг 2, соберите минимальное окно с ViewModel.
- Поднимите API по шагу 3 и проверьте эндпоинты в Swagger или Postman.
- Создайте клиент Prism по шагу 4, укажите базовый URL API в
appsettings.json. - Закройте цикл тестами из шага 5.
- Сверьте итоговую структуру с шагом 6 и чек-листом самопроверки.
Практикум WPF — введение в WPF и XAML
WPF как презентационный слой .NET — дерево XAML, layout, привязки, ресурсы и связь с практикумом TaskDesk.
Практикум WPF — основы MVVM
Model, View, ViewModel, INotifyPropertyChanged, ICommand, CommunityToolkit.Mvvm и тестируемая логика для TaskDesk.
Практикум WPF — сервер ASP.NET Core Web API
REST API для TaskDesk — контроллеры, DTO, Swagger, CORS, in-memory хранилище и контракт для WPF-клиента.
Практикум WPF — клиент на Prism
Prism для WPF — модули, регионы, DI, INavigationService, HttpClient и ApiTaskRepository для TaskDesk.Client.
Практикум WPF — тестирование API и unit-тесты
Postman и Swagger для REST TaskDesk, WebApplicationFactory, xUnit, Moq для ViewModel и репозитория.
Практикум WPF — итоговый проект TaskDesk
Полноценное клиент-серверное приложение — solution, сборка, сценарии демо, расширения и чек-лист готовности.
Практикум WPF — о разделе
Сквозной маршрут — WPF и XAML, MVVM, REST API на ASP.NET Core, клиент на Prism, тесты и итоговое приложение TaskDesk.
Связь с теорией
| Тема | Материалы энциклопедии |
|---|---|
| WPF, DirectX, выбор стека | 116.md, платформа .NET UI |
| MVVM, потоки UI | 112.md |
| REST, JSON | REST, 4511 |
| Архитектурные паттерны | design-patterns MVVM |
| Элементы WPF | 1192.md |