I spent a couple months develop a Sync Engine which sync data between SQLite and SQL Server (2008+) and it works with Xamarin . But the project failed to go ahead, now the sync engine seems to be a waste. I am looking for help to see others can take advantage of this.
Why I built this sync engine in the first place? I worked Window Mobile (WM) platform for a long long time, the solution (Sale Force app for FMCG) I built requires app to be fully functional even there is no connection as the user needs to complete task in various places. I used Merge Replication to do the sync at database level for WM application for 500 devices. WM is dead by now, everyone wants to use iPad to be next platform. The problem I found there is virtually no good sync engine runs on iOS device can replace merge replication. After done lots of searches, I decide to write my own sync engine. In addition, I rewrote the Xamarin Field Server app to prove that the sync engine does work.
The some benefits of the Sync Engine I can think of right now.
1) Write great offline enterprise app.
2) Increase Developer Productivity as the developer only need to focus on CRUD operation, the sync engine takes care of the data synchronization.
Here are some features & architecture design:
It works in iOS & Android under Xamarin platform.
It is similar to Microsoft Merge Replication’s design.
It has much better performance than Merge Replication
It supports the row filtering (Data Partition)
a)The device only gets the data relevant to the user’s context.
b)When a row was updated which move the row out of partition, the replicated data on the device will be deleted automatically.
It supports Row Level & Column Level changing at server side as well as client side.
a)The benefit is that it reduces the payload size.
It has a server component runs in the IIS (using Asp.net MVC 4)
It has a client component which track local changes and apply server side changes.