Мы находимся в процессе замены устаревшей системы. Будет период времени, когда оба приложения будут работать в тандеме. Пользователи смогут использовать любую систему, и задача состоит в том, чтобы иметь возможность синхронизировать свои базы данных друг с другом.
Новая система - ASP.NET, а унаследованная - VB6. Оба работают в базе данных SQL Server. В настоящее время неясно, будут ли базы данных находиться в одной серверной комнате, не говоря уже о той же стране.
На данный момент представлены два решения:
- Web services that sit on each machine and is called by the other application.
- Need to modify the Save method on the base class(es?) for the native objects. This is invasive and could be a problem when it comes to switching it off.
Единая служба Windows, которая опрашивает каждую базу данных и определяет, что было изменено, и при необходимости пересылает адаптированные обновления.
- Need to change the schemas in both applications to ensure that they have a LastModified (DateTime) on all tables so we can do a periodic SELECT at any given interval.
Оба решения кажутся разумными. У обоих решений есть свои плюсы и минусы. Компания запросила не более 2-х секундной задержки (!) Между обновлением одной системы и ее просмотром в другой. Возможно, это непростая цель, но к ней нужно стремиться.
Другие, которые были предложены, но отклонены (я готов пересмотреть):
- Триггеры базы данных (blugrh)
- BizTalk или другая шина (похоже на кувалду и слишком сложна для решения по переключению)
- Изменение всех хранимых процедур (неееет.)
- SSIS (пока не знаю об этом достаточно)
Цените любые мысли, которые могут у вас возникнуть.
РЕДАКТИРОВАТЬ: N.B. Схемы совершенно разные.