Are there any design patterns for configuration synchronization

I was wondering if anyone knew about any design templates, articles or other information about the problem of synchronizing settings between multiple devices.

Tell a website, an iPhone app, and an iPad app; with future devices coming later.

Any information would be greatly appreciated. If you need more information to answer correctly, say so and I can solve the problem.

+6
design design-patterns application-settings
source share
2 answers

You can follow this link for the Sync ML standard. This can give you a template for expanding the scope to accommodate more data and settings that are no longer being processed. This - gives detailed information about the open source synchronization structure

+2
source share

Forgive me if the following seems too general, but I tried to keep it at a high level to fit your question. I do not know if what you are looking for will be called a “design template” as such. It looks like you are looking for a synchronization paradigm / system. Please note, my assumption in this answer is that you need to have both online and offline features for your application (since you explicitly mentioned synchronization.) If I'm wrong, let me know.

In particular, what you are probably looking for is usually implemented using two things: 1) a "distributed" database (working offline on client applications such as mobile applications, as well as on any servers) and 2) the mechanism synchronization and conflict resolution.

A very good example of this is the Git source code management tool. Git has both of the above characteristics. Firstly, it uses a database (for example, the Git project file system), which can be distributed (for example, a project can be cloned from one developer's workstation to another and work independently). Secondly, it has a synchronization mechanism and a conflict resolution mechanism, that is, if I try to synchronize (e.g. pull) from a colleague's workstation, the differences between its code and my code can be combined (automatically or manually).

Another example, and perhaps more important for your application, is Evernote. If I'm not mistaken, Evernote uses the same paradigm (flat file database) to synchronize documents, as well as desktop clients, website and mobile clients.

This does not mean that you need to use a flat file database. You could easily use a relational or other database. In addition, depending on what data you are trying to save and synchronize, you can avoid a very simple conflict resolution. (For example, if you just save status updates, count the number of votes, etc. Maybe you just select the newest entry in the database.)

In short, the tools I mentioned seem to follow this kind of workflow:

  • When you start a session in the client application, synchronize or "update" the client by going to the Internet and pulling new data. Here you define and resolve conflicts between data on the client and what is on the server or the "cloud".
  • Edit or create offline data on the client, whether it’s a website, a mobile application, etc.
  • Synchronize or "update" the cloud by going to the Internet and clicking on the data that you changed.
+1
source share

All Articles