Construindo uma aplicação ASP.NET para Windows Azure e SQL Azure

Waldemir Cambiucci
Dezembro 2010

Tecnologias: SQL Azure, Windows Azure, SDK 1.2 e SDK 1.3 da plataforma Windows Azure, Visual Studio 2010

 

Sumário: Este artigo apresenta os passos para a construção de uma aplicação ASP.NET WEB ROLE para a plataforma Windows Azure, consumindo dados de uma base no SQL Azure. Neste artigo, você irá aprender a preparar sua estação de desenvolvimento, migrar uma base de dados para o SQL Azure, criar sua primeira aplicação ASP.NET Web Role, acessar os dados de uma instância de SQL no SQL Azure e finalmente publicar sua aplicação no Windows Azure. Confira!

Importante: Este artigo está baseado no SDK 1.2 da plataforma Windows Azure, com comentários sobre as funcionalidades do novo SDK 1.3 de Novembro de 2010.

Conteúdo

arrow_down.gifCriando uma conta no Windows Azure
arrow_down.gifPreparando o ambiente de desenvolvimento
arrow_down.gifCriando uma base no SQL Azure
arrow_down.gifMigrando dados para o SQL Azure
arrow_down.gifCriando uma aplicação ASP.NET para o Windows Azure
arrow_down.gifConsumindo dados do SQL Azure
arrow_down.gifPublicando uma aplicação no Windows Azure
arrow_down.gifConclusões
arrow_down.gifReferências
arrow_down.gifSobre o Autor

Criando uma conta no Windows Azure

Para acompanhar esse artigo, você irá precisar de uma conta ativa no Windows Azure. Você pode rapidamente criar uma conta para testes na plataforma escolhendo a opção INTRODUCTORY SPECIAL, disponível para a região “Brasil”. A conta INTRODUCTORY SPECIAL oferece recursos gratuitos até um certos limites de utilização é bem indicada para seus primeiros passos na plataforma Azure. Veja mais no link a seguir:

Windows Azure – Introductory Special
Ref.: https://www.microsoft.com/windowsazure/offers/

Preparando o ambiente de desenvolvimento

Para começar, você precisa preparar seu ambiente de desenvolvimento com o Visual Studio 2010. Se ainda não o tiver instalado, use o Visual Studio Express Edition, com download gratuito a partir do link abaixo:

Visual Studio 2010 Express Edition
Ref.:https://www.microsoft.com/express/Downloads/

Com o Visual Studio corretamente instalado, faça o download de outro componente importante para a demo, o SQL Azure Migration Wizard, a partir do link abaixo:

SQL Azure Migration Wizard
Ref.: https://sqlazuremw.codeplex.com/

Agora abra o Visual Studio 2010 como ADMINISTRADDDOR e selecione a opção ‘File / New / Project’. A janela de templates irá aparecer. Nela, escolha a pasta ‘Cloud’ e o template 'Windows Azure Project’, para a linguagem de sua preferência. Nesse exemplo, estarei usando a linguagem Visual C#.

Como é sua primeira aplicação, o Visual Studio irá direcioná-lo para instalar o pacote Azure Tools for Visual Studio, no link a seguir:

Windows Azure Tools for Microsoft Visual Studio
Ref.: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en

Siga as instruções de instalação do Azure Tooks for Visual Studio e terminar, sua máquina está pronta para começar a demonstração. O primeiro passo será criar uma base de dados no SQL Azure.

Criando uma base no SQL Azure

Em sua conta no SQL Azure, abra o portal de administração e crie uma nova instância de SQL Azure para nosso exercício. O portal de administração do SQL Azure é visto na figura 1 a seguir:

Portal de Administração do SQL Azure
Ref.: https://sql.azure.com/


Figura 1 – Portal de administração do SQL Azure, no link https://sql.azure.com/

Vamos criar uma base chamada ‘ADVENTUREWORKSAZURE’, pois vamos migrar essa base local para o SQL Azure.  Ao clicar no botão ‘Create Database’, vamos escolher uma base de 1 GB, edição Web, pois será suficiente:


Figura 2 – Criando uma instância de SQL Azure para testes.

