I recently received my TechEd 2005 conference DVDs which allow me to now catch up on many awesome sessions I was not able to attend while I was there. One session in particular that I just watched which is filled with great prescriptive information - not just how to , but when and why - is “DAT421: Client and Middle Tier Data Caching with SQL Server 2005” by Pablo Castro and Steve Lasker. One of the gems in there is this slide by Pablo, who is the PM on the ADO.NET team.
In order to make caching in the middle tier using a DataSet a reality (past performance issues made many find another way), the DataSet has been beefed up in a way that you can store massive amounts of data in there. (As Sahil points out in the comments, this does not give license to abuse the DataSet or your memory. Consider perf and best practices as always!) So querying the DataSet and refreshing it from the original data source is extremely fast now. I am looking forward to experimenting with this aspect of ADO.NET 2.0.
Here, by the way is the session description
At one point or another, almost every developer has had to deal with the problem of building a data cache for their application -- whether it is for performance or to enable offline capabilities. In both scenarios, there are a number of issues that need to be addressed: How do I know the cache is invalid?; How do I synchronize the cache?; And do I have all my data or only a subset in the cache?; etc. In most cases, every developer implements their own favorite flavour of the data cache solution. In this session we look at a number of new features in SQL Server 2005 that are specifically designed to address this problem and look at two specific solutions, one using replication, and one using Query Notifications.