What kind of storage with two-way replication for multi site C# application?
I have a web-based system written using asp.net backed by mssql. A synchronized replica of this system is to be run on mobile locations and must be available regardless of the state of the connection to the main system (few hours long interruptions happens). For now I am using a copy of the main开发者_StackOverflow中文版 web application and a copy of the mssql server with merge replication to the main system. This works unreliably, and setting the replication is a pain.
The amount of data the system contains is not huge, so I can migrate to different storage type.
For the new version of this system I would like to implement a new replication system. I am considering migration to db4o for storage with it's replication support. I am thinking about other possible solutions like couchdb which had native replication support. I would like to stay with C#.
Could you recommend a way to go for such a distributed environment?
PS. Master-Slave replication is not an option: any side must be allowed to add/update data.
You can take a look at Microsoft Synchronization Services for ADO.NET. Here are some useful links:
Take Data Offline Using Microsoft Synchronization Services for ADO.NET http://technet.microsoft.com/en-us/library/bb725998.aspx
Getting Started with Microsoft Synchronization Services for ADO.NET
Other useful articles:
Disconnected Client Architecture
Since you would like to stick to c#, consider Microsoft sync framework. You can also consider upgrading to SQL server 2008 (express or Compact) since it has change tracking support and it can be used with the Database sync provider in the sync framework. This will be less invasive change than moving to CouchDB, since CouchDB is a document store (not RDBMS) and has a different consistency model.
精彩评论