Windows Azure Storage: Azure Storage Emulator e Armazenamento na Nuvem

Cloud Computing & Microsoft Azure & Microsoft Azure Storage

06

Uma das vantagens de uma oferta SaaS é poder oferecer uma baixa curva de aprendizagem para o desenvolvimento de aplicações. Como já vimos anteriormente, o Windows Azure no modelo software como serviço traz aos desenvolvedores esta facilidade. Toda a estrutura de um projeto Azure mantém familiaridade a um projeto Web comum, seja WebForm ou MVC por meio de seus papeis.

Para acessarmos nossa conta de armazenamento no Windows Azure, assim como necessário para qualquer aplicação web, devemos fornecer as credenciais para tal fim. É comum encontrarmos em ambientes de desenvolvimento com bases de produção e homologação, e é ai que se inicia a brincadeira.

É na string de conexão que informamos os parâmetros que são necessários para acessar a conta de armazenamento. Você pode configurar a string de conexão para as seguintes finalidades:

    • Conectar o Windows Azure Storage Emulator para testes locais.
    • Conectar a uma conta de armazenamento no Windows Azure usando os terminais (endpoints) padrão.
    • Conectar a uma conta de armazenamento no Windows Azure usando terminais (endpoints) explícitos.

Assim como em uma aplicação Web, podemos por meio das definições de configuração fornecer uma ou mais strings de conexão. Isso nos possibilita a conforme a necessidade apontar para uma conta diferente.

 

Armazenamento no Azure Storage Emulator

A plataforma Azure fornece um ambiente de desenvolvimento por meio do Windows Azure storage emulator que funciona como uma “nuvem local” para os serviços de armazenamento (blobs, queues, tables) para que você possa construir e testar suas aplicações antes da implantação no Windows Azure. Esta conta local possui um nome e chave comuns a todos os usuários o que nos possibilita o uso de uma sequência de “atalho” que faz referência a conta de armazenamento, a saber: UseDevelopmentStorage=true. Esta conta e chave comuns só permitem o acesso aos serviços locais de armazenamento. A título de informação:

    • AccountName: devstoreaccount1
    • AccountKey: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1 SZFPTOtr/KBHBek soGMGw==

Observe o código abaixo:

01

Quando estamos desenvolvendo no ambiente de desenvolvimento temos acesso as credenciais da conta de armazenamento local por meio da propriedade DevelopmentStorageAccount da classe CloudStorageAccount que obtém um objeto do mesmo tipo que referência a conta de armazenamento de desenvolvimento.

Seguindo a lógica citada anteriormente, podemos fornecer o nome e chave de acesso a nossa conta de armazenamento de desenvolvimento como no código abaixo:

02

Cabe aqui fazer uma observação: O esquema de URI trabalhado pelo emulador de armazenamento é diferente do esquema utilizado pelos serviços de armazenamento na nuvem. No ambiente de desenvolvimento o nome da conta faz parte do caminho hierárquico da URI já no armazenamento na nuvem o nome da conta faz parte do nome de domínio. Isto ocorre devido a resolução de nomes de domínio estarem disponíveis na nuvem, mas não no computador local.

Devido a limitação citada acima, o esquema URI do emulador de armazenamento  segue este formato:

http://<endereco-maquina-local>:<porta>/<nome-da-conta>/<recurso>

Os serviços  podem ser acessados com os seguintes esquemas URI:

    • Blob: http://127.0.0.1:10000/<nome-da-conta>/<recurso>
    • Queue: http://127.0.0.1:10001/<nome-da-conta>/<recurso>
    • Table: http://127.0.0.1:10002/<nome-da-conta>/<recurso>

Um exemplo prático de endereço usado para acessar um blob no emulador de armazenamento seria:

http://127.0.0.1:10000/minhaconta/meucontainer/meublob.txt

O emulador de armazenamento se baseia em um Microsoft SQL Server e fornece serviços semelhantes aos do armazenamento no Windows Azure. Por padrão, o emulador de armazenamento é configurado para um banco de dados Microsoft SQL Server Express nas versões 2005 ou 2008. Você pode instalar o SQL Server Management Studio Express para gerenciar sua instalação do SQL Server Express. Não é recomendado alterar a base gerada.

O emulador de armazenamento é um processo (DSService.exe) que permite a utilização de uma interface para iniciar, parar, redefinir instâncias ou simplesmente desligar os serviços. Você pode acessar a interface seguindo os passos abaixo.

05

 

Armazenamento na Nuvem

Você pode definir uma string de conexão para uma conta de armazenamento no Windows Azure de duas formas:

    • Utilizar os endpoints padrão para os serviços de armazenamento. Esta é a opção mais simples uma vez que quando você usa este formato é necessário apenas informar o nome da conta e a chave e indicar se deseja conectar através de  HTTP ou HTTPS.
    • Especificar endpoints explícitos para os serviços de armazenamento, permitindo especificar endpoints para os serviços incluindo um nome de domínio personalizado ou minimizando a exposição de informações para um acesso compartilhado etc.

Formato utilizando endpoints padrão:

  • DefaultEndpointsProtocol=[http|https];AccountName=nomeConta;AccountKey=chaveConta

Formato utilizando endpoints explícitos:

  • BlobEndpoint=meuBlobEndpoint;QueueEndpoint=meuQueueEndpoint;  TableEndpoint=meuTableEndpoint; AccountName=meuAccountName; AccountKey=meuAccountKey

O esquema básico de endereçamento para utilizar os recursos de armazenamento na nuvem é: <http|https>://<account-name>.<service-name>.core.windows.net/<resource-path> onde account-name representa o nome da conta, service-name o nome do serviço que esta sendo acessado e resource-path o recurso solicitado. Segue um exemplo com os esquemas URI para cada um dos serviços:

    • Blob: <http|https>://<nome-da-conta>.blob.core.windows.net/<recurso>
    • Queue: <http|https>://<nome-da-conta>.queue.core.windows.net/<recurso>
    • Table: <http|https>://<nome-da-conta>.table.core.windows.net/<recurso>

Um exemplo prático de endereço acessando um blob seria:

http://vitormeriat.blob.core.windows.net/meucontainer/meublob.txt

O código fonte do exemplo utilizado neste artigo pode ser baixado aqui!


PS: Estreando outro desenho do mascote…

 

Um grande abraço e ótimo estudo!


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


5 minutes to read