Blog Post

Preparando o ambiente de desenvolvimento para a nuvem

Sign in to queue

Description

Este artigo cobre a preparação do ambiente de desenvolvimento para plataformas .NET. O Windows Azure suporta outras plataformas, e teremos outros artigos abordando também outras tecnologias como Java, PHP e outras linguagens. Falarei nesse artigo onde encontra o SDK do Windows Azure para .NET o passos de sua instalação e como configurar uma aplicação utilizando o Visual Studio para começar o desenvolvimento.

Outros pontos importantes do desenvolvimento como, por exemplo, debug, empacotamento e deploy serão cobertos em outros artigos.

O SDK do Windows Azure possui um emulador para simular o ambiente da nuvem em uma escala mínima. Desenvolvedores podem utilizar os conhecimentos que já possuem na plataforma .NET para desenvolver serviços para a plataforma Windows Azure.

O Windows Azure fornece um conjunto de APIs instaladas com o SDK que podem ser utilizadas localmente para desenvolver aplicações Azure, veja como está dividida a API do Windows Azure.

 Namespace

 Descrição

Microsoft.WindowsAzure.ServiceRuntime    

Possui classes que   são utilizadas para desenvolver aplicações que utilizam  os serviços de computação.

Microsoft.WindowsAzure.Diagnostics

Possui classes   utilizadas para diagnóstico e log dos serviços de computação.

Microsoft.WindowsAzure.StorageClient

Conjunto de   classes utilizadas para acessar os serviços de storage do Windows Azure, elas   encapsulam as chamas REST utilizadas para acessar o serviço.

Service management API

É exposto uma interface REST para gerenciar os serviços do Windows Azure

 

O Windows Azure tools para Visual Studio é uma extensão para o Visual Studio para suportar o desenvolvimento para o Windows Azure a extensão é instalada juntamente com o SDK, o download está disponível através do site do Windows Azure https://www.windowsazure.com/en-us/develop/net/, ao clicar na URL, você vai acessar a página abaixo.

 Download SDK .NET

Clique no botão "Instalar" para fazer o download do SDK do Windows Azure, reparem que no topo da página existem links para outras tecnologias. 

A instalação do SDK do Windows Azure requer a instalação do Web Platform Installer (WebPI), mas não se preocupe o processo de download vai verificar se você possui o WebPI instalado ou não. Depois é aguardar o processo de download e instalação que pode variar de acordo com a verificação dos os pré-requisitos. 

 Instalando

Comecei o artigo falando do Visual Studio e da extensão que vai ser instalada nele, mas se você não possui o Visual Studio não se preocupe! O processo de instalação do SDK vai instalar o Visual Studio Express para que você possa começar a desenvolver aplicativos utilizando o Windows Azure. 

Após instalar o SDK do Windows Azure, veja as ferramentas que foram instaladas para você.

Windows Azure Emulator

Windows Azure SDK

Visual Studio Extension