Ao final, temos uma base da versão WEB Edition do SQL Azure, com tamanho máximo de 1 GB de dados. Note que a base de administração ‘master’ continua na lista. A base ‘master’ não é cobrada como serviço do usuário, serve apenas para controle interno do SQL Azure.


Figura 3 – Instâncias de SQL Azure disponíveis no portal do SQL Azure.

Outra tarefa importante para nossa aplicação é configurar os IP’s liberados no FIREWALL do SQL Azure. Isso é feito na aba “Firewall Settings”, que você vê na figura abaixo.


Figura 4 – Configuração de endereços IPs liberados para acesso do SQL Azure.

Em meu exemplo, estou liberando todas as faixas de IP’s, pois o cenário é apenas de teste. Em sua aplicação final, faça a correta configuração dos IP’s válidos de suas estações clientes para consumo do banco SQL Azure. Você poderá fazer isso através do botão “Add Rule”.

Migrando dados para o SQL Azure

Agora que temos nossa base criada, podemos usar a ferramenta SQL Azure Migration Wizard para migrar o schema e os dados de uma base local para a nuvem. Vamos escolher uma base conhecida para carga, a base ‘AdventureWorks’, que você encontra no link abaixo:

AdventureWorks Community Samples Databases for SQL Azure (December CTP)
Ref.: http://msftdbprodsamples.codeplex.com/releases/view/37304

A base acima já está compatível com os objetos suportados pelo SQL Azure. Abrindo o SQL Azure Migration Wizard, vamos escolher a carga a partir de um arquivo TSQL, como vemos a seguir:


Figura 5 – Tela principal da ferramenta SQL Azure Migration Wizard, para carga de dados no SQL Azure.

Note que escolhi a opção de análise de compatibilidade e migração do arquivo. Ainda, estou usando um arquivo reduzido do ‘AdventureWorks’, pois retirei parte dos dados, para um teste de carga mais rápido. Mantive as estruturas e schemas do banco sem alteração.

O SQL Azure Migration Wizard faz uma varredura de análise no arquivo TSQL inciado, como vemos a seguir:


Figura 6 – Tela da ferramenta SQL Azure Migration Wizard, mostrando o processo de análise de compatibilidade do arquivo TSQL, antes da carga de dados no SQL Azure.

A partir dessa análise, a ferramenta pede as credenciais de acesso e o nome do servidor SQL AZURE que vamos usar, veja:


Figura 7 – Tela da ferramenta SQL Azure Migration Wizard, com a janela para entrada de credenciais de acesso para o SQL Azure.

Entrando o servidor e as credenciais de sua conta no Windows Azure corretamente, o SQL Azure Migration Wizard mostrará as bases disponíveis na nuvem. Como vemos, nossa base ADVENTUREWORKSAZURE aparece na lista. Vamos selecionar essa base para começar a migração dos dados locais.


Figura 8 – Tela da ferramenta SQL Azure Migration Wizard, selecionando a base de SQL disponível no SQL Azure.

Finalmente, podemos avançar e realizar o processo de migração de dados para a base ADVENTUREWORKSAZURE no SQL Azure. Durante esse processo, podemos acompanhar a subida de estruturas e dados para a nuvem, conforme vimos no processo de análise de compatibilidade realizado pela ferramenta.


Figura 9 – Tela da ferramenta SQL Azure Migration Wizard, mostrando o processo de carga de dados e objetos do arquivo TSQL para o SQL Azure na nuvem.

Ao final, nossa instância de SQL Azure na nuvem possui os dados e tabelas da base AdventureWorks, prontos para consumo.


Figura 10 – Tela da ferramenta SQL Azure Migration Wizard, mostrando o término do processo de carga de dados e objetos do arquivo TSQL para o SQL Azure na nuvem.

Vimos até aqui o processo de migração de uma base de dados no SQL Azure. Agora, vamos criar uma aplicação Web que irá consumir esses dados.

Criando uma aplicação ASP.NET para o Windows Azure

No Visual Studio 2010, selecione a opção ‘File / New / Project’. Quando a janela de novos projetos aparecer, você deve escolher a opção ‘Cloud’ e o template “Windows Azure Project”, para sua linguagem preferida. Nesta demonstração, estou usando a linguagem Visual C#, veja:


