views:

85

answers:

4

I'm writing a simple program that will run entirely client-side. (Desktop programming? do people still do that?) and I need a simple way to store trivial amounts of data in a structured form, but really don't see any need to use a database system. What's more, some of the data needs to be serialized and passed around to different users, like some kind of "file" or perhaps a "document". (has anyone ever done that before?)

So, I've looked at using .Net DataSets, LINQ, direct XML manipulation, and they all seem like they would get the job done, but I would like to know before I dive into any of them if there's one method that is generally regarded as easier to code than others. As I said, the amount of data to be stored is trivial, even if one hundred people all used the same machine we're not talking about more than 10 MB, so performance is not as large a concern as is codeability/maintainability. Thank you all in advance!

+2  A: 

Sounds like Linq-to-XML is a good option for this.

Link 1 Link 2

Tons of info out there on this.

Jaxidian
After doing some super-simple testing, Linq-to-XML made things the super-simplest. Thank you!
NateD
You're super welcome! ;-)
Jaxidian
+2  A: 

Without knowing anything else about your app, the .Net DataSets would likely be your easiest option because WriteXml and ReadXml already exist.

Austin Salonen
+1. Exactly what I would have suggested. This is by far the easiest method for this scenario.
David Stratton
A: 

Any serialization API should do fine here. I would recommend something that is contract based (not BinaryFormatter, which is type-based) as that will keep it usable over time (as your assembly changes).

So I would build a basic object model (DTO) and use any of:

  • XmlSerializer
  • DataContractSerializer
  • protobuf-net (you all knew it was coming...)

OO, simple, and easy. And easy to use for passing fragments of the data (either between users of to a central server).

Marc Gravell
A: 

I would choose an embedded database. Using something like sqlite doesn't seem to be an overkill for me. You may even try its c# port (http://code.google.com/p/csharp-sqlite/).

Mr.Cat