Architecture question - how to store local copies of data on a server

My work order application needs to do the following:

1) User has a windows forms client on their laptop, PC, or even mobile client.

2) When they have an active connection, they can connect to a web service to view new tasks, mark the ones they want to download to their local machine, then disconnect.

3) They can then edit their local copies of these tasks, then re-synch with the server when they next have a connection.

Reason being, they may often have to take work orders into the field where they will not have an internet connection.

Question:

How can I store these locally in a secure manner, i.e., in a format that I cannot just open with notepad or something

Thanks.




Answer this question

Architecture question - how to store local copies of data on a server

  • Buggs Bunny

    The most common way is to use SQL [for mobile] or encrypt XML.

    Look at the Smart Client Baseline Architecture Toolkit. http://www.gotdotnet.com/codegallery/codegallery.aspx id=941d2228-3bb5-42fd-8004-c08595821170

    Clemens



  • Eric66

    Note that the SQL example I gave does not have distribution problems as it runs within the same process as your application (it is embedded SQL). It does not require something else to be installed (in fact it is just a .dll that you include with your application)

    As for dealing with encrypted XML, http://www.codeproject.com/csharp/CryptoXML.asp is a simple article discussing using encryption + a dataset to store encrypted XML.

    Cheers,

    Greg


  • khemmerl

    agent_smith wrote:

    Embedded SQL

    Bear with me, I am a nub at embedded SQL.

    Any how-to's, links, etc. would be apprectiated.

    the DB Greg mentioned is SQLite: http://www.sqlite.org/

    Arnon



  • Dylan72

    Embedded SQL

    Bear with me, I am a nub at embedded SQL.

    Any how-to's, links, etc. would be apprectiated.



  • Marlon

    You may also want to look at Isolated Storage (http://msdn2.microsoft.com/en-us/library/3ak841sy(VS.80).aspx) and Encypted File System (EFS) - http://www.microsoft.com/technet/security/topics/cryptographyetc/efs.mspx

    Arnon



  • LeeSan

    Basically it is an "in-process" SQL server.

    It is a library that you can link to which provides SQL operations within your process (i.e. no external SQL server) http://www.eggheadcafe.com/articles/20040714.asp also walks you through using the managed providers for sqlite. Because you are in process things are also ALOT faster than with an external SQL system.

    Cheers,

    Greg


  • Justin_K

    Thanks for the answers.

    I do not want to use SQL mobile because I think it would create distribution headaches. I may not have control over the desktops or mobile devices.

    Remote users would download the client themselves.

    Encrypted XML files would work fine.

    Any sample code or links would be greatly appreciated.



  • Michael Blome - MSFT

    Wow lots of ways, encrypting the data would be an easy one ... a database such as SqlLite is anopther viable alternative.
  • New2 .NET

    I made a project doing that. Encrypting is very easy, you have lots of example in codeproject or wherever.

    SQL for mobile is a good option but it gives you much more than what you are asking for, you could implement all the messaging with sql and you can forget about being or not online.



  • Architecture question - how to store local copies of data on a server