Я прочитал этот отличный учебник (http://blogs.planbsoftware.co.nz/?p=247) о NserviceBus Sagas, но все же я не понимаю, в чем преимущество этой модели (sagas) перед использованием транзакций базы данных или бизнес-уровня?
Утилита NserviceBus Sagas
Ответы (2)
Основное преимущество модели саги заключается в том, что она позволяет вам взять логику и данные, которые в противном случае были бы распределены по системе (и различным пакетным заданиям), и объединить все это в один класс, лучше следуя принципу единой ответственности. Получив это, вы получите все остальные преимущества, которые дает хорошая практика программного обеспечения - лучшая тестируемость, ремонтопригодность и т. Д.
Чтобы показать вам реальную пользу модели Saga, я покажу вам два примера.
Представьте, что у вас есть сервис-ориентированная архитектура с сотнями распределенных хостов. Клиент делает Заказ, который запускает одну или несколько саг. У каждой саги есть своя бизнес-логика. Обработчик для каждой данной саги может быть разделен между разными хостами, и вам не нужно проверять состояние порядка обработки каждого сообщения, NServiceBus неявно проверяет состояние саги, соответствующее ему по идентификатору заказа или другим атрибутам, и если он все еще открыт, вы получите его в ваш контекст данных.
Вы также можете использовать эту модель в качестве шаблона без использования NServiceBus. Представьте, что вы разрабатываете видеоигру и хотите отслеживать некоторые комбинации пользователей. Каждый раз, когда игрок нажимает прыжок, вы открываете сагу и добавляете бонусные очки, обрабатывая другой быстрый ввод. Как только игрок задерживается на некоторое время между входами, сага закрывается, сохраняя общий счет для комбо.
В чем преимущества Saga?
1) Ваша бизнес-логика инкапсулирована в одном месте - саге.
2) Вы можете легко расширить его, добавив дополнительные саги или удалив их. Вы также можете переместить их на другие обработчики или хосты.
3) Вам не нужно знать, какие данные в базе данных требуются в случае миграции, вам просто нужно перенести саги, которые содержат всю необходимую информацию.