P>

capa_NET39_G.gif

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

Mão na Massa - ASP.NET

Construa seu próprio Orkut em ASP.NET

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       Site de relacionamento;

·       Profiles;

·       MemberShips;

·       Web User Control.

Visual Studio 2005, ASP.NET 2.0, ASP.NET Ajax e C#.

 

Não é preciso dizer o quanto está na moda os sites de relacionamentos. O mais famoso deles, Orkut, possui atualmente mais de quarenta milhões de usuários. Mais do que isso, “site de relacionamentos” tornou-se um novo conceito na internet.

Hoje é comum termos a funcionalidade de rede de contatos pública em diversos outros sites, e até mesmo aplicações. O que você acha então de criar o seu próprio site de relacionamentos? Ou embutir essa funcionalidade em suas aplicações Web?

Neste artigo desenvolveremos uma aplicação que gerencia uma rede de relacionamentos. Utilizaremos alguns importantes recursos do ASP.NET 2.0, principalmente Profiles. E acredite, criaremos o site de relacionamentos sem modelar nenhuma tabela no banco!

Um pequeno resumo teórico

Antes de mais nada gostaria de dizer que esse assunto já foi brilhantemente abordado na SQL Magazine, pelo Rodrigo Hjort na edição 35. No artigo Busca em redes sociais e árvores usando PL/pgSQL, o autor explorou como deve ser modelado um banco para aplicações desse tipo, e também demonstrou como implementar alguns algoritmos de buscas.

Neste artigo não exploraremos essas questões, portanto sugiro que assim que possível você leia o artigo. Vamos focar nossos trabalhos no desenvolvimento de uma aplicação Web. Veremos que é bem mais simples criar um site de relacionamentos do que se imagina.

Porém é importante entendermos o que de fato é uma rede social. Tirado do artigo citado anteriormente: Uma rede social é uma das formas de representação dos relacionamentos afetivos ou profissionais dos seres humanos entre si ou entre seus agrupamentos de interesses mútuos. Na prática, imagine um sistema onde você tem um cadastro com todos os seus contatos.

Todos os usuários do sistema podem acessar seu perfil e consultar os seus contatos, assim como os contatos de todos os usuários do sistema, criando assim uma estrutura recursiva. Algo como o que podemos ver na Figura 1.

 

image004.jpg 

Figura 1. Exemplo de uma rede de relacionamentos

Esse é um bom exemplo de uma rede social. Veja que uma pessoa ou usuário do sistema pode possuir um ou mais contatos, formando uma árvore de relacionamentos. Mas você, como programador, qual é a primeira coisa que pensa quando vê um desenho desses? Como é que eu vou modelar as tabelas desse sistema?

É simples. Temos que realizar um relacionamento recursivo na tabela de usuários da aplicação. Dê uma olhada na Figura 2 (também retirada do artigo citado anteriormente).

 

image006.gif

Figura 2. Relacionamento recursivo do tipo rede

Veja que nesse diagrama, a tabela Perfis se relaciona com ela mesma em um relacionamento N:N. Ou seja, um Perfil pode se relacionar com N outros perfis no sistema. É assim que devemos modelar uma base de dados que representa uma rede social.

Veremos mais adiante como implementar esse tipo de relacionamento apenas usando o Profile do ASP.NET 2.0. Agora, para começarmos a desenvolver nossa aplicação, crie um novo banco em seu SQL Server (2000, 2005 ou 2005 Express). Esse banco deverá se chamar “RedeSocial”.

Application Services

Antes de começarmos a desenvolver uma aplicação, principalmente para Web, precisamos decidir como realizaremos a autenticação dos usuários. Vamos optar por usar os controles de Login do ASP.NET, que são totalmente compatíveis com o Profile.

