Conclusion
In this first article, you didn't really get many answers. But we have laid the groundwork for some very interesting explorations in an important and immature field. Of course, you will find that there isn't one winning data container for every situationonly trade-offs, as usual. On the other hand, the choice is very important.
In this first article, I discussed the DataReader a bit, mostly to use it as a baseline in my performance tests. The place for DataReaders is typically in the implementations of other data containers. That is the case for the DataSet and also most custom object-oriented formats. It might also be interesting to use DataReaders in small applications directly from the UI, but for most enterprise applications, it's a no-no.
I'm not 100% sure about the agenda details of the upcoming articles at this point, but the current plan looks like this:
Part 1: DataReader (Okay, this is a pretty safe guess.)
Part 2: Untyped and typed DataSets
Part 3: Wrapped container datatype and the Generic container datatype
Part 4: Custom classes and collections
Part 5: A summary of interesting findings and the results of additional tests
Don't miss the second article in this series, about DataSets.