Figura 11 – Janela de seleção de templates do Visual Studio 2010, mostrando a pasta de templates para aplicações para o Windows Azure.

Importante: Note que em minha instalação do Visual Studio 2010, estou usando o novo pacote SDK de Novembro de 2010, disponível a partir do link:

Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio (November 2010)
Ref.: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018

Para nosso exercício, vamos usar o nome de projeto “AdventureWorksAzure”, pois vamos consumir os dados da base ADVENTUREWORKSAZURE, no SQL Azure já criada.

Ao selecionar esse template, vamos poder escolher o template necessário para nossa aplicação. Assim, vamos escolher a role “ASP.NET Web Role”, com o nome “AdventureWorksWeb”, como vemos a seguir:


Figura 12 – Janela de seleção de templates de Serviços para a Nuvem do Visual Studio 2010, mostrando o templates ASP.NET Web Role selecionado.

A seguir, o Visual Studio irá expandir esse template, criando uma aplicação simples de ASP.NET, pronta para uso. Ao finalizar a criação do projeto, você pode executar a aplicação pela primeira vez fazendo ‘F5’, notando assim a página ASP.NET a seguir:


Figura 13 – Tela da aplicação ASP.NET Web Role criada pelo Visual Studio 2010, para o templates ASP.NET WEB ROLE do Windows Azure.

Essa aplicação Web Role possui apenas 1 instância de máquina virtual cadastrada. Você pode checar isso no arquivo de configuração do projeto, “ServiceConfiguration.cscfg”, onde vemos o atributo Instance count  =  ‘1’:


Figura 14 – Arquivo de configuração da aplicação ASP.NET Web role, mostrando o número de instâncias configurado para a aplicação.

Em nosso ambiente local, nossa aplicação Web é executada pelo Development Fabric, um simulador de instâncias do Windows Azure que permite testes locais com o ambiente do Visual Studio 2010.

Você pode checar o funcionamento do Development Fabric através do ícone a seguir:


Figura 15 – Ícone de ativação do Development Fabric, para acompanhamento da simulação de instâncias de máquinas virtuais do Windows Azure no ambiente de desenvolvimento.

Importante: se você estiver usando o novo SDK 1.3 de Novembro de 2010, o Development Fabric mudou de nome para Compute Emulator UI, conforme vemos na figura a seguir:


Figura 16 – Ícone de ativação do Compute Emulator, para acompanhamento da simulação de instâncias de máquinas virtuais do Windows Azure no ambiente de desenvolvimento.

Selecionando a opção “Show Development Fabric UI” ou “Show Compute Emulator UI”, você verá as instâncias de máquinas virtuais criadas em sua estação, quando a aplicação estiver rodando para testes. Rode novamente a aplicação e veja a máquina Web Role em operação.


Figura 17 – Tela do Development Fabric apresentando uma instância de máquina virtual Web Role, de nossa aplicação ASP.NET WEB ROLE, conforme definido no arquivo de configuração.

Consumindo dados do SQL Azure

Agora que nossa aplicação ASP.NET está corretamente criada e rodando, podemos partir para o binding com o SQL Azure e consumo de seus dados. Para isso, vamos usar um objeto GridView, que vamos adicionar na página principal de nossa aplicação ASP.NET Web Role.

Você encontra o objetvo GridView na barra de ferramenta Toolbox, disponível no ambiente do Visual Studio 2010.


Figura 18 – Tela do Visual Studio, mostrando a adição do objeto GridView para a página default.aspx da aplicação ASP.NET WEB ROLE.

Para o binding do Data Source ou fonte de dados do GridView, vamos escolher a opção “New Data Source” no combo “Choose Data Srouce”. Uma janela de configuração irá aparecer, onde vamos selecionar a opção  “SQL Database” como vemos na figura a seguir:


Figura 19 – Janela do Data Source Configuration Wizard, para seleção do tipo de fonte de dados destinado para o objeto GridView.

Estou aceitando o nome default para o data source criado, aqui chamado “SqlDataSource1”.

Como próximo passo, vamos criar uma conexão com o banco de dados para nosso objeto GridView. Para isso, vamos selecionar “New Connection” na janela a seguir:


Figura 20 – Janela do Data Source Configuration Wizard, para seleção da conexão de dados do objeto GridView.

