Найдено 334 результата
- 2017.12.29, 19:34
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
anton_z, а как вы собираете сущности у которых есть зависимости в конструкторе?
- 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. Я понимаю, что это не ваш случай, но всё же почему если бизнес-опер...
- 2017.12.28, 12:49
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
Дайте пример, где у Вернона это можно найти.noLogicOnlyWar писал(а): ↑2017.12.28, 12:30 Ну а внедрение через метод у сущностей встречается сплошь и рядом, и у Вернона тоже.
- 2017.12.28, 05:39
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
А вот создание юзера. Нужно проверить, не занят ли email. В апп сервисе проверять нельзя, ибо БЛ. В самом юзере тоже, ибо доступ к репозиторию (хотя тут спорно, репозиторий это домен, и к нему можно обращаться из юзера). Что, еще 1 доменный сервис создавать? Или проверять в репозитории? Да, похоже ...
- 2017.12.27, 13:39
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
Bio man, я не прав. Вы правы. Надо делать доменный сервис. Вот кстати как раз пример сервиса аутентификации . Я так понимаю, application слой должен декларировать юз кейсы приложения и содержать координирующую логику, а у вас он довольно много делает. Снимаю шляпу. Перечитал сейчас главу о доменных ...
- 2017.12.27, 02:12
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
Вот тут не совсем понимаю. В реальности они будут всегда - mailer'ы, генераторы паролей и тд, в общем все для чего нужна сторонняя зависимость будет прокинуто в домен через сервис же... В Implementing domain-driven design можно найти примеры отправки email по доменному событию в application сервисе...
- 2017.12.26, 12:40
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
noLogicOnlyWar, я не против. Вернон пишет, что доменные сервисы необходимо использовать, когда бизнес-логика не принадлежит никакой сущности, но тем не менее где-то должна быть и отмечает, что такое происходит крайне редко и в большинстве случаев все же можно найти необходимую сущность для бизнес-ло...
- 2017.12.26, 05:24
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
В app service не хочу помещать БЛ валидации токена, например, проверку срока годности или проверку статуса юзера. Ну проверка срока годности укладывается в Token::increaseExpirationTime(). Я бы всё же поискал решение, чтобы обойтись без доменного сервиса и бизнес-логику токена поместить собственно ...
- 2017.12.26, 02:14
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
А вообще я не понимаю, зачем здесь доменный сервис. Задача решается обычным application сервисом. Например так. class AuthenticationService { public function __construct( TokenRepository $tokenRepository, UserRepository $userRepository, Security $security ) { $this->tokenRepository = $tokenRepositor...
- 2017.12.26, 01:38
- Форум: Архитектура, дизайн, ООП
- Тема: Разделение агрегата
- Ответы: 63
- Просмотры: 18344
Re: Разделение агрегата
должен ли агрегат юзера содержать в себе свои сессии? Или сессия должна содержать юзера? Должен или нет определяется наличием инвариантов. Если инварианты есть тогда сущность является частью агрегата, в противном случае нет. Это правило можно найти в книге в Implementing domain-driven design. Вообщ...
- 2017.12.04, 03:57
- Форум: Тестирование (Yii 2.x)
- Тема: Юнит-тестирование
- Ответы: 5
- Просмотры: 3255
Re: Юнит-тестирование
Да, меня интересует именно тестирование ReportNetService. Чтобы замокать сеть внутри такого класса, придется мокать сами функции языка программирования. Я считаю это неверным. Считаю что при тестировании таких классов необходимо оставлять сеть живой. И еще я не понимаю, почему такие тесты называют и...
- 2017.12.03, 04:41
- Форум: Тестирование (Yii 2.x)
- Тема: Юнит-тестирование
- Ответы: 5
- Просмотры: 3255
Re: Юнит-тестирование
Nex-Otaku вот здесь http://www.taimila.com/blog/ddd-and-testing-strategy/#persistence-layer человек пишет, что предпочитает не мокать хранилище использующееся в репозиториях и тестировать на реальной субд. Я с ним согласен. Ты же не можешь до бесконечности выносить зависимости из класса. В конце всё...
- 2017.12.02, 04:55
- Форум: Тестирование (Yii 2.x)
- Тема: Юнит-тестирование
- Ответы: 5
- Просмотры: 3255
Юнит-тестирование
Могут ли юнит-тесты делать сетевые походы или обращаться к файловой системе? Просто много разговоров о том, что сетевые походы надо мокать. Но в любом же приложении будет некоторое количество самых низкоуровневых инфраструктурных сервисов, которые используют возможности самого языка программирования...
- 2017.11.14, 23:40
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
samdark innodb в mysql появился в 2001. До этого момента поддержка транзакций отсутствовала.
- 2017.11.14, 17:39
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
По поводу списания с баланса по событиям (Eventual Consistency) - это все очень опасно. Допустим у вас пиковая нагрузка и все воркеры заняты, ну или вообще воркеры недоступны по какой-то причине (сеть, сервер и пр.). Пользователь производит оформление, а событие еще не обработано. Пользователь може...
- 2017.10.20, 10:30
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
anton_z вы писали про дедупликацию, что достаточно хранить id последнего обработанного сообщения. Но producer может отправить сообщение в очередь дважды. Например если произошел сбой до того, как пришло подтверждение от очереди, что сообщение принято. При восстановлении producer отправит сообщение в...
- 2017.10.16, 06:32
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
anton_z ну меня интересует возможность шардировать базу и при этом как-то сохранить согласованность данных. Думал реализовать паттерн Saga с двумя задачами сохранить агрегат в базу и отправить доменное событие в очередь. Саму сагу сделать персистентной и при рестарте завершать все незавершенные саги...
- 2017.10.15, 05:20
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
anton_z мой интерес направлен на распределенные системы и nosql. Чем-то необходимо жертвовать. Да и заказ можно собирать пока пользователь выбирает товары. Тогда к моменту оплаты заказ будет готов. Списываем деньги сейчас, а статус заказа и всё остальное поменяем чуть позже. На клиенте можно даже ср...
- 2017.10.13, 17:20
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
zelenin но после сохранения агрегата и до отправки события в шину может произойти сбой. Событие потеряется.
- 2017.10.13, 06:56
- Форум: Архитектура, дизайн, ООП
- Тема: Проектирование сущностей, сервисов и репозиториев
- Ответы: 108
- Просмотры: 51699
Re: Проектирование сущностей, сервисов и репозиториев
ElisDN это через eventual consistency решается же. Заказ сохраняем сейчас, всё остальное делаем чуть позже по доменному событию OrderCreated. Хотя какое-то подобие транзакций всё же потребуется, чтобы атомарно сохранить агрегат + доменное событие. Но если это event sourcing, то атомарно сохранять ну...