ASP.NET Web API - Cloud-Host, IaaS, PaaS e Cloud Services com Windows Azure. Parte 1

Cloud Computing & Microsoft Azure & Services & WebAPI

Nos posts anteriores já tivemos a oportunidade de conhecer o ASP.NET Web API, seu poder, arquitetura e possibilidades. Agora chegou a hora de brincar um pouco e levar os nossos serviços ao cenário distribuído da Cloud Computing com Windows Azure. Neste post vamos dar uma olhada nos cenários, possibilidades e como implantar WebAPI no Windows Azure.

capa

Antes de continuar, para este post vou considerar que você já tem experiência com Windows Azure, já possui uma conta e já tem acesso ao portal de gestão do Azure. Estou considerando que você já tem conhecimento sobre ASP.NET Web API e já leu os três artigos anteriores sobre como consumir Web API em domínios diferentes utilizando CORS, AJAX e JSONP. Caso contrário, sugiro primeiro a leitura dos links abaixo antes de continuar:

Basicamente, falar de Cloud-Host com WebAPI, é falar em hospedar nosso serviço na nuvem. Neste caso no Windows Azure.

O primeiro ponto é perceber existem diversas maneiras de hospedar um serviço no Windows Azure. Podemos utilizar um modelo Web-Hosting ou Self-Hosting bem como hospedar um ambiente IaaS, PaaS ou SaaS. Enfim, não vou abordar todos os cenários pois o importante é entender os conceitos antes de prosseguir. Para isso, segue uma pequena referência:

    • Web-Hosting – Estilo de hospedagem utilizando o IIS.
    • Self-Hosting – Hospedagem que utiliza de um processo Windows diferente do IIS.
    • Cloud-Hosting – Estilo de hospedagem utilizando o Windows Azure.
    • IaaS – Infraestrutura como serviço.
    • SaaS – Software como serviço.
    • PaaS – Plataforma como serviço.

 
Apenas para exemplificar, poderiamos hospedar nosso serviço utilizando um modelo Self-Hosting com um Worker-Role em um Cloud Service ou rodando um aplicativo console dentro de uma VM do Windows Azure. É possível apenas criar nossa WebAPI utilizando o template base do Visual Studio e publicar diretamente para um Cloud Service ou utilizar uma estrutura SaaS com Azure Web Sites.

O importante neste ponto é conhecer o que cada modelo pode te proporcionar. Lembre-se, estamos falando de nuvem, logo a premissa que impera aqui é: "Pague pelo que usar". Sendo assim procure enteder sua necessidade para montar a melhor solução possível.

O que vamos fazer noste post é prover nosso serviço, hospendando ele nos seguinte cenários:

  • SaaS – Utilizando um Template Web API hospedado no Azure Web Sites, modelo Web-Hosting
  • IaaS – Utilizando um Console Aplication rodando em uma VM no Cloud Service, modelo Self-Hosting

 

Para acompanhar os exemplos você precisa baixar os dois projetos que utlizamos no post “ASP.NET Web API – Criando um CRUD e consumindo em um domínio diferente. CORS, AJAX e JSONP [Parte 3]” CLICANDO AQUI!

 

Cloud-Host com SaaS

Acesse o portal de gestão do Windows Azure e clique na aba Web Sites. Ao em Web Sites, clique no + NEW que fica no canto inferior esquerdo. Selecione a opção WEB SITE, QUICK CREATE e informe a URL e a região do site a ser criado. No meu exemplo estou utilizando WebApiServerSaaS (como já estou utilizando e são URIs então escolha uma diferente ok?).

01

Clique em CREATE WEB SITE e pronto. Seu Web Site no Windows Azure utilizando SaaS está pronto e rodando.

Clique no Web Site recém criado e na aba DASHBOARD selecione a opção “Download the publish profile”. Com isso você vai realizar o download de um arquivo .PublishSettings que nada mais é que um XML contendo as informações do site e da conexão para utilizar o recurso “Publish Web” do Visual Studio.

Já no Visual Studio, clique com o botão direito sobre o projeto CloudHostingMunicipios e selecione a opção Publish…

02

Na tela que se segue, selecione a aba Profile importe o arquivo .PublishSettings. Na aba Preview clique em Star Preview, apenas para visualizar se todos os arqvuivos necessários está sendo enviados, teste a conexão e pode clicar em Publish. Neste momento nosso serviço WebAPI está sendo publicado na estrutura SaaS do WebSites Azure.

03

Após publicado o site será aberto no seu browser. Bom, meu serviço está publicado em http://webapiservercors.azurewebsites.net/ e ficou com a seguinte cara:

04

Fiz algumas adaptações de layout na tela principal porque vou deixar este exemplo rodando para que o pessoal possa testar.

Com já realizamos todo o tratamento em nosso serviço para que o mesmo possa trabalhar com domínios diferentes, basta apenas alterar em nosso Web API HTML Client trocando nas URLs o valor de http://localhost:56601/ por http://webapiserversaas.azurewebsites.net/. Como exemplo, o código script da index.html deve ficar como exibido abaixo:

05

Sendo assim, já estamos consumindo nosso serviço localmente. Como estamos utilizando CORS e JSONP este é o mesmo princípio dos posts anteriores. Não tem segredo, não precisa de configurações ou EndPoints adicionais. Estamos rodando tudo baseado em HTTP, de maneira simples e direta nosso serviço já está rodando em ambiente SaaS e pronto para ser consumido pela gama de clientes que forem necessários. Tenha em mente que não importa se estamos rodando local ou hospedado na nuvem, nosso serviço está pronto para fornercer os dados requiridos.

06

 

 

Cloud-Host com IaaS

Neste exemplo vamos utilizar um modelo Self-Hosting, onde vamos disponibilizar nosso serviço por meio de um Console Aplication rodando em uma VM no Windows Azure. Este é mais uma abordagem em que podemos utilizar o WebAPI para disponibilizar serviços.

Para continuar, baixe o projeto Console CLICANDO AQUI! Este projeto nada mais é que o serviço que já estamos utilizando adaptado para um projeto Console. Algumas observações:

Para esta implementação utilizei os mesmos passos do post xxx

Note que em

Agora vamos criar nossa VM para a hospedagem do nosso serviço. Selecione a opção de Virtual Machines no portal de gestão do Windows Azure, + NEW, VIRTUAL MACHINE e QUICK CREATE. Estou criando uma VM com Windows Server 2012 em uma instância Extra Small, mas sinta-se avontade para selecionar outra versão de Windows Server.

003

Para saber mais sobre Virtual Machines no Azure indico o seguinte link: VIRTUAL MACHINES!

Com nossa VM rodando, clique sobre ela e vá para a aba INSTANCES e na barra inferior clique em CONNECT. Será baixado um arquivo .rdp com o qual você pode se conectar remotamente a sua VM.

004

 

Para não estender muito, vamos realizar as outras configurações e a implantação do modelo IaaS com Self-Hosting na continuação deste POST.

No fim, vou publicar todo o código fonte utilizado neste séria para download no GitHub.

 

Até mais e bom estudo a todos!


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


7 minutes to read