Найдено 334 результата

sda
2017.12.29, 19:34
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

anton_z, а как вы собираете сущности у которых есть зависимости в конструкторе?
sda
2017.12.28, 14:41
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

noLogicOnlyWar, вот что он пишет Dependency injection of a Repository or Domain Service into an Aggregate should generally be viewed as harmful. The motivation may be to look up a dependent object instance from inside the Aggregate. Я понимаю, что это не ваш случай, но всё же почему если бизнес-опер...
sda
2017.12.28, 12:49
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

noLogicOnlyWar писал(а): 2017.12.28, 12:30 Ну а внедрение через метод у сущностей встречается сплошь и рядом, и у Вернона тоже.
Дайте пример, где у Вернона это можно найти.
sda
2017.12.28, 05:39
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

А вот создание юзера. Нужно проверить, не занят ли email. В апп сервисе проверять нельзя, ибо БЛ. В самом юзере тоже, ибо доступ к репозиторию (хотя тут спорно, репозиторий это домен, и к нему можно обращаться из юзера). Что, еще 1 доменный сервис создавать? Или проверять в репозитории? Да, похоже ...
sda
2017.12.27, 13:39
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

Bio man, я не прав. Вы правы. Надо делать доменный сервис. Вот кстати как раз пример сервиса аутентификации . Я так понимаю, application слой должен декларировать юз кейсы приложения и содержать координирующую логику, а у вас он довольно много делает. Снимаю шляпу. Перечитал сейчас главу о доменных ...
sda
2017.12.27, 02:12
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

Вот тут не совсем понимаю. В реальности они будут всегда - mailer'ы, генераторы паролей и тд, в общем все для чего нужна сторонняя зависимость будет прокинуто в домен через сервис же... В Implementing domain-driven design можно найти примеры отправки email по доменному событию в application сервисе...
sda
2017.12.26, 12:40
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

noLogicOnlyWar, я не против. Вернон пишет, что доменные сервисы необходимо использовать, когда бизнес-логика не принадлежит никакой сущности, но тем не менее где-то должна быть и отмечает, что такое происходит крайне редко и в большинстве случаев все же можно найти необходимую сущность для бизнес-ло...
sda
2017.12.26, 05:24
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

В app service не хочу помещать БЛ валидации токена, например, проверку срока годности или проверку статуса юзера. Ну проверка срока годности укладывается в Token::increaseExpirationTime(). Я бы всё же поискал решение, чтобы обойтись без доменного сервиса и бизнес-логику токена поместить собственно ...
sda
2017.12.26, 02:14
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

А вообще я не понимаю, зачем здесь доменный сервис. Задача решается обычным application сервисом. Например так. class AuthenticationService { public function __construct( TokenRepository $tokenRepository, UserRepository $userRepository, Security $security ) { $this->tokenRepository = $tokenRepositor...
sda
2017.12.26, 01:38
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18344

Re: Разделение агрегата

должен ли агрегат юзера содержать в себе свои сессии? Или сессия должна содержать юзера? Должен или нет определяется наличием инвариантов. Если инварианты есть тогда сущность является частью агрегата, в противном случае нет. Это правило можно найти в книге в Implementing domain-driven design. Вообщ...
sda
2017.12.04, 03:57
Форум: Тестирование (Yii 2.x)
Тема: Юнит-тестирование
Ответы: 5
Просмотры: 3255

Re: Юнит-тестирование

Да, меня интересует именно тестирование ReportNetService. Чтобы замокать сеть внутри такого класса, придется мокать сами функции языка программирования. Я считаю это неверным. Считаю что при тестировании таких классов необходимо оставлять сеть живой. И еще я не понимаю, почему такие тесты называют и...
sda
2017.12.03, 04:41
Форум: Тестирование (Yii 2.x)
Тема: Юнит-тестирование
Ответы: 5
Просмотры: 3255

Re: Юнит-тестирование

Nex-Otaku вот здесь http://www.taimila.com/blog/ddd-and-testing-strategy/#persistence-layer человек пишет, что предпочитает не мокать хранилище использующееся в репозиториях и тестировать на реальной субд. Я с ним согласен. Ты же не можешь до бесконечности выносить зависимости из класса. В конце всё...
sda
2017.12.02, 04:55
Форум: Тестирование (Yii 2.x)
Тема: Юнит-тестирование
Ответы: 5
Просмотры: 3255

Юнит-тестирование

Могут ли юнит-тесты делать сетевые походы или обращаться к файловой системе? Просто много разговоров о том, что сетевые походы надо мокать. Но в любом же приложении будет некоторое количество самых низкоуровневых инфраструктурных сервисов, которые используют возможности самого языка программирования...
sda
2017.11.14, 23:40
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

samdark innodb в mysql появился в 2001. До этого момента поддержка транзакций отсутствовала.
sda
2017.11.14, 17:39
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

По поводу списания с баланса по событиям (Eventual Consistency) - это все очень опасно. Допустим у вас пиковая нагрузка и все воркеры заняты, ну или вообще воркеры недоступны по какой-то причине (сеть, сервер и пр.). Пользователь производит оформление, а событие еще не обработано. Пользователь може...
sda
2017.10.20, 10:30
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

anton_z вы писали про дедупликацию, что достаточно хранить id последнего обработанного сообщения. Но producer может отправить сообщение в очередь дважды. Например если произошел сбой до того, как пришло подтверждение от очереди, что сообщение принято. При восстановлении producer отправит сообщение в...
sda
2017.10.16, 06:32
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

anton_z ну меня интересует возможность шардировать базу и при этом как-то сохранить согласованность данных. Думал реализовать паттерн Saga с двумя задачами сохранить агрегат в базу и отправить доменное событие в очередь. Саму сагу сделать персистентной и при рестарте завершать все незавершенные саги...
sda
2017.10.15, 05:20
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

anton_z мой интерес направлен на распределенные системы и nosql. Чем-то необходимо жертвовать. Да и заказ можно собирать пока пользователь выбирает товары. Тогда к моменту оплаты заказ будет готов. Списываем деньги сейчас, а статус заказа и всё остальное поменяем чуть позже. На клиенте можно даже ср...
sda
2017.10.13, 17:20
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

zelenin но после сохранения агрегата и до отправки события в шину может произойти сбой. Событие потеряется.
sda
2017.10.13, 06:56
Форум: Архитектура, дизайн, ООП
Тема: Проектирование сущностей, сервисов и репозиториев
Ответы: 108
Просмотры: 51699

Re: Проектирование сущностей, сервисов и репозиториев

ElisDN это через eventual consistency решается же. Заказ сохраняем сейчас, всё остальное делаем чуть позже по доменному событию OrderCreated. Хотя какое-то подобие транзакций всё же потребуется, чтобы атомарно сохранить агрегат + доменное событие. Но если это event sourcing, то атомарно сохранять ну...