De que se trata o artigo

O artigo trata de como dados podem ser armazenados temporariamente em aplicações ASP.NET que empreguem a tecnologia Web Forms. A forma de tratar informações dá-se o nome de controle de estado (são eles: Caching, Cookie, Session, ViewState etc).


Em que situação o tema é útil

É útil em situações que envolvam a manipulação temporária de informações. Esta é a principal justificativa para o uso dos recursos de gerenciamento de estado. Existirão casos em que não será necessária a gravação imediata de uma informação numa base relacional ou até mesmo, a própria aplicação disponibilizará um conjunto de dados em memória para um acesso mais rápido dos mesmos por parte de alguma funcionalidade. A exibição de determinados tipos de informações após requisições sucessivas dentro de uma mesma página, a obtenção de preferências de navegação/aparência selecionadas anteriormente e dados temporários que devem permanecer ativos enquanto um usuário estiver conectado (e não disparar uma possível ação) são outros bons motivos para o uso dos dispositivos de controle de estado.

Gerenciamento de Estado em Web Forms - Armazenamento temporário de informações

Nem sempre os dados necessários para a execução de funcionalidades de uma página da Web serão gravados de maneira permanente (em uma base de dados relacional, por exemplo). A manipulação de informações em um projeto criado a partir da tecnologia Web Forms envolverá, ao longo da execução de uma série de atividades, o acesso a um conjunto de dados muitas vezes por um limitado intervalo de tempo. Além disso, tais informações podem tanto ser de cunho geral, assim como restritas a determinados usuários dado seu caráter confidencial. O processo de armazenamento temporário de informações dentro de uma aplicação ASP.NET é conhecido como controle de estado, sendo que em inúmeros casos este tipo de ação estará relacionada à exibição de informações em controles visuais. O ASP.NET disponibiliza diversos objetos para o gerenciamento de estado em sistemas criados a partir da tecnologia Web Forms. Cabe aos desenvolvedores entender as diferentes necessidades dentro de um projeto para, a partir de tal análise, selecionar as alternativas mais adequadas a cada cenário.

Desde suas primeiras versões, a plataforma .NET possui um excelente suporte para a construção de sites dinâmicos: trata-se do ASP.NET, pois disponibiliza um conjunto extenso de recursos conhecido como Web Forms.

A tecnologia Web Forms foi desenvolvida utilizando como fundamento um conceito chamado de RAD (Rapid Application Development). Esta metodologia enfatiza a construção de interfaces gráficas que possam ser modeladas facilmente a partir de uma ferramenta gráfica (no caso, o Visual Studio). Além disto, controles visuais são empregados extensivamente, aliando-se a técnicas de orientação a objetos e programação orientada a eventos; tudo isto procura tornar mais ágil e flexível o processo de desenvolvimento de novas aplicações.

Páginas criadas em ASP.NET Web Forms podem se prestar às mais variadas finalidades, sendo que uma forma de uso bastante comum é a construção de funcionalidades do tipo CRUD (telas de cadastro/consulta). Embora a utilização de bancos de dados seja praticamente certa dentro de muitas aplicações, não será raro que determinadas informações sejam manipuladas em memória devido ao seu caráter provisório (e cuja confirmação poderá envolver ainda a persistência em uma base relacional posteriormente).

Nota do DevMan

RAD é um modelo que algumas tecnologias seguem para o desenvolvimento de aplicações rápidas. Utiliza o famoso Drag-and-Drop (arrasta e solta), onde você basicamente possui uma lista de componentes prontos e não tem a necessidade de construir a base de código.

Programação orientada a eventos é um paradigma de programação. Diferente do procedural que seguem um fluxo de controle padronizado, o controle de fluxo de programas orientados a evento é guiado por indicações externas, chamadas eventos. O mesmo é muito utilizado no desenvolvimento de interface com o usuário.

A manipulação temporária de informações é suportada pelo ASP.NET por meio do mecanismo de gerenciamento de estados. O mesmo oferece alternativas que tornam possível o armazenamento de objetos e outros tipos de dados, tanto do lado servidor, quanto no cliente (browser). A escolha de qual recurso é mais adequado depende de questões como, por quanto tempo uma informação estará acessível, quem poderá consumir a mesma, dentre outros aspectos.