Com o emulador conseguimos simular nós de computação e os serviços de storage, porém existem algumas funcionalidade que não são suportadas pelo emulador (diferenças do emulador de storage e o serviço real - https://msdn.microsoft.com/en-us/library/windowsazure/gg433135.aspx)

Ao abrir o Visual Studio e clicar em novo projeto teremos um novo item sobre o item C#, o item Cloud. Veja figura abaixo.

 Criando um novo projeto

Vamos criar um novo projeto para visualizar todas as opções existentes. Dê o nome que gostar para o projeto, eu colocarei algo bem sugestivo HelloWorld.

No próximo passo vamos escolher qual a linguagem e roles serão utilizadas em nosso projeto, vou utilizar C# e Web Role.

 Escolhendo as roles

Clicando em OK, a solução será criada com dois projetos. O primeiro, possui as definições do serviço da nuvem ServiceDefinition.csdef e ServiceConfiguration.cscfg estes arquivos possuem as definições de configuração para todas as roles para o serviço que será posteriormente publicado na nuvem. E o segundo possui o projeto Web propriamente dito.

 Entendendo a solução

O Visual Studio ajuda a configurar cada role disponível no projeto, lembre-se que as roles descreve qual tipo de máquina será utilizada e quantas instâncias serão utilizadas. Para utilizar o Visual Studio, abra a pasta Roles e dê um duplo click no item WebRole1, veja a figura abaixo com as opções disponíveis.

 Opções de configuração

As alterações realizadas nesse painel serão armazenadas nos arquivos de configuração mencionados anteriormente, nesse painel definimos o tamanho da máquina virtual e as instâncias utilizadas. Lembrando que para aderir ao SLA do Windows Azure, você deve possuir no mínimo 2 instâncias de uma role.

Ao utilizar 2 instâncias de uma Web Role você possuirá automaticamente distribuição de carga entre as duas aplicações.

.NET trust level, essa opção permite configurar qual tipo de funcionalidade a sua role terá acesso. Existem duas opções Full trust e Windows Azure partial trust. A opção Full trust dá a role acesso a alguns recursos de máquina e executar código nativo, enquanto que a opção Windows Azure partial trust a role não possui acesso a recursos da máquina e execução de código nativo.

Mesmo utilizando a opção Full trust você vai estar utilizando a conta padrão do Windows Azure e não a do Administrador.

Na seção de Diagnóstico (Diagnostics), você pode habilitar ou desabilitar a capacidade de gerar dados de diagnóstico e também definir o local de armazenamento dos arquivos de log. Por padrão, o destino de armazenamento é a storage de desenvolvimento, mas se você possuir um serviço de storage criado no Windows Azure, você pode utilizar a caixa de texto para definir a string de conexão para o serviço de storage. A string de conexão possui a seguinte formação.

DefaultEndpointsProtocol=https;AccountName=[Nome da conta do seu serviço de storage];AccountKey=[Chave do serviço de storage, disponível no portal de gerenciamento]

 Configurando a role parte 2

A aba de settings (configurações), define qualquer configuração customizada que você deseja adicionar para a configuração da role. Os pares customizados de Chave-Valor são análogas ao par de chave-valor utilizado no AppSettings utilizados nos arquivos app.config e web.config. Você pode acessar os valores dos settings no seu código utilizando RoleEnviroment.GetConfigurationSettingValue.

Ao habilitar o diagnóstico ou o acesso ao desktop remoto, settings customizados são adicionados nessa seção, você pode adicionar suas configurações como a string de conexão com o banco de dados nessa seção.

 Configurando a role - parte 3

A aba de endpoints contém os endpoints que sua role vai disponibilizar quando for feito o deploy, é permitido no máximo 5 endpoints. Mas o que são os endpoints? Os endpoints são pontos de comunicação que a role vai possuir, eles podem ser do tipo entrada (input) endpoints ou internos (internal) endpoints.

Endpoints de entrada são expostos externamente, enquanto que os internos são expostos internamente para serem utilizados entre as instâncias das roles, o campo port (porta) define a porta que será utilizada para acessar o endpoint.

No caso de utilizar um endpoint que utiliza o protocolo HTTPS, você pode fazer upload de um certificado do tipo X.509 para acessar o web site ou o serviço utilizando conexões criptografadas.

Como dito anteriormente os endpoint do tipo internos (internal) são acessíveis por outras roles do serviço da nuvem. Por exemplo, uma Web Role pode referenciar a um internal endpoint configurado por uma Worker Role que esteja no mesmo serviço da nuvem para fazer chamadas a métodos exposto por um web service.

Por padrão, uma Worker Role não possui  endpoints definidos como uma Web Role, por que ele é concebido para ser utilizado com um processo que será executado em background. Para definir um endpoint você deve incluir um novo item na lista de endpoints, definir o protocolo que será utilizado (http, https e tcp), definir a porta e opcionalmente o nome de um certificado SSL.

 Configurando a role - parte 4

A aba Local Storage define diretórios locais que serão criados na máquina virtual da role para armazenar arquivos localmente, a figura acima apresenta as opções de configuração para os local storage.

O campo nome (Name) será utilizado como o nome do diretório criado, o campo tamanho (Size) define o tamanho máximo em MB para o conteúdo do diretório. Um ponto importante que deve ser levado em consideração é o capacidade de armazenamento disponível para cada tipo de VM (campo VM Size da aba de configurações). Se o tamanho definido ultrapassar a capacidade de armazenamento definida para o tipo da máquina virtual, sua aplicação pode gerar erros no futuro por falta de espaço em disco.

 Configurando a role - parte 5

A aba certificados (Certificates) é utilizada para referenciar os certificados na sua role, os certificados definidos aqui podem ser utilizados para configurar o HTTPS para sua Web Role ou para conexões remotas utilizadas (remote desktop) ou ainda para definir uma rede virtual.

 Configurando a role - Parte 6

A aba rede virtual (Virtual Network) permite configurar uma rede virtual entre as instancias da role e os servidores de sua rede local, para tanto é necessário que inclua o token recuperado do portal de gerenciamento de sua conta do Windows Azure. O Windows Azure Connect será coberto em um artigo futuro.

Obrigado e espero encontrá-los logo mais no próximo artigo da série. 

Abraço,

Vinícius.

The Discussion

Add Your 2 Cents