Clique aqui para ler todos os artigos desta edição

Profiles

Gerencie perfis de usuário com ASP.NET 2.0

 

O HTTP é um protocolo state-less. Isso significa que um servidor Web interpreta cada requisição de um cliente como sempre sendo a primeira. No entanto, manter o estado entre requisições é uma exigência da maioria das aplicações Web, e o ASP.NET possui inúmeros recursos para cumprir esse objetivo.

Por exemplo, o recurso de ViewState (e agora o ControlState) permite que um controle “lembre” o seu estado entre uma requisição e outra. Objetos como Cache e Session também permitem que informações sejam persistidas entre requisições. Talvez um dos exemplos mais clássicos do uso de sessão seja um carrinho de compras, sem manter o estado, seria impossível armazenar múltiplos produtos para a compra de um usuário.

No entanto, sessões são voláteis. Quando um usuário sai do site, ou quando a sessão expira (session timeout), tudo o que você gravou em sessão se evapora (a menos que se use um State Server). Mais exatamente, um objeto Session permite armazenar informações que persistem entre diferentes requisições do mesmo usuário, mas não persiste entre sessões, porque são informações de memória.

No ASP.NET 1.x,  se você deseja persistir informações que sobrevivem a várias sessões do mesmo usuário, pode considerar duas saídas: usar cookies persistente (que é um recurso limitado) ou criar um mecanismo de persistência próprio.

Imagine, por exemplo, que você precise criar um carrinho de compras onde os produtos não sejam descartados caso o usuário abandone o site e retorne no dia seguinte. O procedimento normal seria armazenar esses dados em um BD, ou seja, persisti-los. O fato é que você é responsável por criar esse mecanismo de persistência, você tem que escrever código extra.

Felizmente o ASP.NET 2.0 trouxe um novo e interessante artifício que veio para incrementar o arsenal de recursos relacionados ao gerenciamento de estado. Profiles permitem que informações para um usuário sejam persistidas e mantidas entre diferentes sessões do mesmo usuário. O ASP.NET se encarrega de ler e gravar os dados a partir de um meio de persistência, como o SQL Server.

Com Profiles podemos, por exemplo, armazenar preferências de um usuário para um determinado site ou portal. É muito comum atualmente WebSites guardarem preferências para seus usuários, como plano de fundo para as páginas, cores, exibição e posição de janelas, tudo isso pode ser feito com Profiles no ASP.NET 2.0.

Neste artigo, você aprenderá a trabalhar com o recurso de Profiles, através de exemplos práticos, comprovando como é simples utilizar esse novo mecanismo de persistência.

 

Definindo o Profile

Vamos iniciar com um exemplo simples. Usando Profiles, vamos guardar informações sobre o usuário, como nome, e-mail e empresa. Inicie então um novo ASP.NET Web Site (C#) no Visual Studio 2005, chamado “Profiles1”.

O primeiro passo é definir o que será armazenado no Profile do usuário, através do arquivo Web.Config. No Solution Explorer, dê um clique de direita no nome do Web Site e escolha a opção Add New Item. Na caixa de diálogo que aparecerá escolhe a opção Web Configuration File para criar um novo Web.config.

No arquivo definimos os campos que serão armazenados, dentro de um elemento chamado . Adicione o código da Listagem 1 no arquivo de configuração criado, abaixo do elemento <System.Web>.

 

Listagem 1. Definindo o Profile no Web.Config

<profile>

  <properties>

    <add name="Nome"/>

    <add name="Empresa"/>

    <add name="EMail"/>

    <add name="Count" type="Int32"

      defaultValue="0"/>

    properties>

profile>

 

Aqui definimos que o perfil do usuário será composto por quatro campos. Note que definimos cada um através de elementos , que possui vários atributos, no exemplo estamos usando os principais. Name define o nome do campo, enquanto Type indica o tipo de dado. Quando não definimos o tipo do campo, como por exemplo, para os três primeiros elementos, o tipo padrão assumido é string.

O campo Count foi informado para indicar o número de vezes em que o usuário entrou no site, e é do tipo Int32. Note que podemos atribuir um valor padrão para um campo, através do atributo defaultValue. Ele é usado caso não seja informado nenhum valor para o campo no momento da gravação do Profile.

 

Gravando e recuperando informações do Profile

Na página principal criada para o Web Site (default.aspx), desenhe um formulário semelhante ao da Figura 1. Temos no formulário dois Labels (“lblHeader” e “lblVisitas”), três TextBoxes (“tbNome”, “tbEmpresa” e “tbEmail”) e um botão, além dos textos indicativos dos campos.

 

Figura 1. Formulário principal da aplicação


...

Quer ler esse conteúdo completo? Tenha acesso completo