6

CRUD на основе часть наших потребностей применения:Offline синхронизации и события поиске

  1. Offline двунаправленным «двухсторонняя» синхронизируется
  2. Возможность не вносить изменения в данные до готовности, а затем «опубликовать».
  3. Аудит журнала

Event Sourcing (или «команда») является то, что я смотрю на то, чтобы выполнить эти пункты. Я чувствую себя комфортно с решением 2 & 3 с этим, но не ясным для первого пункта, синхронизации.

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

Любое базовое описание алгоритма для командной синхронизации будет полезно.

+0

Полезные статьи для меня являются http://touchlabblog.tumblr.com/post/33710233787/offline-sync-queue-aka-superbus и https://docs.google.com/file/d/0B_BG7hBPKUxaeVFTSUI4Ylp3VjQ/edit – Joel

ответ

9

Вы хотите, чтобы рассмотреть то, что Грег Янг должен сказать о CQRS and Occasionally Connected Systems

Команды должны работать на системе записи в то время, когда они были получены. Таким образом, ваш автономный клиент может работать с локальным кэшем, stale, копией записи и командами очереди. При повторном подключении клиент обновляет свою копию системы записи, сверяет свои команды в очереди с новым состоянием мира и затем отправляет новые команды в систему записи.

В разговоре Грега рассказывается о том, как выполняется согласование команд (в основном, глядя на события, которые генерируют временные команды, и ищет конфликты с событиями, записанными системой записи). В разговоре настоятельно говорится, что экспертам по домену будут разрешаться конфликты событий определенным образом.

+0

Вот что я ищу благодаря вам @ VoiceOfUnreason –