We're in the process of replacing a legacy system. There is going to be a period of time with both the applications running in tandem. Users will be able to use either system and the challenge is to be able to keep their databases in sync with each other.
The new system is ASP.NET and the legacy is VB6. Both are running on a SQL Server database. It is unclear at this time if the databases will be in the same server room, let alone the same country.
The two solutions on the table so far are:
- 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.
A single windows service that polls each database and works out what's changed and forwards adapted updates as appropriate.
- 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.
Both solutions seem reasonable. Both solutions have pros and cons. The business has asked for no more than a 2 second delay(!) between updating one system and seeing it in the other. That's possibly a stretch target but it's something to aim for.
Others that have been suggested but rejected (I'm willing to reconsider) are:
- Database triggers (blugrh)
- BizTalk or other bus (seems like a sledge hammer and is too complex for a switchover solution)
- Modifying all the stored procedures (noooo.)
- SSIS (don't know enough about this yet)
Appreciate any thoughts you may have.
EDIT: N.B. The schemas are completely different.