Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Baixar o Kit de Treinamento de Campos da Web
O Microsoft Azure facilita a criação e a implantação de sites em produção. Mas você não terminou quando seu aplicativo estiver ativo, você está apenas começando! Você precisará lidar com requisitos de alteração, atualizações de banco de dados, escala e muito mais. Felizmente, Serviço de Aplicativo do Azure tem você coberto, com muitos recursos para ajudá-lo a manter seus sites funcionando sem problemas.
O Azure oferece opções de desenvolvimento, implantação e dimensionamento seguras e flexíveis para qualquer aplicativo Web de tamanho. Utilize suas ferramentas existentes para criar e implantar aplicativos sem a dificuldade de gerenciar a infraestrutura.
Provisione um aplicativo Web de produção por conta própria em minutos implantando facilmente o conteúdo criado usando sua ferramenta de desenvolvimento favorita. Você pode implantar um site existente diretamente do controle do código-fonte com suporte para Git, GitHub, Bitbucket, TFS e até mesmo DropBox. Implante diretamente do seu IDE favorito ou de scripts usando o PowerShell em ferramentas do Windows ou da CLI em execução em qualquer sistema operacional. Depois de implantados, mantenha seus sites constantemente atualizados com suporte para implantação contínua.
O Azure fornece soluções escalonáveis, duráveis de armazenamento em nuvem, backup e recuperação para qualquer dado, grande ou pequeno. Ao implantar aplicativos em um ambiente de produção, serviços de armazenamento como Tabelas, Blobs e Bancos de Dados SQL ajudam a dimensionar seu aplicativo na nuvem.
Com os Bancos de Dados SQL, é importante manter seu banco de dados produtivo atualizado ao implantar novas versões do aplicativo. Graças a Migrações do Entity Framework Code First, o desenvolvimento e a implantação do modelo de dados foram simplificados para atualizar seus ambientes em minutos. Este laboratório prático mostrará os diferentes tópicos que você pode encontrar ao implantar seu aplicativo Web em ambientes de produção no Microsoft Azure.
Todos os snippets e código de exemplo estão incluídos no Kit de Treinamento de Campos da Web, disponível em https://aka.ms/webcamps-training-kit.
Para obter uma cobertura mais detalhada deste tópico, consulte o livro eletrônico Criando aplicativos de nuvem Real-World com o Azure.
Visão geral
Objetivos
Neste laboratório prático, você aprenderá a:
- Habilitar migrações do Entity Framework com um modelo existente
- Atualizar o modelo de objeto e o banco de dados adequadamente usando migrações do Entity Framework
- Implantar no Serviço de Aplicativo do Azure usando o Git
- Reverter para uma implantação anterior usando o portal de Gerenciamento do Azure
- Usar o Armazenamento do Azure para dimensionar um aplicativo Web
- Configurar o dimensionamento automático para um aplicativo Web usando o Portal de Gerenciamento do Azure
- Criar e configurar um projeto de teste de carga no Visual Studio
Pré-requisitos
O seguinte é necessário para concluir este laboratório prático:
Visual Studio Express 2013 para Web ou superior
Uma assinatura do Microsoft Azure
- Inscrever-se para uma avaliação gratuita
- Se você for um assinante do Visual Studio Professional, Test Professional, Premium ou Ultimate com MSDN ou MSDN Platforms, ative o benefício do MSDN agora para começar a desenvolver e testar no Azure
- Os membros do BizSpark recebem automaticamente o benefício do Azure por meio de seus Visual Studio Ultimate com assinaturas do MSDN
- Os membros do programa Microsoft Partner Network Cloud Essentials recebem créditos mensais do Azure sem custo
Instalação
Para executar os exercícios neste laboratório prático, você precisará configurar seu ambiente primeiro.
- Abra o Windows Explorer e navegue até a pasta Origem do laboratório.
- Clique com o botão direito do mouse em Setup.cmd e selecione Executar como administrador para iniciar o processo de instalação que configurará seu ambiente e instalará os snippets de código do Visual Studio para este laboratório.
- Se a caixa de diálogo Controle de Conta de Usuário for mostrada, confirme a ação para continuar.
Observação
Verifique se você verificou todas as dependências deste laboratório antes de executar a instalação.
Usando os snippets de código
Em todo o documento de laboratório, você será instruído a inserir blocos de código. Para sua conveniência, a maior parte desse código é fornecida como snippets de Visual Studio Code, que você pode acessar de dentro de Visual Studio 2013 para evitar a necessidade de adicioná-lo manualmente.
Observação
Cada exercício é acompanhado por uma solução inicial localizada na pasta Begin do exercício que permite que você siga cada exercício independentemente dos outros. Lembre-se de que os snippets de código adicionados durante um exercício estão ausentes dessas soluções iniciais e podem não funcionar até que você tenha concluído o exercício. Dentro do código-fonte de um exercício, você também encontrará uma pasta End contendo uma solução do Visual Studio com o código que resulta da conclusão das etapas no exercício correspondente. Você pode usar essas soluções como diretrizes se precisar de ajuda adicional enquanto trabalha neste laboratório prático.
Exercícios
Este laboratório prático inclui os seguintes exercícios:
- Usando migrações do Entity Framework
- Implantando um aplicativo Web no preparo
- Executando a reversão de implantação em produção
- Dimensionamento usando o Armazenamento do Azure
- Usando o Dimensionamento Automático para Aplicativos Web (opcional para Visual Studio 2013 Ultimate Edition)
Tempo estimado para concluir este laboratório: 75 minutos
Observação
Ao iniciar o Visual Studio pela primeira vez, você deve selecionar uma das coleções de configurações predefinidas. Cada coleção predefinida foi projetada para corresponder a um estilo de desenvolvimento específico e determina layouts de janela, comportamento do editor, snippets de código do IntelliSense e opções de caixa de diálogo. Os procedimentos neste laboratório descrevem as ações necessárias para realizar uma determinada tarefa no Visual Studio ao usar a coleção Configurações gerais de desenvolvimento . Se você escolher uma coleção de configurações diferente para seu ambiente de desenvolvimento, poderá haver diferenças nas etapas que você deve levar em conta.
Exercício 1: Usando migrações do Entity Framework
Quando você está desenvolvendo um aplicativo, seu modelo de dados pode mudar ao longo do tempo. Essas alterações podem afetar o modelo existente em seu banco de dados (se você estiver criando uma nova versão) e é importante manter seu banco de dados atualizado para evitar erros.
Para simplificar o acompanhamento dessas alterações em seu modelo, Migrações do Entity Framework Code First detectar automaticamente as alterações comparando o modelo com o esquema de banco de dados e gerar um código específico para atualizar o banco de dados, criando novas versões do banco de dados.
Este exercício mostra como habilitar as Migrações para seu aplicativo e como você pode detectar e gerar alterações com facilidade para atualizar seus bancos de dados.
Tarefa 1 – Habilitar migrações
Nesta tarefa, você percorrerá as etapas de habilitação de Migrações do Entity Framework Code First para o banco de dados Geek Quiz, alterando o modelo e entendendo como essas alterações são refletidas no banco de dados.
Abra o Visual Studio e abra o arquivo de solução GeekQuiz.sln em Source\Ex1-UsingEntityFrameworkMigrations\Begin.
Crie a solução para baixar e instalar as dependências do pacote NuGet . Para fazer isso, clique com o botão direito do mouse na solução e clique em Compilar Solução ou pressione Ctrl + Shift + B.
No menu Ferramentas no Visual Studio, selecione Gerenciador de Pacotes NuGet e clique em Console do Gerenciador de Pacotes.
No Console do Gerenciador de Pacotes, insira o comando a seguir e pressione Enter. Uma migração inicial com base no modelo existente será criada.
Enable-Migrations -ContextTypeName GeekQuiz.Models.TriviaContext
Habilitando as migrações
Observação
Esse comando adiciona uma pasta Migrações ao projeto Geek Quiz que contém um arquivo chamado Configuration.cs. A classe Configuration permite que você configure como as migrações se comportam para seu contexto.
Com as Migrações habilitadas, você precisa atualizar a classe De configuração para preencher o banco de dados com os dados iniciais exigidos pelo Geek Quiz . Em Migrações, substitua o arquivo Configuration.cs pelo localizado na pasta Source\Assets deste laboratório.
Observação
Como as migrações chamarão o método Seed com cada atualização de banco de dados, você precisa ter certeza de que os registros não estão duplicados no banco de dados. O método AddOrUpdate ajudará a evitar dados duplicados.
Para adicionar uma migração inicial, insira o comando a seguir e pressione Enter.
Observação
Verifique se não há nenhum banco de dados chamado "GeekQuizProd" em sua instância do LocalDB.
Add-Migration InitialSchema
Adicionando migração de esquema base
Observação
Add-Migration fará o scaffold da próxima migração com base nas alterações feitas em seu modelo desde que a última migração foi criada. Nesse caso, como é a primeira migração do projeto, ele adicionará os scripts para criar todas as tabelas definidas na classe TriviaContext .
Execute a migração para atualizar o banco de dados executando o comando a seguir. Para este comando, você especificará o sinalizador Detalhado para exibir as instruções SQL que estão sendo aplicadas ao banco de dados de destino.
Update-Database -Verbose
Criando um banco de dados inicial
Observação
Update-Database aplicará todas as migrações pendentes para o banco de dados. Nesse caso, ele criará o banco de dados usando o cadeia de conexão definido no arquivo web.config.
Vá para o menu Exibir e abra SQL Server Pesquisador de Objetos.
Abrir no Pesquisador de Objetos do SQL Server
Na janela SQL Server Pesquisador de Objetos, conecte-se à instância do LocalDB clicando com o botão direito do mouse no nó SQL Server e selecionando Adicionar SQL Server... opção.
Adicionando uma instância de SQL Server a SQL Server Pesquisador de Objetos
Defina o nome do servidor como (localdb)\v11.0 e deixe a Autenticação do Windows como seu modo de autenticação. Clique em Conectar para continuar.
Conectando-se ao LocalDB
Abra o banco de dados GeekQuizProd e expanda o nó Tabelas . Como você pode ver, o comando Update-Database gerou todas as tabelas definidas na classe TriviaContext . Localize o dbo. Tabela TriviaQuestions e abra o nó colunas. Na próxima tarefa, você adicionará uma nova coluna a esta tabela e atualizará o banco de dados usando Migrações.
Colunas perguntas triviais
Tarefa 2 – Atualização do esquema de banco de dados usando migrações
Nesta tarefa, você usará Migrações do Entity Framework Code First para detectar uma alteração no modelo e gerar o código necessário para atualizar o banco de dados. Você atualizará a entidade TriviaQuestions adicionando uma nova propriedade a ela. Em seguida, você executará comandos para criar uma nova Migração para incluir a nova coluna na tabela.
Em Gerenciador de Soluções, clique duas vezes no arquivo TriviaQuestion.cs localizado dentro da pasta Modelos.
Adicione uma nova propriedade chamada Hint, conforme mostrado no snippet de código a seguir.
public class TriviaQuestion { public int Id { get; set; } [Required] public string Title { get; set; } public virtual List<TriviaOption> Options { get; set; } public string Hint { get; set; } }
No Console do Gerenciador de Pacotes, insira o comando a seguir e pressione Enter. Uma nova migração será criada refletindo a alteração em nosso modelo.
Add-Migration QuestionHint
Adicionar Migração
Observação
Um arquivo de migração é composto por dois métodos, Para Cima e Para Baixo.
- O método Up será usado para especificar quais alterações a versão atual do nosso aplicativo precisa aplicar ao banco de dados.
- O Down é usado para reverter as alterações que adicionamos ao método Up .
Quando a Migração de Banco de Dados atualizar o banco de dados, ela executará todas as migrações na ordem de carimbo de data/hora e somente aquelas que não foram usadas desde a última atualização (a tabela _MigrationHistory controla quais migrações foram aplicadas). O método Up de todas as migrações será chamado e fará as alterações especificadas para o banco de dados. Se decidirmos voltar para uma migração anterior, o método Down será chamado para refazer as alterações em uma ordem inversa.
No Console do Gerenciador de Pacotes, insira o comando a seguir e pressione Enter.
Update-Database -Verbose
A saída do comando Update-Database gerou uma instrução Alter Table SQL para adicionar uma nova coluna à tabela TriviaQuestions , conforme mostrado na imagem abaixo.
Adicionar instrução SQL de coluna gerada
Em SQL Server Pesquisador de Objetos, atualize o dbo. Tabela TriviaQuestions e marcar que a nova coluna Hint é exibida.
Mostrando a nova coluna de dica
De volta ao editor TriviaQuestion.cs , adicione uma restrição StringLength à propriedade Hint , conforme mostrado no snippet de código a seguir.
public class TriviaQuestion { public int Id { get; set; } [Required] public string Title { get; set; } public virtual List<TriviaOption> Options { get; set; } [StringLength(150)] public string Hint { get; set; } }
No Console do Gerenciador de Pacotes, insira o comando a seguir e pressione Enter.
Add-Migration QuestionHintLength
No Console do Gerenciador de Pacotes, insira o comando a seguir e pressione Enter.
Update-Database -Verbose
A saída do comando Update-Database gerou uma instrução Alter Table SQL para atualizar o tipo de coluna de dica da tabela TriviaQuestions , conforme mostrado na imagem abaixo.
Instrução SQL alter column gerada
Em SQL Server Pesquisador de Objetos, atualize o dbo. Tabela TriviaQuestions e marcar que o tipo de coluna Hint é nvarchar(150).
Mostrando a nova restrição
Exercício 2: Implantando um aplicativo Web no preparo
Aplicativos Web no Serviço de Aplicativo do Azure permite que você execute a publicação em etapas. A publicação em etapas cria um slot de site de preparo para cada site de produção padrão e permite que você troque esses slots sem tempo de inatividade. Isso é realmente útil para validar as alterações antes de liberar para o público, integrar incrementalmente o conteúdo do site e reverter se as alterações não estiverem funcionando conforme o esperado.
Neste exercício, você implantará o aplicativo Geek Quiz no ambiente de preparo do aplicativo Web usando o controle do código-fonte do Git. Para fazer isso, você criará o aplicativo Web e provisionará os componentes necessários no portal de gerenciamento, configurará um repositório Git e enviará por push o código-fonte do aplicativo do computador local para o slot de preparo. Você também atualizará seu banco de dados de produção com o Migrações do Code First criado no exercício anterior. Em seguida, você executará o aplicativo nesse ambiente de teste para verificar sua operação. Depois de estar satisfeito que ele esteja funcionando de acordo com suas expectativas, você promoverá o aplicativo para produção.
Observação
Para habilitar a publicação em etapas, o aplicativo Web deve estar no modo Standard. Observe que encargos adicionais serão incorridos se você alterar seu aplicativo Web para o modo Standard. Para obter mais informações sobre preços, consulte preços Serviço de Aplicativo.
Tarefa 1 – Criar um aplicativo Web no Serviço de Aplicativo do Azure
Nesta tarefa, você criará um aplicativo Web no Serviço de Aplicativo do Azure do portal de gerenciamento. Você também configurará um Banco de Dados SQL para persistir os dados do aplicativo e configurar um repositório Git local para controle do código-fonte.
Acesse o portal de gerenciamento do Azure e entre usando a conta Microsoft associada à sua assinatura.
Entrar no portal de gerenciamento do Azure
Clique em Novo na barra de comandos na parte inferior da página.
Criando um novo aplicativo Web
Clique em Computação, Site e, em seguida, Criar Personalizado.
Criando um novo aplicativo Web usando a Criação Personalizada
Na caixa de diálogo Novo Site – Criar Personalizado , forneça uma URL disponível (por exemplo , geek-quiz), selecione um local na lista suspensa Região e selecione Criar um novo banco de dados SQL na lista suspensa Banco de Dados . Por fim, selecione a caixa Publicar no controle do código-fonte marcar e clique em Avançar.
Personalizando o novo aplicativo Web
Especifique as seguintes informações para as configurações do banco de dados:
Na caixa de texto Nome , insira um nome de banco de dados (por exemplo , geekquiz_db)
Na lista suspensa Servidor, selecione Novo servidor de banco de dados SQL. Como alternativa, você pode selecionar um servidor existente.
Nas caixas Nome de usuário do banco de dados e senha do banco de dados, insira o nome de usuário e a senha do administrador para o servidor do banco de dados SQL. Se você selecionar um servidor que já criou, será solicitado que você solicite a senha.
Especificando as configurações do banco de dados
Clique em Avançar para continuar.
Selecione Repositório Git Local para o controle do código-fonte a ser usado e clique em Avançar.
Observação
Você pode ser solicitado a fornecer as credenciais de implantação (um nome de usuário e uma senha).
Criando o repositório Git
Aguarde até que o novo aplicativo Web seja criado.
Observação
Por padrão, o Azure fornece domínios em azurewebsites.net , mas também oferece a possibilidade de definir domínios personalizados usando o portal de gerenciamento do Azure. No entanto, você só poderá gerenciar domínios personalizados se estiver usando determinados modos de Serviço de Aplicativo do Azure.
Serviço de Aplicativo do Azure está disponível em edições Gratuitas, Compartilhadas, Básicas, Standard e Premium. No modo Gratuito e Compartilhado, todos os aplicativos Web são executados em um ambiente multilocatário e têm cotas para uso de CPU, Memória e Rede. O número máximo de aplicativos gratuitos pode variar de acordo com seu plano. No modo Standard, você escolhe quais aplicativos são executados em máquinas virtuais dedicadas que correspondem aos recursos de computação padrão do Azure. Você pode encontrar a configuração do modo de aplicativo Web no menu Dimensionar do aplicativo Web.
Se você estiver usando o modo Compartilhado ou Standard , poderá gerenciar domínios personalizados para seu aplicativo Web acessando o menu Configurar do aplicativo e clicando em Gerenciar Domínios em nomes de domínio.
Depois que o aplicativo Web for criado, clique no link na coluna URL para marcar que o novo aplicativo Web esteja em execução.
Navegando até o novo aplicativo Web
aplicativo Web em execução
Tarefa 2 – Criando o Banco de Dados SQL de produção
Nesta tarefa, você usará o Migrações do Entity Framework Code First para criar o banco de dados direcionado à instância do Banco de Dados SQL do Azure que você criou na tarefa anterior.
No Portal de Gerenciamento, navegue até o aplicativo Web que você criou na tarefa anterior e acesse seu Painel.
Na página Painel , clique no link Exibir cadeias de conexão na seção de visão rápida .
Exibir cadeias de conexão
Copie o valor cadeia de conexão e feche a caixa de diálogo.
Cadeia de conexão no Portal de Gerenciamento do Azure
Clique em Bancos de Dados SQL para ver a lista de bancos de dados SQL no Azure
menu Banco de Dados SQL
Localize o banco de dados criado na tarefa anterior e clique no Servidor.
Servidor de banco de dados SQL
Na página Início Rápido do servidor, clique em Configurar.
Configurar menu
Na seção Endereços IP permitidos, clique em Adicionar ao link de endereços IP permitidos para permitir que seu IP se conecte ao servidor Banco de Dados SQL.
Endereços IP permitidos
Clique em Salvar na parte inferior da página para concluir a etapa.
Retorne ao Visual Studio.
No Console do Gerenciador de Pacotes, execute o seguinte comando substituindo o espaço reservado [YOUR-CONNECTION-STRING] pelo cadeia de conexão copiado do Azure
Update-Database -Verbose -ConnectionString "[YOUR-CONNECTION-STRING]" -ConnectionProviderName "System.Data.SqlClient"
Atualizar o banco de dados direcionado ao Banco de Dados SQL do Azure
Tarefa 3 – Implantando o Teste Nerd no preparo usando o Git
Nesta tarefa, você habilitará a publicação em etapas em seu aplicativo Web. Em seguida, você usará o Git para publicar o aplicativo Geek Quiz diretamente do computador local no ambiente de preparo do aplicativo Web.
Voltar ao portal e clique no nome do aplicativo Web na coluna Nome para exibir as páginas de gerenciamento.
Abrindo as páginas de gerenciamento de aplicativos Web
Navegue até a página Dimensionar . Na seção geral , selecione Padrão para a configuração e clique em Salvar na barra de comandos.
Observação
Para executar todos os aplicativos Web na região atual e na assinatura no modo Standard, deixe a caixa Selecionar Todos os marcar selecionada na configuração Escolher Sites. Caso contrário, desmarque a caixa Selecionar Todos os marcar.
Atualizando o aplicativo Web para o modo Standard
Clique em Sim para confirmar as alterações.
Confirmando a alteração para o modo Standard
Vá para a página Painel e clique em Habilitar publicação em etapas na seção de visão rápida .
Habilitando a publicação em etapas
Clique em Sim para habilitar a publicação em etapas.
Confirmando a publicação em etapas
Na lista de aplicativos Web, expanda a marca à esquerda do nome do aplicativo Web para exibir o slot do site de preparo. Ele tem o nome do seu aplicativo Web seguido por (preparo). Clique no site de preparo para ir para a página de gerenciamento.
Navegando até o aplicativo de preparo
Observe que a página de gerenciamento dele se parece com a página de gerenciamento de qualquer outro aplicativo Web. Navegue até a página Implantações e copie o valor da URL do Git . Você o usará posteriormente neste exercício.
Copiando o valor da URL do Git
Abra um novo console do Git Bash e execute os comandos a seguir. Atualize o espaço reservado [YOUR-APPLICATION-PATH] com o caminho para a solução GeekQuiz , localizada na pasta Source\Ex1-DeployingWebSiteToStaging\Begin deste laboratório.
cd "[YOUR-APPLICATION-PATH]" git init git config --global user.email "{username@example.com}" git config --global user.name "{your-user-name}" git add . git commit -m "Initial commit"
Inicialização do Git e primeiro commit
Execute o comando a seguir para enviar seu aplicativo Web por push para o repositório Git remoto. Substitua o espaço reservado pela URL obtida no portal de gerenciamento. Você será solicitado a fornecer sua senha de implantação.
git remote add azure [GIT-CLONE-URL] git push azure master
Enviar por push para o Azure
Observação
Ao implantar conteúdo no host FTP ou no repositório GIT de um aplicativo Web, você deve se autenticar usando as credenciais de implantação criadas a partir das páginas de gerenciamento de Início Rápido ou Painel do aplicativo Web. Se você não souber suas credenciais de implantação, poderá redefini-las facilmente usando o portal de gerenciamento. Abra a página Painel do aplicativo Web e clique no link Redefinir suas credenciais de implantação . Forneça uma nova senha e clique em OK. As credenciais de implantação são válidas para uso com todos os aplicativos Web associados à sua assinatura.
Para verificar se o aplicativo Web foi enviado por push com êxito para o Azure, volte para o portal de gerenciamento e clique em Sites.
Localize seu aplicativo Web e expanda a entrada para exibir o slot do site de preparo. Clique em seu Nome para ir para a página de gerenciamento.
Clique em Implantações para ver o histórico de implantação. Verifique se há uma implantação ativa com seu "Commit Inicial".
Implantação ativa
Por fim, clique em Procurar na barra de comandos para acessar o aplicativo Web.
Procurar o aplicativo Web
Se o aplicativo for implantado com êxito, você verá a página de logon do Geek Quiz.
Observação
A URL de endereço do aplicativo implantado contém o nome do aplicativo Web seguido por -staging.
Aplicativo em execução no ambiente de preparo
Se você quiser explorar o aplicativo, clique em Registrar para registrar um novo usuário. Conclua os detalhes da conta inserindo um nome de usuário, endereço de email e senha. Em seguida, o aplicativo mostra a primeira pergunta do teste. Responda a algumas perguntas para ter certeza de que está funcionando conforme o esperado.
Aplicativo pronto para ser usado
Tarefa 4 – Promover o aplicativo Web para produção
Agora que você verificou que o aplicativo Web está funcionando corretamente no ambiente de preparo, você está pronto para promovê-lo à produção. Nesta tarefa, você trocará o slot do site de preparo pelo slot do site de produção.
Voltar ao portal de gerenciamento e selecione o slot do site de preparo. Clique em Trocar na barra de comandos.
Alternar para produção
Clique em Sim na caixa de diálogo de confirmação para continuar com a operação de troca. O Azure trocará imediatamente o conteúdo do site de produção pelo conteúdo do site de preparo.
Observação
Algumas configurações da versão em etapas serão automaticamente copiadas para a versão de produção (por exemplo, substituições de cadeia de conexão, mapeamentos de manipulador etc.), mas outras configurações não serão alteradas (por exemplo, pontos de extremidade DNS, associações SSL etc.).
Confirmando a operação de troca
Depois que a troca for concluída, selecione o slot de produção e clique em Procurar na barra de comandos para abrir o site de produção. Observe a URL na barra de endereços.
Observação
Talvez seja necessário atualizar o navegador para limpar o cache. Na Internet Explorer, você pode fazer isso pressionando CTRL+R.
No console do GitBash, atualize o URL remota do repositório Git local para direcionar o slot de produção. Para fazer isso, execute o comando a seguir substituindo os espaços reservados pelo nome de usuário de implantação e o nome do aplicativo Web.
Observação
Nos exercícios a seguir, você enviará por push as alterações no site de produção em vez de preparo apenas para a simplicidade do laboratório. Em um cenário do mundo real, é recomendável verificar as alterações no ambiente de preparo antes de promover a produção.
git remote set-url azure https://<your-user>@<your-web-site>.scm.azurewebsites.net:443/<your-web-site>.git
Exercício 3: Executando a reversão de implantação em produção
Há cenários em que você não tem um slot de preparo para executar a troca frequente entre preparo e produção, por exemplo, se você estiver trabalhando com o modo Gratuito ou Compartilhado . Nesses cenários, você deve testar seu aplicativo em um ambiente de teste – localmente ou em um site remoto – antes de implantar em produção. No entanto, é possível que um problema não detectado durante a fase de teste possa surgir no site de produção. Nesse caso, é importante ter um mecanismo para alternar facilmente para uma versão anterior e mais estável do aplicativo o mais rápido possível.
Em Serviço de Aplicativo do Azure, a implantação contínua do controle do código-fonte possibilita isso graças à ação de reimplantação disponível no portal de gerenciamento. O Azure controla as implantações associadas aos commits enviados por push para o repositório e fornece uma opção para reimplantar seu aplicativo usando qualquer uma de suas implantações anteriores, a qualquer momento.
Neste exercício, você executará uma alteração no código no aplicativo Geek Quiz que injeta intencionalmente um bug. Você implantará o aplicativo na produção para ver o erro e, em seguida, aproveitará o recurso de reimplantação para voltar ao estado anterior.
Tarefa 1 – Atualizando o aplicativo de teste do Geek
Nesta tarefa, você refatorará uma pequena parte do código da classe TriviaController para extrair parte da lógica que recupera a opção de teste selecionada do banco de dados em um novo método.
Alterne para a instância do Visual Studio com a solução GeekQuiz do exercício anterior.
Em Gerenciador de Soluções, abra o arquivo TriviaController.cs dentro da pasta Controladores.
Localize o método StoreAsync e selecione o código realçado na figura a seguir.
Selecionando o código
Clique com o botão direito do mouse no código selecionado, expanda o menu Refatorar e selecione Extrair Método....
Selecionando o método Extract
Na caixa de diálogo Extrair Método , nomeie o novo método MatchesOption e clique em OK.
Especificando o nome do método extraído
Em seguida, o código selecionado é extraído no método MatchesOption . O código resultante é mostrado no snippet a seguir.
private async Task<bool> StoreAsync(TriviaAnswer answer) { this.db.TriviaAnswers.Add(answer); await this.db.SaveChangesAsync(); var selectedOption = await this.db.TriviaOptions.FirstOrDefaultAsync(o => MatchesOption(answer, o)); return selectedOption.IsCorrect; } private static bool MatchesOption(TriviaAnswer answer, TriviaOption o) { return o.Id == answer.OptionId && o.QuestionId == answer.QuestionId; }
Pressione CTRL + S para salvar as alterações.
Tarefa 2 – Reimplantar o aplicativo De teste do Geek
Agora você enviará por push as alterações feitas na tarefa anterior para o repositório, o que disparará uma nova implantação para o ambiente de produção. Em seguida, você solucionará um problema usando as ferramentas de desenvolvimento F12 fornecidas pela Internet Explorer e, em seguida, executará uma reversão para a implantação anterior do portal de gerenciamento do Azure.
Abra um novo console do Git Bash para implantar o aplicativo atualizado no Serviço de Aplicativo do Azure.
Execute os comandos a seguir para enviar as alterações por push ao Azure. Atualize o espaço reservado [YOUR-APPLICATION-PATH] com o caminho para a solução GeekQuiz . Você será solicitado a fornecer sua senha de implantação.
cd "[YOUR-APPLICATION-PATH]" git add . git commit -m "Refactored answer check" git push azure master
Enviar código refatorado por push para o Azure
Abra o Explorer da Internet e navegue até seu aplicativo Web (por exemplo,
http://<your-web-site>.azurewebsites.net
). Faça logon usando as credenciais criadas anteriormente.Pressione F12 para iniciar as ferramentas de desenvolvimento, selecione a guia Rede e clique no botão Reproduzir para iniciar a gravação.
Iniciando a gravação de rede
Selecione qualquer opção do teste. Você verá que nada acontece.
Na janela F12 , a entrada correspondente à solicitação HTTP POST mostra um resultado HTTP 500 .
Erro HTTP 500
Selecione a guia Console . Um erro é registrado com os detalhes da causa.
Erro registrado
Localize a parte de detalhes do erro. Claramente, esse erro é causado pela refatoração de código confirmada nas etapas anteriores.
Details: LINQ to Entities does not recognize the method 'Boolean MatchesOption ...
.Não feche o navegador.
Em uma nova instância do navegador, navegue até o [portal de gerenciamento do Azure](/azure/azure-portal/azure-portal-overview e entre usando a conta Microsoft associada à sua assinatura.
Selecione Sites e clique no aplicativo Web que você criou no Exercício 2.
Navegue até a página Implantações . Observe que todos os commits executados estão listados no histórico de implantação.
Lista de implantações existentes
Selecione o commit anterior e clique em Reimplantar na barra de comandos.
Reimplantando o commit anterior
Quando solicitada a confirmação, clique em Sim.
Quando a implantação for concluída, volte para a instância do navegador com seu aplicativo Web e pressione CTRL + F5.
Clique em qualquer uma das opções. A animação de inversão agora ocorrerá e o resultado (correto/incorreto) será exibido.
(Opcional) Alterne para o console do Git Bash e execute os comandos a seguir para reverter para o commit anterior.
Observação
Esses comandos criam um novo commit que desfaz todas as alterações no repositório Git que foram feitas na confirmação incorreta. Em seguida, o Azure reimplantará o aplicativo usando o novo commit.
git revert HEAD --no-edit git push azure master
Exercício 4: Dimensionamento usando o Armazenamento do Azure
Os blobs são a maneira mais simples de armazenar grandes quantidades de texto não estruturado ou dados binários, como vídeo, áudio e imagens. Mover o conteúdo estático do aplicativo para o Armazenamento ajuda a dimensionar seu aplicativo fornecendo imagens ou documentos diretamente para o navegador.
Neste exercício, você moverá o conteúdo estático do aplicativo para um contêiner de Blob. Em seguida, você configurará seu aplicativo para adicionar uma regra de regravação de URL ASP.NET no Web.config para redirecionar o conteúdo para o contêiner de Blob.
Tarefa 1 – Criar uma conta de armazenamento do Azure
Nesta tarefa, você aprenderá a criar uma nova conta de armazenamento usando o portal de gerenciamento.
Navegue até o portal de gerenciamento do Azure e entre usando a conta Microsoft associada à sua assinatura.
Selecione Novo | Serviços de Dados | Armazenamento | Criação Rápida para começar a criar uma nova conta de armazenamento. Insira um nome exclusivo para a conta e selecione uma Região na lista. Clique em Criar Conta de Armazenamento para continuar.
Criando uma nova conta de armazenamento
Na seção Armazenamento, aguarde até que o status da nova conta de armazenamento seja alterado para Online para continuar com a etapa a seguir.
Conta de armazenamento criada
Clique no nome da conta de armazenamento e clique no link Painel na parte superior da página. A página Painel fornece informações sobre o status da conta e os pontos de extremidade de serviço que podem ser usados em seus aplicativos.
Exibindo o painel da conta de armazenamento
Clique no botão Gerenciar Chaves de Acesso na barra de navegação.
Botão Gerenciar Chaves de Acesso
Na caixa de diálogo Gerenciar Chaves de Acesso , copie o Nome da Conta de Armazenamento e a Chave de Acesso Primária , pois você precisará delas no exercício a seguir. Em seguida, feche a caixa de diálogo.
Caixa de diálogo Gerenciar Chave de Acesso
Tarefa 2 – Carregar um ativo para Armazenamento de Blobs do Azure
Nesta tarefa, você usará a janela Servidor Explorer do Visual Studio para se conectar à sua conta de armazenamento. Em seguida, você criará um contêiner de blob e carregará um arquivo com o logotipo do Quiz Geek no contêiner.
Alterne para a instância do Visual Studio com a solução GeekQuiz do exercício anterior.
Na barra de menus, selecione Exibir e clique em Servidor Explorer.
No Servidor Explorer, clique com o botão direito do mouse no nó do Azure e selecione Conectar-se ao Azure.... Entre usando a conta Microsoft associada à sua assinatura.
Conecte-se ao Azure
Expanda o nó do Azure , clique com o botão direito do mouse em Armazenamento e selecione Anexar Armazenamento Externo....
Na caixa de diálogo Adicionar Nova Conta de Armazenamento , insira o Nome da conta e a chave da conta obtidas na tarefa anterior e clique em OK.
Caixa de diálogo Adicionar Nova Conta de Armazenamento
Sua conta de armazenamento deve aparecer no nó Armazenamento . Expanda sua conta de armazenamento, clique com o botão direito do mouse em Blobs e selecione Criar Contêiner de Blobs....
Criar contêiner de blob
Na caixa de diálogo Criar Contêiner de Blobs , insira um nome para o contêiner de blob e clique em OK.
Caixa de diálogo
Caixa de diálogo Criar Contêiner de Blob
O novo contêiner de blob deve ser adicionado ao nó Blobs . Altere as permissões de acesso no contêiner para tornar o contêiner público. Para fazer isso, clique com o botão direito do mouse no contêiner de imagens e selecione Propriedades.
Propriedades do contêiner de imagens
Na janela Propriedades , defina o Acesso público de leitura como Contêiner.
Alterando a propriedade de acesso de leitura pública
Quando solicitado se você tiver certeza de que deseja alterar a propriedade de acesso público, clique em Sim.
Aviso do Microsoft Visual Studio
No servidor Explorer, clique com o botão direito do mouse no contêiner de blob de imagens e selecione Exibir Contêiner de Blobs.
Exibir Contêiner de Blobs
O contêiner de imagens deve ser aberto em uma nova janela e uma legenda sem entradas deve ser mostrada. Clique no ícone carregar para carregar um arquivo no contêiner de blob.
Contêiner de imagens sem entradas
Na caixa de diálogo Carregar Blob , navegue até a pasta Ativos do laboratório. Selecione o arquivo logo-big.png e clique em Abrir.
Aguarde até que o arquivo seja carregado. Quando o upload for concluído, o arquivo deverá ser listado no contêiner de imagens. Clique com o botão direito do mouse na entrada do arquivo e selecione Copiar URL.
Copiar URL do blob
Abra o Explorer da Internet e cole a URL. A imagem a seguir deve ser mostrada no navegador.
logo-big.png imagem de Armazenamento de Blobs do Azure
Tarefa 3 – Atualizando a solução para consumir conteúdo estático de Armazenamento de Blobs do Azure
Nesta tarefa, você configurará a solução GeekQuiz para consumir a imagem carregada no Armazenamento de Blobs do Azure (em vez da imagem localizada no aplicativo Web) adicionando uma regra de regravação de URL ASP.NET no arquivo web.config.
No Visual Studio, abra o arquivo Web.config dentro do projeto GeekQuiz e localize o <elemento system.webServer> .
Adicione o código a seguir para adicionar uma regra de regravação de URL, atualizando o espaço reservado com o nome da conta de armazenamento.
(Snippet de código - WebSitesInProduction - Ex4 - UrlRewriteRule)
<system.webServer> <rewrite> <rules> <rule name="redirect-images" stopProcessing="true"> <match url="img/(.*)"/> <action type="Redirect" url="http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/{R:1}"></action> </rule> </rules> </rewrite>
Observação
A reescrita de URL é o processo de interceptação de uma solicitação Da Web de entrada e redirecionamento da solicitação para um recurso diferente. As regras de reescrita de URL informa ao mecanismo de reescrita quando uma solicitação precisa ser redirecionada e para onde elas devem ser redirecionadas. Uma regra de reescrita é composta por duas cadeias de caracteres: o padrão a ser buscado na URL solicitada (geralmente, usando expressões regulares) e a cadeia de caracteres pela qual substituir o padrão, se encontrado. Para obter mais informações, consulte Reescrita de URL no ASP.NET.
Pressione CTRL + S para salvar as alterações.
Abra um novo console do Git Bash para implantar o aplicativo atualizado no Serviço de Aplicativo do Azure.
Execute os comandos a seguir para enviar as alterações por push ao Azure. Atualize o espaço reservado [YOUR-APPLICATION-PATH] com o caminho para a solução GeekQuiz . Você será solicitado a fornecer sua senha de implantação.
cd "[YOUR-APPLICATION-PATH]" git add . git commit -m "Added URL rewrite rule in web.config file" git push azure master
Implantando a atualização no Azure
Tarefa 4 – Verificação
Nesta tarefa, você usará a Internet Explorer para procurar o aplicativo Geek Quiz e marcar que a regra de regravação de URL para imagens funcione e você será redirecionado para a imagem hospedada no Armazenamento de Blobs do Azure.
Abra o Explorer da Internet e navegue até seu aplicativo Web (por exemplo,
http://<your-web-site>.azurewebsites.net
). Faça logon usando as credenciais criadas anteriormente.Mostrando o aplicativo Web Geek Quiz com a imagem
Pressione F12 para iniciar as ferramentas de desenvolvimento, selecione a guia Rede e inicie a gravação.
Iniciando a gravação de rede
Pressione CTRL + F5 para atualizar a página da Web.
Depois que a página terminar de carregar, você deverá ver uma solicitação HTTP para a URL /img/logo-big.png com um resultado HTTP 301 (redirecionamento) e outra solicitação de
http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/logo-big.png
URL com um resultado HTTP 200 .Verificando o redirecionamento de URL
Exercício 5: Usando o dimensionamento automático para Aplicativos Web
Observação
Este exercício é opcional, pois requer suporte para o Web Load & Performance Testing, que só está disponível para Visual Studio 2013 Ultimate Edition. Para obter mais informações sobre recursos de Visual Studio 2013 específicos, compare as versões aqui.
Serviço de Aplicativo do Azure Aplicativos Web fornece o recurso dimensionamento automático para aplicativos Web em execução no Modo Padrão. O dimensionamento automático permite que o Azure dimensione automaticamente a contagem de instâncias do seu aplicativo Web, dependendo da carga. Quando o Dimensionamento Automático está habilitado, o Azure verifica a CPU do seu aplicativo Web uma vez a cada cinco minutos e adiciona instâncias conforme necessário nesse momento. Se o uso da CPU for baixo, o Azure removerá instâncias uma vez a cada duas horas para garantir que o desempenho do aplicativo Web não seja degradado.
Neste exercício, você passará pelas etapas necessárias para configurar o recurso de Dimensionamento Automático para o aplicativo Web Geek Quiz . Você verificará esse recurso executando um teste de carga do Visual Studio para gerar carga de CPU suficiente no aplicativo para disparar uma atualização de instância.
Tarefa 1 – Configurar o dimensionamento automático com base na métrica da CPU
Nesta tarefa, você usará o portal de gerenciamento do Azure para habilitar o recurso de Dimensionamento Automático para o aplicativo Web criado no Exercício 2.
No portal de gerenciamento do Azure, selecione Sites e clique no aplicativo Web que você criou no Exercício 2.
Navegue até a página Escala . Na seção capacidade , selecione CPU para a configuração Dimensionar por Métrica .
Observação
Ao dimensionar por CPU, o Azure ajusta dinamicamente o número de instâncias que o aplicativo usa se o uso da CPU for alterado.
Selecionando para dimensionar por CPU
Altere a configuração da CPU de destino para 20-40 %.
Observação
Esse intervalo representa o uso médio da CPU para seu aplicativo Web. O Azure adicionará ou removerá instâncias para manter seu aplicativo Web nesse intervalo. O número mínimo e máximo de instâncias usadas para dimensionamento é especificado na configuração contagem de instâncias . O Azure nunca ultrapassará ou ultrapassará esse limite.
Os valores de CPU de destino padrão são modificados apenas para fins deste laboratório. Ao configurar o intervalo de CPU com valores pequenos, você está aumentando as chances de disparar o Dimensionamento automático quando uma carga moderada é colocada no aplicativo.
Alterando a CPU de destino para ficar entre 20 e 40%
Clique em Salvar na barra de comandos para salvar as alterações.
Tarefa 2 – Teste de carga com o Visual Studio
Agora que o Dimensionamento Automático foi configurado, você criará um projeto de teste de carga e desempenho da Web no Visual Studio para gerar alguma carga de CPU em seu aplicativo Web.
Abra Visual Studio Ultimate 2013 e selecione Arquivo | Novo | Projeto... para iniciar uma nova solução.
Crie um novo projeto
Na caixa de diálogo Novo Projeto, selecione Projeto de Teste de Carga e Desempenho web no Visual C# | Guia Teste. Verifique se .NET Framework 4.5 está selecionado, nomeie o projeto WebAndLoadTestProject, escolha um Local e clique em OK.
Criando um novo projeto de Teste de Carga e Web
No WebTest1.webtest Clique com o botão direito do mouse no nó WebTest1 e clique em Adicionar Solicitação.
Alterando a propriedade url
Na janela WebTest1.webtest , clique com o botão direito do mouse em WebTest1 e clique em Adicionar Loop....
Adicionando um loop ao WebTest1
Na caixa de diálogo Adicionar Regra Condicional e Itens ao Loop , selecione a regra Loop For e modifique as propriedades a seguir.
Valor de terminação: 1000
Nome do parâmetro de contexto: Iterador
Valor de incremento: 1
Selecionando a regra Loop For e atualizando as propriedades
Na seção Itens em loop , selecione a solicitação que você criou anteriormente para ser o primeiro e o último item do loop. Clique em OK para continuar.
Selecionando o primeiro e o último itens para o loop
Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto WebAndLoadTestProject, expanda o menu Adicionar e selecione Teste de Carga....
Adicionando um teste de carga ao projeto WebAndLoadTestProject
Na caixa de diálogo Assistente para Novo Teste de Carga , clique em Avançar.
de
Assistente para Novo Teste de Carga
Na página Cenário , selecione Não usar tempos de consideração e clique em Avançar.
Selecionando não usar tempos de consideração
Na página Padrão de Carga , verifique se a opção Carregamento Constante está selecionada. Altere a configuração Contagem de Usuários para 250 usuários e clique em Avançar.
Alterando a contagem de usuários para 250
Na página Modelo de Combinação de Testes , selecione Com base na ordem de teste sequencial e clique em Avançar.
Selecionando o modelo de combinação de testes
Na página Modelo de Combinação de Testes , clique em Adicionar... para adicionar um teste à combinação.
Adicionando um teste à combinação de testes
Na caixa de diálogo Adicionar Testes , clique duas vezes em WebTest1 para adicionar o teste à lista Testes selecionados . Clique em OK para continuar.
Adicionando o teste WebTest1
De volta à página Combinação de Testes , clique em Avançar.
Concluindo a página Combinação de Testes
Na página Combinação de Rede , clique em Avançar.
Clicando em avançar na página Combinação de Rede
Na página Combinação de Navegadores, selecione Internet Explorer 10.0 como o tipo de navegador e clique em Avançar.
Selecionando o tipo de navegador
Na página Conjuntos de Contadores , clique em Avançar.
Clicando em Avançar na página Conjuntos de Contadores
Na página Configurações de Execução , defina a Duração do teste de carga como 5 minutos e clique em Concluir.
Definindo a duração do teste de carga como 5 minutos
Em Gerenciador de Soluções, clique duas vezes no arquivo Local.settings para explorar as configurações de teste. Por padrão, o Visual Studio usa o computador local para executar os testes.
Observação
Como alternativa, você pode configurar seu projeto de teste para executar os testes de carga na nuvem usando Azure Test Plans. Azure Test Plans fornece um serviço de teste de carga baseado em nuvem que simula uma carga mais realista, evitando restrições de ambiente local, como capacidade de CPU, memória disponível e largura de banda de rede. Para obter mais informações sobre como usar Azure Test Plans para executar testes de carga, consulte Cenários de teste de carga.
Tarefa 3 – Verificação de dimensionamento automático
Agora você executará o teste de carga criado na tarefa anterior e verá como seu aplicativo Web se comporta sob carga.
Em Gerenciador de Soluções, clique duas vezes em LoadTest1.loadtest para abrir o teste de carga.
Abrindo LoadTest1.loadtest
Na janela LoadTest1.loadtest , clique no primeiro botão na caixa de ferramentas para executar o teste de carga.
Executando o teste de carga
Aguarde até que o teste de carga seja concluído.
Observação
O teste de carga simula vários usuários que enviam solicitações ao aplicativo Web simultaneamente. Quando o teste estiver em execução, você poderá monitorar os contadores disponíveis para detectar erros, avisos ou outras informações relacionadas à execução do teste de carga.
Teste de carga em execução
Depois que o teste for concluído, volte para o portal de gerenciamento e navegue até a página Escala do seu aplicativo Web. Na seção capacidade , você deve ver no grafo que uma nova instância foi implantada automaticamente.
Nova instância implantada automaticamente
Observação
Pode levar vários minutos para que as alterações apareçam no grafo (pressione CTRL + F5 periodicamente para atualizar a página). Se você não vir nenhuma alteração, tente o seguinte:
- Aumentar a duração do teste de carga (por exemplo, para 10 minutos)
- Reduzir os valores máximo e mínimo do intervalo de CPU de destino na configuração de dimensionamento automático do aplicativo Web
- Execute o teste de carga na nuvem com Azure Test Plans. Mais informações podem ser obtidas aqui
Resumo
Neste laboratório prático, você aprendeu a configurar e implantar seu aplicativo em aplicativos Web de produção no Azure. Você começou detectando e atualizando seus bancos de dados usando Migrações do Entity Framework Code First e, em seguida, continuou implantando novas versões do seu site usando o Git e executando reversões para a versão estável mais recente do seu site. Além disso, você aprendeu a dimensionar seu aplicativo usando o Armazenamento para mover seu conteúdo estático para um contêiner de Blob.