Синхронизация бизнес-объектов между службами WCF - PullRequest
1 голос
/ 23 октября 2009

Я перевожу свою архитектуру из слабосвязанной в SOA (WCF). У меня есть несколько служб, которые общаются друг с другом. Как бы вы синхронизировали бизнес-экземпляры между сервисами?

Здесь я вижу два сценария:

  1. Все бизнес-объекты создаются только в одном сервисе, назовем его MainService , и он единственный, кто имеет доступ ко всем изменениям, внесенным в объекты. Служба отвечает за обновление объектов в базе данных. Любое обновление объекта вызывает уведомление. Другие службы регистрируются на нужные им события и получают соответствующие уведомления. Я называю это централизованным подходом.

    + Уведомить службу, как только будет сделано изменение
    - Много вызовов между службами.
    - Больше сцепления.

  2. Все службы просто загружают нужные им объекты и периодически отслеживают базу данных на предмет любых изменений, внесенных в них. Моя идея состояла в том, чтобы использовать отслеживание изменений сервера SQL Server 2008 для обнаружения любых изменений, внесенных в объекты.

    + Меньше трафика и возможные проблемы со связью между сервисами.
    + Менее спаренный
    - Задержка из-за периодического контроля.

Итак, каков ваш ответ на этот вопрос? (если у вас 3, 4 и т. д. ... Было бы неплохо)

Ответы [ 2 ]

1 голос
/ 23 октября 2009

Зачем вам нужно синхронизировать бизнес-экземпляры между сервисами? Мне кажется, что сервисы еще недостаточно связаны.

0 голосов
/ 23 октября 2009

В первом варианте основной сервис становится единственной точкой отказа и узким местом производительности.

Во втором вы рискуете много ненужных опросов для информации.

Третье предложение будет:

Если каждая из ваших служб имеет свою собственную базу данных, вы можете использовать репликацию базы данных для перемещения данных из службы, в которой она создается, в другие службы, в которых она используется.

EDIT

На основании вашего комментария. Вы можете попробовать Enterprise Library Caching с резервным хранилищем базы данных. Таким образом, у вас есть данные в памяти, но они будут обновлены, если обновятся значения в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...