TommyCarlier wrote:
Our main application is a client/server application (WinForms client, IIS server (ASP.NET web service), SQL Server 2005) where it's very common to send large amounts of data from the server to the client. There are forms with GridControls of 30.000 rows and 30 columns. When measuring everything, we discovered that reading the data from SQL Server, serializing, compressing, encrypting, sending it to the client (via HTTP), decrypting and decompressing took less time than filling the GridControl on the client. The huge advantage you have, is the rich client experience: once the data is on the client, the user can sort, group and filter extremely fast. And if you use client-side caching, you can even reduce the amount of data that is transfered.
I see, and I'm aware of the benefits, and I even agree to a certain extent. With fat apps we did this as well. Yes, it does provide faster client manipulation. However I strongly feel that even though this was acceptable and pertinent on a fat client (even I did it). I don't see it the same way anymore. If you give a user 30,000 rows of data what is he expected to do with all that. He only requires certain rows. He is not going to scroll through 30,000 rows. He won’t open, or modify even 20-100 rows in a session for that particular data set. He quite likely has multiple applications open all eating up memory resources.
I thought about compression and yes it works but only on large datasets, on a smaller dataset it slows things down.
Sure it’s easier from a developer perspective, but where is the real benefit for the User. If you as a User load up a grid, the very first thing you do is filter or sort. It’s very rare the record you search is on the first line. So why not filter or sort before hand? This is in the context of a web app, and possible bandwidth, or target device limits.
I guess it comes down too what your goals are. I suppose there is no “right/wrong way” to do things.
As I stated above I only use a db for indexing and search. The actual data is stored as xml files. It may sound crazy, but the goals of the product demand it. XML storage I’m finding is really quite robust, and extensible.
All our other products to this point were SQL Server back end, and logically so. Unfortunately for this particular product it would be a risky undertaking.
So, how will a web app that loads that much data reliably scale up, or down? Down to other more limited devices (insert Origami, Tablet, or Pocket PC here), or up to many, many users geographically dispersed?
Another point comes to mind with regards to the client caching, when you don’t know the target OS or browser.
Your points are valid. But, I can’t assume a certain device, OS, or browser. Rather, I choose not to.
Is it just me, or is this thread getting way off topic? No thanks to me of course. 
Thanks for the input.