ASP .NET - Usando MemberShip, roles e Profiles com o Microsoft Access
Um pouco antes de lançar a versão final da ASP .NET 2.0, a versão beta continha os provedores para MemberShip, Roles e Profiles para SQL Server e para o Microsoft Access. Na liberação da versão final somente o provedor para SQL Server foi mantido.
A nova versão ASP .NET 2.0 trouxe um número de serviços que são comuns a muitas aplicações para web como a autenticação e autorização (MemberShip e Roles), perfis de usuários (Profile) , estado da sessão e a personalização. Nas versões anteriores você tinha que implementar estes recursos via código mas com a ASP .NET 2.0 eles estão disponíveis como serviços que você pode usar . Veja na figura abaixo alguns destes serviços:
Então, se você conhece o modelo de providers da ASP .NET 2.0 sabe como eles são poderosos e fáceis de implementar e usar com o SQL Server e também com o SQL Server 2005 Express Edition. Ocorre que não é sempre que se tem acesso ao SQL Server 2005, mesmo na versão Express, em web servers , quer seja pela não disponibilidade, quer seja pelo preço que se tem que pagar. Já o suporte ao Microsoft Access é quase universal. Neste cenário cabem algumas perguntas:
Então a migração para ASP .NET 2.0 para quem tinha
a sua aplicação usando o Microsoft Access como é que fica ?
Podemos implementar o modelo de providers para MemberShip, Roles e Profiles no Microsoft Access ?
É obvio que sim, na verdade você pode implementar o seu próprio modelo para qualquer banco de dados inclusive o Microsoft Access.
Para o Microsoft Access você pode fazer o download do exemplo criado pela Microsoft neste link: Microsoft Access Providers ou Aqui
Neste artigo eu vou mostrar como você pode usar o modelo de Providers para o Microsoft Access.
Para acompanhar este artigo você deverá possuir os seguintes recursos:
Eu vou usar as versões Express , desta forma todos poderão acompanhar.
Após efetuar o download , um arquivo .vsi (Visual Studio Community Content Installer), você deve executar o arquivo(clique duas vezes sobre o mesmo) que será instalado um template que pode ser acessado ou no Visual Studio 2005/2008 ou no Visual C# Express Edition.
Será copiado um arquivo chamado ASP.NET Access Providers.zip na pasta de templates do Visual Studio conforme a figura abaixo:
Este é o template(modelo) que foi instalado e você não precisa fazer mais nada apenas criar um novo projeto baseado neste template. Vamos fazer isso...
Veja na figura abaixo o modo de acesso nas duas ferramentas:
Visual Studio 2008 - Create New Projet | Visual C# Express Edition - Create Project |
Criando o assembly .ddl no Visual C# Express
Crie um novo projeto no Visual C# Express Edition conforme indicado acima;
Clicando no botão OK teremos um novo projeto criado com todos os arquivos que você precisa para construir , configurar e rodar uma aplicação com os Providers para o Microsoft Access. A sua solução deverá apresentar os seguintes arquivos:
Vejamos os arquivos mais importantes :
Arquivo | Descrição |
web.config | Contém todas as configurações que você precisa para configurar o sua aplicação ASP .NET 2.0 para trabalhar com o provider. |
ASPNetDB.mdb | Este é o arquivo que faz o papel do ASPNETDB.mdf para o SQL Server e é usado pela aplicação. Quando você usa com o SQL Server o arquivo é criado automaticamente; no caso do Microsoft Access isso não ocorre e você terá que usar este banco de dados para no seu web site. |
*.cs | Contém a implementação para os providers : Membership, Roles, Personalization e Profiles. |
Os arquivos readme.txt e eula.rtf podem ser
apagados , depois de lidos, que não serão necessários.
O próximo passo é alterar o nome do Assembly criado pelo projeto. Vamos
alterar o nome de ASP.NET Access Providers1 para
SampleAccessProviders pois este nome será
usado para configurar o projeto. Será criado o arquivo
SampleAccessProviders.dll. Clique com o botão direito sobre o nome do
projeto e selecione Properties , na aba Application altere o nome
confirme a figura abaixo:
Salve a alteração e fecha a janela de Properties.
Agora vamos salvar o projeto, clique em Salvar ou pressione CTRL+S. Observer na janela Save Project o local onde estamos salvando o projeto.
Vamos compilar o projeto clicando no menu Buld Solution F6; isso irá criar o arquivo SampleAccessProviders.dll. na pasta \bin\Release da solução.
Com o assembly criado temos tudo pronto para criar os Providers para o Microsoft Access. Vamos fazer isso criando e configurando a nossa aplicação web para usar o novo provider. Vamos então fechar o Visual C# .
Criando a aplicação web no Visual Web Developer Express
Nesta etapa vamos criar um novo web site que vai usar os providers para o Microsoft Access e usar o Web Site Administration Tool (WSAT) para criar novos usuários e perfis que serão armazenados no novo banco de dados.
Como estamos começando vamos criar um novo web site, porém quando você entender como funciona o provider para o Access você poderá aplicá-lo a um web site já existente. Vamos com calma...
Abra o Visual Web Developer 2008 Express Edition e selecione no menu File -> New Web site;
Em templates selecione ASP .NET Web Site, selecione a linguagem (eu escolhi Visual Basic) e informe o nome do web site como Access_Providers;
Clique no botão OK para criar o novo web site. Na janela Solution Explorer serão criados dois arquivos : Default.aspx e web.config e a pasta App_Data.
Apague o arquivo web.config pois iremos usar outra versão para este arquivo. Vamos agora configurar o site para usar o Access providers.
Clique com o botão direito sobre o nome do projeto e selecione a opção Add ASP .NET Folder -> Bin. Com isso iremos criar uma pasta Bin no projeto onde iremos copiar o assembly .dll do Access Providers.
Agora vamos copiar os arquivos web.config para o raiz e o arquivo ASPNetDB.mdb para a pasta App_Data, a partir do projeto criado no Visual C# para o projeto criado no Visual Web Developer. Você pode fazer isso abrindo duas janelas lado a lado e arrastar e soltar os arquivos conforme abaixo:
Agora copie o arquivo SampleAccessProviders.dll a partir da pasta bin\Release para a pasta Bin no projeto Web no Visual Web Developer.
Ao final a sua janela Solution Explorer deverá apresentar os seguintes arquivos:
Vejamos a seguir um resumo sobre o conteúdo dos arquivos usados no projeto até o momento:
- O arquivo web.config incluído no projeto contém as definições de configuração que informam ao ASP .NET para usar em tempo de execução os providers do MS Access e o banco de dados ASPNetDB.mdb ao invés do provider padrão para o SQL Server.
- O arquivo ASPNetDB.mdb incluído no projeto é quase idêntico ao da versão para o SQL Server 2005 que é criado de forma automática pelo ASP .NET em tempo de execução.(Existem diferenças que iremos detalhar adiante)
- O assembly SampleAccessProviders.dll incluído na pasta /Bin contém toda a lógica para que o provider funcione usando o banco de dados MS Access.
Antes de continuar vamos dar uma olhada no arquivo web.config mostrando alguns pontos importantes:
1- No início do arquivo temos a definição da string de conexão :
<
connectionStrings>Note que o caminho aponta para o arquivo .mdb na pasta App_Data onde o ~ será expandido em tempo de execução para o caminho completo da usa aplicação web.
Note que o arquivo ASPNetDB.mdb contém toda a estrutura já criada para dar suporte a utilização do provider para MS Access. Veja abaixo a estrutura deste arquivo:
No esquema exibido temos as tabelas que são usadas para armazenar informações do usuário, autorização, perfis, etc. Além das tabelas existem diversas consultas que são usadas para criar e modificar dados. Na maioria dos casos você não vai precisar alterar a estrutura destas tabelas nem das consultas.
2- O elemento MemberShip diz ao ASP .NET em tempo de execução para usar o AccessMembershipProvider para todos os serviços membership;
<membership defaultProvider="AccessMembershipProvider"> <providers> <clear/> <add name="AccessMembershipProvider" type="Samples.AccessProviders.AccessMembershipProvider, SampleAccessProviders" connectionStringName="AccessFileName" enablePasswordRetrieval="false" enablePasswordReset="false" requiresUniqueEmail="false" requiresQuestionAndAnswer="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" applicationName="SampleSite" hashAlgorithmType="SHA1" passwordFormat="Hashed"/> </providers> </membership>
Bem, chega de teoria e vamos mostrar como usar efetivamente os providers para MS Access em nosso web site.
Acompanha a continuação no artigo : ASP .NET - Usando MemberShip, roles e Profiles com o Microsoft Access 2
Eu sei é apenas ASP .NET mas eu gosto ...
José Carlos Macoratti