Я перемещаю свою архитектуру из связанной в слабо связанную SOA (WCF). У меня есть несколько сервисов, которые общаются друг с другом. Как бы вы синхронизировали бизнес-экземпляры между службами?
Я вижу здесь два сценария:
Все бизнес-объекты создаются только в одной службе, назовем ее MainService, и только она имеет доступ ко всем изменениям, внесенным в объекты. Сервис отвечает за обновление объектов в базе данных. Любое обновление объекта вызывает уведомление. Другие сервисы регистрируются на нужные им события и получают соответствующие уведомления. Я называю это централизованным подходом.
+ Уведомлять службу сразу после внесения изменений
- Много вызовов между службами.
- Больше связи.Все сервисы просто загружают нужные им объекты и периодически контролируют базу данных на предмет внесенных в них изменений. Моя идея состояла в том, чтобы использовать отслеживание изменений SQL Server 2008 для обнаружения любых изменений, внесенных в объекты.
+ Меньше трафика и возможных проблем со связью между службами.
+ Меньшая связанность
- Задержка из-за периодического мониторинга.
Итак, каков ваш ответ на это? (если у вас есть 3, 4 и т. д., тоже было бы неплохо)