Serialization is necessary in viewstate (albeit it looks encrypted) because
HTML can only show text, not a binary object. It could conceivably use a
binary description of an object encoded to text, but that encoding is yet
another protocol, so XML is easier from a decision-making standpoint.
I'll give you another example of using serialization, as I really don't mess
with the viewstate and dont' care about the format of my session vars: I
work on an app that displays grids of data for reports but also displays
complex hierarchies of relationships. For the former, I just use automatic
databinding, and that's that, as tables are perfectly suited for that kind
of data. However, for the hierarchical data, my intent is to pull various
related records into a hierarchical structure (my object). However, SQL
Server doesn't return CLR objects, so the DB and my app communicate with
text. Because of that, when the app gets the data, it can either get a
bunch of DB records and build an object from that, but that is tying DB
schema into the app. Instead, I just have the DB query return the data in
XML (in other words, as a serialized object). All my code has to do to
access that object now is to merely deserialize it.