A janela de conexão irá aparecer, onde vamos indicar o nome do servidor SQL Azure que temos, assim como nossas credenciais.


Figura 21 – Janela para entrada de credenciais de nossa conexão com o SQL Azure.

Aqui, você pode usar as mesmas credenciais que usou no SQL AZURE MIGRATION WIZARD, ou pode ainda usar uma conta de usuário específica para sua aplicação. Para criar contas específicas, você pode usar o próprio SQL SERVER MANAGEMENT STUDIO, para conectar ao SQL Azure e operar suas instâncias, usuários e dados, do mesmo modo que faz localmente.

Quando a conexão for testada, selecione a base de dados ADVENTUREWORKSAZURE, que irá aparecer no combo “Select or enter a database name”, que vemos na figura acima.

A próxima janela indica o nome da ConnectionString corretamente gerada para nossa aplicação. Essa ConnectionString estará configurada no arquivo WEB.CONFIG de nossa WEB ROLE.


Figura 22 – Janela para entrada de credenciais de nossa conexão com o SQL Azure.

Podemos agora indicar qual será nossa consulta SQL sobre nossa base de dados. Vou selecionar uma consulta customizada, como vemos na janela a seguir:


Figura 23 – Janela para definição de consulta SQL para a fonte de dados do objeto GridView.

Vamos entrar uma query customizada, sobre a tabela SALESLT da base ADVENTUREWORKSAZURE que temos no SQL Azure, veja:

SELECT [ProductID] 
      ,[Name] 
      ,[ProductNumber] 
      ,[Color] 
      ,[ListPrice] 
      ,[Size] 
      ,[Weight] 
      ,[SellStartDate] 
      ,[ModifiedDate] 
  FROM [ADVENTUREWORKSAZURE].[SalesLT].[Product] 
GO


Figura 24 – Janela para definição de consulta SQL para a fonte de dados do objeto GridView. Especificando uma consulta customizada para a conexão de dados

Fazendo o teste de consulta na janela seguinte, já temos o retorno de dados do SQL Azure em nossa janela do Visual Studio, veja:


Figura 25 – Janela de teste de consulta customizada, mostrando os dados retornadas pela conexão com a base no SQL Azure.

Finalmente, estamos prontos para executar pela primeira vez nossa aplicação ASP.NET WEB ROLE consumindo dados do SQL Azure. Faça seu F5 e veja os resultados na tela:


Figura 26 – Tela da página ASP.NET WEB ROLE, consumindo dados do SQL Azure, rodando localmente na estação de desenvolvimento.

Publicando uma aplicação no Windows Azure

Uma vez terminado os testes locais, podemos publicar nossa aplicação para o Windows Azure. Isso é feito através da opção “Publish” da janela do Solution Explorer no Visual Studio 2010, veja:


Figura 27 – Opção de publicação de aplicação para o Windows Azure no Visual Studio 2010.

Selecionando “Publish”, temos duas opções para realizar a publicação de aplicação no Windows Azure: ou fazemos manualmente, com o upload dos arquivos de projeto e configuração através do portal do Windows Azure; ou fazemos o upload através das credenciais cadastradas no Visual Studio. Vamos escolher a segunda opção.

Para isso, estou usando minha SUBSCRIPTION ID, que você encontra no portal do Windows Azure, na aba ACCOUNT, como vemos a seguir:


Figura 28 – Tela de informações de Account no portal de administração do Windows Azure, mostrando o local para se obter o Subscription ID de sua conta ativa.

Obtido o Subscription ID, a opção de publicação no Visual Studio pode ser feita, onde vemos a seguinte janela:


Figura 29 – Janela de definição de credenciais para upload de um projeto para o Windows Azure a partir do Visual Studio 2010.

A janela de Publicação do Visual Studio ainda pede outras informações além das credenciais, como o SLOT para deployment, se PRODUÇÃO ou STAGE, o nome do STORAGE que será usado no Windows Azure e um label para o deployment.

A partir desses dados, o Visual Studio inicia o processo de upload do projeto, mostrando o andamento da operação:


Figura 30 – Status do processo de upload do projeto ASP.NET WEB ROLE para o Windows Azure.

