O ASP.NET 4.0 oferece um novo mecanismo para habilitar/desabilitar o view-state, deixando seu controle muito mais simples que anteriormente. Para armazenar seu estado, controles ASP.NET têm utilizado o view-state, habilitado por padrão até agora. Este comportamento resulta algumas vezes em grandes quantidades de dados sendo trafegados entre o cliente e o servidor.
Uma completa explicação do papel do view-state no ASP.NET pode ser encontrada no post Truly Understanding Viewstate, de Dave Reed, escrito em agosto de 2006. É leitura recomendada para todos os desenvolvedores trabalhando com a plataforma ASP.NET. Assim como Dave fala, "View-state é um conceito muito mal entendido", e deve ser usado com cuidado. Desenvolvedores que não compreendem como o view-state funciona, podem ficar surpresos ao olhar o HTML retornado ao navegador. Se ele não estiver ciente de como o view-state é usado, o tamanho da página retornada ao usuário pode ser extremamente grande, resultando em websites com baixa performance em potencial.
Na PDC2008, Scott Hunter, Program Manager para o ASP.NET, falou sobre o roadmap do ASP.NET 4.0. Em sua apresentação, ele explicou as diferenças do view-state nesta versão:
Nós vamos dar o que chamamos de controle granular do view-state. Isto significa que você poderá desligá-lo em uma página e somente ligá-lo para os controles que você escolher, ao invés de fazer este controle em milhares de lugares. Então será muito mais fácil dizer: Eu o quero desligado para a página, mas ligado para estes três controles e pronto.
Para resumir, isso nos dá o direito de:
- Desabilitar na página, habilitar em controles específicos
- Desabilitar no controle, habilitar em controles-filhos
Da mesma forma, foi prometido que o GridView/ListView funcionará melhor sem o view-state.
Foi perguntando ao Scott se o view-state seria desabilitado por padrão durante uma entrevista feita pelo podcast getpixel8ed.com, também gravada durante a PDC2008:
Isso ainda está no ar. Eu gostaria que fosse o padrão. Talvez se você estiver criando uma aplicação 4.0 será desabilitado por padrão, enquanto obviamente se estiver desenvolvendo para várias versões incluindo 3.5 ou 2.0, você terá o comportamento original.
A apresentação completa de Scott na PDC sobre o roadmap do ASP.NET contém mais informações sobre o que vai mudar no ASP.NET 4.0.