Para usarmos o Membership e os Profiles do ASP.NET,  precisamos “preparar” nosso banco para que contenha as tabelas necessárias para esses recursos. Execute o arquivo aspnet_regsql.exe, que está no diretório C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727. Um wizard será iniciado, na segunda tela, selecione a opção Configure SQL Server for application services.

Na tela seguinte aponte para o banco de dados RedeSocial do SQL Server e prossiga com o assistente. Ao finalizar, confira as tabelas criadas no RedeSocial (Figura 3).

 

image008.jpg 

Figura 3. Tabelas do Application Services do ASP.NET 2.0

Veja que várias tabelas com o prefixo aspnet foram criadas no banco. Essas tabelas serão utilizadas pelo ASP.NET para realizar tarefas como controle dos usuários, Roles, Access Rules, Profile etc.

Utilizaremos as mesmas para o processo de login dos usuários (Membership) e para os Profiles. Assim não precisaremos criar nenhuma tabela adicional no banco. Ao decorrer do artigo entenderemos como tirar o máximo proveito dessas tabelas.

Todo o conjunto de funcionalidades que o ASP.NET proporciona através dessas tabelas é chamado de Application Services. Se fossemos detalhar todo o funcionamento do Application Services precisaríamos bem mais do que um artigo.

Se você não conhece nada a respeito sugiro que dê uma lida no meu artigo Segurança – conheça os novos controles de login publicado na edição 30 da .net Magazine.

Criando a aplicação com AJAX

Desenvolveremos os exemplos utilizando o ASP.NET Ajax. Para isso, caso ainda não tenha instalado, é necessário que você instale-o em seu ambiente de desenvolvimento. Não teremos tempo para detalhar toda a instalação do AJAX, portanto peço para que você acesse o site ajax.asp.net, onde encontrará instruções e os downloads.

Caso você não deseje utilizar o AJAX nos exemplos, basta não incluir os controles durante o desenvolvimento da aplicação, tudo deverá funcionar corretamente. Abra o Visual Studio 2005 e escolha a opção File>New>WebSite.

Como mostra a Figura 4, selecione o item ASP.NET Ajax-Enabled Web Site, modifique o nome para “RedeSocial” e clique em OK.

 

image010.jpg 

Figura 4. Criando o Web Site com ASP.NET AJAX

Web.config

Agora que já temos o Web Site criado, precisamos fazer apenas um pequeno ajuste no Web.config para que os controles de Login do ASP.NET apontem para o banco RedeSocial. Através da Solution Explorer abra o arquivo Web.config.

Observe que o arquivo está bem mais extenso do que o comum, isso se deve ao AJAX que inclui diversas linhas no Web.config. Portanto é muito importante não modificar nenhuma dessas configurações, vamos apenas incluir as configurações necessárias para o Application Services do ASP.NET.

Com o Web.config aberto, procure pela tag . Abra uma linha antes dessa tag e inclua as configurações da Listagem 1.

 

Listagem 1. Configurando ConnectionString para acesso ao banco

...

<connectionStrings>

  <clear/>

    <add

      name="RedeSocialConnectionString"

      connectionString="Data Source=(local);

     Initial Catalog=RedeSocial;

      Integrated Security=True"/>

connectionStrings>

...

 

Veja que estamos simplesmente criando uma nova ConnectionString que aponta para o banco da aplicação. Em seguida abra uma nova linha, agora logo abaixo da tag e adicione o código da Listagem 2.

 

Listagem 2. Configurando o MemberShipProvider e o ProfileProvider do ASP.NET

...

<authentication mode="Forms"/>

<membership

  defaultProvider="AspNetSqlMembershipProvider">

  <providers>

    <clear/>

    <add

      name="AspNetSqlMembershipProvider"

      type="System.Web.Security.SqlMembershipProvider"

         connectionStringName="RedeSocialConnectionString"/>

  providers>

membership>

<profile defaultProvider="AspNetSqlProfileProvider">

  <providers ...

Quer ler esse conteúdo completo? Tenha acesso completo