Ao final da operação, nossa aplicação ASP.NET estará publicada no Windows Azure, no slot de STAGE, como vemos a seguir:


Figura 31 – Área de STAGE no portal de administração e hosting de aplicações no Windows Azure.

Note que no slot de STAGE, nossa aplicação oferece uma URL temporária, apenas para testes. A partir dos testes realizados em STAGE, podemos migrar nossa aplicação para o slot de PRODUÇÃO (PRODUCTION), onde teremos acesso a URL definitiva.


Figura 32 – Área de PRODUCTION no portal de administração e hosting de aplicações no Windows Azure.

Em nosso exemplo, minha URL definitiva é a HTTP://ADVENTUREWORKSWEB.CLOUDADPP.NET/ ,   que deve abrir a aplicação ASP.NET WEB ROLE consumindo os dados do SQL Azure, conforme vimos até aqui.


Figura 33 – Tela principal da aplicação ASP.NET WEB ROLE rodando a partir da URL definitiva do Windows Azure.

Terminamos assim essa demonstração de criação de uma ASP.NET Web role com base de dados no SQL Azure.

Conclusões

Neste artigo, vimos os passos principais para construção de uma aplicação ASP.NET simples consumindo o SQL Azure.

Existem ainda muitas outras combinações de aplicações que podemos fazer na plataforma Azure. Para saber mais, não deixe de visitar o Windows Azure Guidance, que está consolidando muitos outros exemplos para a plataforma. Para saber mais, confira o link a seguir:

patterns & practices - Windows Azure Guidance
Ref.: https://wag.codeplex.com/

Finalmente, no final de Novembro de 2010, a Microsoft lançou o novo portal de administração do Windows Azure, baseado em uma interface Silverlight. Este artigo apresentou as atividades de administração do portal através da interface antiga, que também está disponível nos links apresentados.

Em artigos futuros, vamos tratar os novos recursos do portal de administração do Windows Azure e suas funcionalidades na interface Silverlight. Aguardem.

Até a próxima.

Referências

Windows Azure – Introductory Special
Ref.: https://www.microsoft.com/windowsazure/offers/

Visual Studio 2010 Express Edition
Ref.: https://www.microsoft.com/express/Downloads/

SQL Azure Migration Wizard
Ref.: https://sqlazuremw.codeplex.com/

Windows Azure Tools for Microsoft Visual Studio
Ref.: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en

Portal de Administração do SQL Azure
Ref.: https://sql.azure.com/

AdventureWorks Community Samples Databases for SQL Azure (December CTP)
Ref.: http://msftdbprodsamples.codeplex.com/releases/view/37304     

patterns & practices - Windows Azure Guidance
Ref.: https://wag.codeplex.com/   

SQL Azure Team Blog
Ref.: https://blogs.msdn.com/b/sqlazure/

SQL Azure Migration Wizard v3.4
Ref.: https://sqlazuremw.codeplex.com/

SQL Azure Labs
Ref.: http://www.sqlazurelabs.com/

SQL Azure Pricing
Ref.: https://www.microsoft.com/windowsazure/pricing/

SQL Azure Unsupported Transact-SQL Statements
Ref.: https://msdn.microsoft.com/en-us/library/ee336253.aspx

SQL Azure Forum MSDN
Ref.: https://social.msdn.microsoft.com/Forums/en/windowsazuredata/threads

Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio (November 2010)
Ref.: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018

Sobre o Autor

Waldemir Cambiucci (wcambiuc@hotmail.com) trabalha na Microsoft Brasil como arquiteto de soluções, com foco na comunidade de arquitetos e clientes corporativos. É graduado em Engenharia de Computação, mestre em Engenharia Elétrica e Pós-Graduado em Finanças e Administração. Com mais de 15 anos de experiência em TI, atua na Microsoft há 8 anos, tendo participado de projetos importantes no Brasil e no exterior. É palestrante frequente em diversos eventos técnicos e escreve periodicamente para revistas e sites de tecnologia. É membro do IASA Global (International Association of Software Architects) e certificado IASA Foundations, além de diversas certificações Microsoft. Seu blog é o https://blogs.msdn.com/wcamb/ e seu twitter é o http://twitter.com/wcamb/.