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