Este artigo tem por finalidade apresentar alguns dos dispositivos que podem ser empregados no controle de estado dentro de aplicações Web Forms. Serão discutidos, assim, cenários em que variáveis de sessão ou aplicação, cookies, informações em cache e o mecanismo de ViewState podem ser considerados, apresentando ainda exemplos de uso de tais elementos.

Nota do DevMan

CRUD (sigla do inglês “Create, Retrieve, Update and Delete) é um termo que se refere a páginas Web construídas com fins de inclusão (Create), consulta (Retrieve), atualização (Update) e exclusão (Delete) de registros em uma base ou outro tipo de repositório de dados.

Controle de Estado em Web Forms: uma visão geral

O ASP.NET permite que informações de estado sejam armazenadas de diferentes maneiras:

• Através de uma referência comum a toda a aplicação disponível, portanto, às diversas partes que constituem a mesma (objeto Application);

• Como parte do objeto que corresponde à sessão de um usuário ativo num determinado instante (propriedade Session de uma página criada em Web Forms);

• Dentro da página que está sendo utilizada por um usuário para a realização de uma sequência de operações (objeto ViewState);

• Em um dispositivo de armazenamento temporário, com o acesso aos dados sendo permitido apenas durante um intervalo específico de tempo e que, uma vez expirado, forçará a uma nova atualização das informações envolvidas (técnica conhecida como caching);

• Como um arquivo armazenado dentro de um diretório específico do browser utilizado para acesso a um site, sendo que tal meio apresenta geralmente um prazo de validade (tais mecanismos são conhecidos como cookies).

A escolha por qual tipo de recurso empregar no controle de estado dentro de um site construído em Web Forms, dependerá de diversos fatores. Pesarão neste caso questões como:

• Por quanto tempo um conjunto de dados deverá estar disponível para acesso;

• Em que locais da aplicação tais informações serão consumidas;

• Se os dados serão armazenados no servidor ou devido a outros fatores, do lado do cliente (valendo-se de mecanismos oferecidos pelo browser que o mesmo utiliza);

• A finalidade a que se prestarão as informações a serem manipuladas, se de cunho geral ou específicas a um determinado usuário.

Levando em conta o desenvolvimento de grandes aplicações, é comum que uma série de procedimentos sejam adotados com o intuito de assegurar que a performance permaneça dentro de níveis aceitáveis. Diversas técnicas são normalmente empregadas com o objetivo de minimizar a utilização de memória nos servidores em que tais soluções encontram-se hospedadas. Diante do exposto, sistemas com um grande número de acessos simultâneos precisarão ter cautela ao manipular informações de estado: o uso deste tipo de recurso sem maiores critérios pode afetar a performance, diminuindo assim a escalabilidade das aplicações consideradas.

Nota do DevMan

A escalabilidade é uma característica perseguida altamente desejável em aplicações informatizadas. Um sistema é dito escalável quando possui a capacidade de se adequar a uma demanda crescente no seu uso, sem que deixe de corresponder ao que se aguardava inicialmente.

Variáveis de sessão e de aplicação possuem escopos diferentes. Enquanto nas primeiras, os dados armazenados serão específicos a cada sessão de usuário (e, portanto, acessíveis enquanto a sessão em questão ainda não tiver expirado), no caso das variáveis de aplicação as informações serão compartilhadas por todo o site (ou seja, serão comuns a todos os usuários acessando a solução num determinado momento). Carrinhos de compra (presentes em sites de e-commerce, por exemplo) são um exemplo clássico de uso de variáveis de sessão.

Uma página Web disponibiliza o acesso a uma sessão através de uma propriedade de nome Session (a qual aponta para uma referência do tipo HttpSessionState). Já a manipulação de valores associados à aplicação se faz utilizando a propriedade Application (que nada mais é do que um objeto gerado a partir da classe HttpApplicationState). Estes dois tipos (HttpSessionState e HttpApplicationState) funcionam como dicionários, sendo que essa estrutura funciona com uma chave (uma string de identificação) para acesso a um objeto qualquer.

...
Quer ler esse conteúdo completo? Tenha acesso completo