Приложение построено по принципам Domain-Driven Design (DDD) с четким разделением на слои.
Содержит бизнес-логику и доменные модели.
- Session - основной агрегат для управления сессией пользователя
- Содержит пользователя и конфигурацию карты
- Управляет жизненным циклом сессии
- UserSession - данные сессии пользователя
- MapConfiguration - конфигурация карты
- UserConfiguration - конфигурация пользователя
- User - пользователь системы
- TaskItem - задача пользователя
Содержит интерфейсы и сервисы приложения.
- ISessionService - основной сервис для работы с сессиями
- IUserValidationService - сервис валидации пользователей
- IMapInitializationService - сервис инициализации карты
- IUserRepository - репозиторий пользователей
- IConfigurationService - сервис конфигурации
- SessionService - оркестрирует инициализацию сессии
- UserValidationService - проверяет пользователей
- MapInitializationService - инициализирует карту
Содержит реализации для работы с внешними системами.
- UserRepository - работа с пользователями через HTTP API
- ConfigurationService - работа с локальной конфигурацией
Содержит UI и точку входа приложения.
- App.xaml.cs - главный класс приложения
- SessionInitializer - инициализатор сессии
- MauiProgram.cs - конфигурация DI
- App.xaml.cs вызывает
InitializeSessionAsync() - SessionInitializer получает
ISessionService - SessionService координирует:
- Получение конфигурации пользователя
- Валидацию пользователя
- Инициализацию карты
- Создание сессии
Все сервисы зарегистрированы в MauiProgram.cs:
- HTTP клиент для API вызовов
- Репозитории и сервисы
- Логирование
// В любом месте приложения
var app = Application.Current as App;
await app.InitializeSessionAsync();var app = Application.Current as App;
var sessionInitializer = app.GetSessionInitializer();
var session = sessionInitializer.CurrentSession;- Реализовать HTTP вызовы в
UserRepository - Добавить сохранение конфигурации в
ConfigurationService - Добавить работу с SecureStorage для паролей
- Добавить кэширование в сервисы
- Реализовать обработку ошибок сети
- Добавить валидацию входных данных
- Добавить доменные события
- Реализовать бизнес-правила
- Добавить валидацию доменных объектов
- Инкапсуляция - бизнес-логика скрыта в доменных объектах
- Разделение ответственности - каждый слой имеет свою зону ответственности
- Инверсия зависимостей - зависимости направлены к абстракциям
- Единственная ответственность - каждый класс решает одну задачу