В моем текущем проекте разработки есть два аспекта. Во-первых, существует общедоступный веб-сайт, где внешние пользователи могут отправлять и обновлять информацию для различных целей. Затем эта информация сохраняется на локальном сервере SQL на объекте colo.
Второй аспект - это внутреннее приложение, которое сотрудники используют для управления теми же самыми записями (концептуально), и предоставляет обновления статуса, утверждения и т.д. Это приложение размещается в корпоративном брандмауэре с собственной локальной базой данных SQL Server.
Две сети соединены аппаратным решением VPN, которое является достойным, но, очевидно, не самым быстрым в мире.
Две базы данных схожи и разделяют многие из тех же таблиц, но они не на 100% одинаковы. Многие таблицы с обеих сторон очень специфичны для внутреннего или внешнего приложения.
Итак, возникает вопрос: когда пользователь обновляет свою информацию или отправляет запись на общедоступном веб-сайте, как вы передаете эти данные во внутреннюю базу данных приложений, чтобы ее можно было управлять внутренним персоналом? И наоборот... как вы нажимаете обновления, сделанные сотрудниками, на веб-сайт?
Стоит отметить, что чем больше "реального времени" происходит в этих обновлениях, тем лучше. Не то, чтобы это было мгновенно, просто разумно быстро.
До сих пор я думал об использовании следующих типов подходов:
- Двунаправленная репликация
- Интерфейсы веб-сервисов с обеих сторон с кодом для синхронизации изменений по мере их создания (в режиме реального времени).
- Интерфейсы веб-сервисов с обеих сторон с кодом для асинхронной синхронизации изменений (с использованием механизма очередей).
Любые советы? Кто-нибудь сталкивался с этой проблемой раньше? Вы придумали решение, которое сработало для вас?