например.
Вот у меня есть пользователь. И мне нужно его аутентифицировать.
Как оно сейчас? Сервис аутентификации, метод LogOn(login, password), возвращает экземпляр User. User - простейшее DTO. Ну там, FirstName, LastName, Login, Email и т.д.
Если мы объединяем логику работы с данными и сами данные, то тогда как?
В конструкторе? Типа: new User(login, password) и лезем в базу? Да не, нельзя. У нас же везде async / await.
Тогда
var user = new User();
await user.LogOn(login, password);
-> user.Email => "user@domain.com"
var user2 = new User();
-> user.Email => throw new EntityStateException("Entity is not initialized")
Так получается?
Погнали: 1. За аутентификацию у тебя отвечает специальный сервис, который принимает на вход пользователя, тут идём вровень, НО этот сервис принимает не какую-то там ДТО пользователя, а твоего доменного, который уже сугубо правильный с точки соблюдения всех валидаций! ДТО тебе не могут гарантировать инкапсуляцию. await user.LogOn(login, password); -> бред, у тебя пользователи сами себя логинят? это же не так, даже по элементарной логике
Обсуждают сегодня