No Windows Azure: O que são função web, função de trabalho e função VM?
115
O aplicativo em que trabalho contém uma função web: é um aplicativo web simples. Eu precisava hospedar o aplicativo no Windows Azure, então criei uma função web. Na verdade, quero saber para que servem esses papéis. Qual é o seu significado em termos de codificação ou armazenamento?
EDITAR 03/03/2013 - atualizado para referenciar endpoints UDP, máquinas virtuais e mais idiomas
EDITAR 6/6/2013 - atualizado para refletir a descontinuação da função VM e atualizar as imagens de sistema operacional de linha de base da função web / trabalhador para o Windows Server 2012
Bom link de @Vladimir. Um pouco mais de esclarecimento: todas as funções (web, trabalhador) são essencialmente Windows Server. As funções da Web e de trabalho são quase idênticas:
As funções da Web são VMs do Windows Server com IIS habilitado
As funções de trabalho são VMs do Windows Server com IIS desabilitado (e você pode habilitá-lo manualmente)
As funções da VM são imagens do Windows Server 2008 que você constrói localmente via Hyper-V e carrega no Azure (e agora foram descontinuadas e não estão mais disponíveis em 31 de maio de 2013
Máquinas virtuais são imagens do Windows ou Linux criadas no Azure, armazenadas como um vhd em seu próprio armazenamento e têm vários aprimoramentos sobre a função VM. Por exemplo: como o vhd está em sua própria conta de armazenamento, você pode criar facilmente um modelo de imagem de seu vhd, copiá-lo para um novo vhd ou até mesmo carregá-lo no VM Depot (somente Linux).
Para responder à sua pergunta sobre o que fazer com essas funções: O kit de treinamento da plataforma (mencionado abaixo) lhe dará muitas boas ideias e exemplos, mas aqui estão alguns casos de uso simples:
Você pode executar qualquer código que exponha um ponto de extremidade tcp, http, https ou udp (aplicativos da web, serviços SOAP / REST etc.). Você precisa pensar sobre a maneira sem estado de fazer as coisas - se você tiver mais de uma instância de VM em execução, o tráfego do usuário será distribuído entre essas instâncias. O kit de treinamento da plataforma mostrará como usar armazenamento ou cache para lidar com isso.
Você pode executar o código que vive fora de uma fila ou um cronômetro. Talvez você tenha tarefas sob demanda, como geração de miniaturas de fotos ou cálculos baseados na entrada do usuário. Eles não precisam de terminais disponíveis externamente. Você pode enviar suas solicitações para uma fila e, em seguida, ter uma tarefa em execução que simplesmente se alimenta dessa fila (e você pode escalar esse processo em várias instâncias, com mensagens de fila consumidas por todas as instâncias).
Você pode executar .NET, Java, php, python, node, ruby, etc. Você só precisa distribuir o código de tempo de execução apropriado junto com o código do projeto. Todas as linguagens podem fazer chamadas REST para a API do Azure e várias linguagens (incluindo aquelas mencionadas acima) têm SDKs que cuidam disso para você. Todos os SDKs de linguagem estão aqui , com o código-fonte no github, aqui .
Com uma função de VM, você pode instalar e executar software com instalações muito complexas / demoradas, instalações que requerem intervenção manual e instalações que não podem ser automatizadas de forma confiável. Você deve lidar com a manutenção do sistema operacional neste caso. Além da função VM, agora existem máquinas virtuais, fornecendo construção VM baseada em nuvem, juntamente com suporte para Windows e Linux. Eu sugeriria máquinas virtuais em vez da função VM.
Com funções da Web e de trabalho, o SO e os patches relacionados são tratados para você; você constrói os componentes do seu aplicativo sem ter que gerenciar uma VM.
Com as funções de VM, você cria uma imagem completa do Windows Server, adiciona os ganchos do Azure a ela e envia toda a VM para a nuvem (e então mantém a imagem da VM ao longo do tempo).
Com as máquinas virtuais, você simplesmente escolhe uma imagem do sistema operacional em uma galeria, que é criada para você e armazenada como um vhd no armazenamento de blob. Você então RDP / ssh e configura como quiser.
Usando o chapéu do arquiteto, é aqui que fica divertido e interessante. Você pode executar serviços da Web em uma função da Web ou função de trabalho (e ser capaz de abrir portas em qualquer uma); Você pode hospedar o Tomcat ou outros servidores da Web em uma função de trabalho. você pode escolher combinar um site e serviços em uma única função ou dividi-los em várias funções para diferentes necessidades de escalabilidade.
Você pode realmente expor pontos de extremidade tcp em uma função da web? De acordo com a smarx, todos eles têm que ser HTTP: stackoverflow.com/questions/2926737/… Isso faz outra diferença sutil entre as funções.
Richard Astbury,
Eu respondi minha própria consulta, você pode abrir a porta tcp, mas não vinculá-la ao site.
Richard Astbury,
2
Richard - Embora esse costumava ser o caso, os terminais agora podem ser tcp, http ou https, independentemente do tipo de função. Eu construí um aplicativo de amostra que tem uma mistura de tcp e http, enquanto demonstrava a nova atualização de 25 endpoint por função alguns meses atrás - veja aqui a postagem do blog - davidmakogon.com/2011/05/…
David Makogon
Desculpe - eu quis dizer demonstrar 25 endpoints por implantação. E ... vendo seu outro comentário, posso ter respondido à pergunta errada. :)
David Makogon
@DavidMakogon - O que substituiu a Web Role e a Worker Role? Preciso implantar um site com PhantomJS que requer GDI +. GDI + não é totalmente compatível com Web Jobs. Eu esperava poder usar um papel da web. O que substituiu o papel da Web? Gostei do conceito de VM que foi corrigido e mantido pelo Azure. Obrigado!
Martin
30
As funções da Web são aplicativos da Web hospedados no IIS.
Funções de trabalho são processos que podem fazer algum trabalho (ou seja, compactar imagens carregadas automaticamente, fazer coisas sempre que algo mudar em seu banco de dados, obter novas mensagens da fila e processar, você escolhe)
Essa é uma resposta muito mais simples e, desculpe, eles não são VMs ... você poderia imaginar qual seria o custo de uma solução com várias camadas com várias funções de trabalho em execução em segundo plano se fosse uma VM separada? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence
para ser mais específico, as funções de trabalho são VMs sem IIS
dejjub-AIS
21
Eu encontrei esta pergunta / resposta do SO há vários dias e descobri que as respostas fornecidas um pouco além da minha cabeça (sou novo no Azure e na Web). Encontrei este resumo nos fundamentos do Azure esta noite, que achei ser uma boa visão geral de alto nível das principais diferenças entre o trabalhador e as funções da web:
A principal diferença entre os dois é que uma instância de uma função web executa o IIS, enquanto uma instância de uma função de trabalho não. Ambos são gerenciados da mesma maneira, no entanto, e é comum que um aplicativo use os dois. Por exemplo, uma instância de função da Web pode aceitar solicitações de usuários e, em seguida, passá-los para uma instância de função de trabalho para processamento. Para aumentar ou diminuir seu aplicativo, você pode solicitar que o Windows Azure crie mais instâncias de qualquer função ou desligue as instâncias existentes. E semelhante às máquinas virtuais do Windows Azure, você é cobrado apenas pelo tempo que cada instância de função de trabalho ou web está em execução.
Se você é novo no desenvolvimento do Azure, recomendo a leitura do artigo completo aqui: Introdução ao Windows Azure
Espero que isso ajude alguém tanto quanto ajudou a acender a lâmpada para mim.
As funções da Web no Windows Azure têm um propósito especial e fornecem um servidor Web dedicado dos Serviços de Informações da Internet (IIS) usado para hospedar aplicativos Web front-end. Você pode implantar aplicativos da web de forma rápida e fácil para funções da web e, em seguida, aumentar ou diminuir seus recursos de computação para atender à demanda.
fonte
Eu encontrei esta pergunta / resposta do SO há vários dias e descobri que as respostas fornecidas um pouco além da minha cabeça (sou novo no Azure e na Web). Encontrei este resumo nos fundamentos do Azure esta noite, que achei ser uma boa visão geral de alto nível das principais diferenças entre o trabalhador e as funções da web:
Se você é novo no desenvolvimento do Azure, recomendo a leitura do artigo completo aqui: Introdução ao Windows Azure
Espero que isso ajude alguém tanto quanto ajudou a acender a lâmpada para mim.
fonte
As funções da Web no Windows Azure têm um propósito especial e fornecem um servidor Web dedicado dos Serviços de Informações da Internet (IIS) usado para hospedar aplicativos Web front-end. Você pode implantar aplicativos da web de forma rápida e fácil para funções da web e, em seguida, aumentar ou diminuir seus recursos de computação para atender à demanda.
fonte