Бизнес логика в диалогах

Вопрос: размещаете ли Вы бизнес логику в диалоговых окнах или делаете их максимально простыми насколько возможно?

Делаю SPA на Blazor. Требуется сделать изменение пароля авторизованного пользователя. Имеется текстовое поле с иконкой, при клике по которой открывается диалоговое окно, в котором нужно ввести текущий пароль и 2 раза новый. После успешной валидации отправляется запрос на сервер через сервис authStateProvider(полученный через DI). В ответ получаем или ошибку от сервера или успешное изменение пароля. На данный момент все работает, как описано выше, но меня мучают сомнения, что диалоги должны быть просто тупыми формами без каких-либо контейнеров, сервисов и прочего. Их задача - отредактировать данные/вернуть yes/no(при подтверждении чего-либо).

Если в диалоге убрать все "лишнее"(сервис, отправку запроса и.т.п) и только возвращать при save успешный результат в вызывающую форму, то придется в ней(в форме) реализовать бесконечную попытку сохранения пароля(если пользователь допускают ошибки, например, слабая сложность пароля). А т.к мы ожидаем ответ от сервера после закрытия диалога, то пользователь будет видеть постоянно открывающиеся/закрывающиеся диалоговые окна(пока обрабатывается запрос и снизу показывается какой-то статус) => ухудшение UX, но как мне кажется не идет нарушение SOLID. А в 1м случае наоборот нарушаем SOLID, но пользователь доволен.


Ответы (1 шт):

Автор решения: PashaPash

Бизнес логику нужно делать на сервере.

Часть бизнес логики можно дублировать на presentation, если это улучшает опыт пользователя по работе с приложением.

Дублирование - да, это нарушение SRP (а не всего SOLID), но тут уже вам решать - вы для пользователя приложение делаете, или для соблюдения принципов.

→ Ссылка