I am developing a desktop application that will need to collect data (from the user) and store it locally in a secure fashion. It will need to synchronize this data with a central database when an internet connection is available. The application is WPF and I would like to take advantage of the new data-binding features of WPF. I really want this application to be lightweight, and thus not having formal business objects, and just binding directly to the XML file. My issue with this however is security. I could see encrypting the XML files, is that a realistic option. Another reason I wanted to use XML is for interfacing with other applications (on the desktop), which for this type of application, happens a lot.
On the flip side, there is SQL Server Compact, but to use it, I would most likely want business objects to represent tables, and to interface with other applications I would need to spit the data out to XML anyways. Security would be easy, just add a password to the database.
What do you guys think? Is there something I’m not taking into consideration, have I given enough information about my problem domain?
I’ve just finished an application that does exactly this, i.e. local database with sync to remote (SQL2008). I spent a lot of time looking into this and finally settled on:
I realise that you want something lightweight – but I have to say that Entity Framework & Bindings take most of the pain out of databinding and building the UI, so you can concentrate on the problem in hand rather than the technology.
I would use WCF to bind to external applications.