>What do you consider large? Would 35k be large?
That depends on your situation actually, but 35k is not big.
>When you refer to "deserialized into the local AppDomain", what does this mean exactly?
I actually screwed up here. Internally the Cache uses a Hashtable to store the cached values - the cache is bound to a specific AppDomain.
So there's actually no issue getting values out of the cache - you are talking to a live object instance not a deserialized version of it it looks like.
I did a little more research trying to find out exactly how the cache works, but I couldn't find any precise info that talks about the implentation. I dug out Reflector and traced through some of the Cache implemenation and it looks like it's going to a Hashtable for items added directly (Page Cache do some more complex logic incluing passing on the chaching directly to IIS6 for example).
However, it looks to me like you create the object and store it in the cache and you get a reference back. Since DataSet/DataTable are thread safe for read operations there shouldn't be any problems with this approach.