Fala moçada! De algumas semanas para cá, comecei a desenvolver para o Azure a partir de uma necessidade de criar um WebRole WCF para disponibilizar serviços RESTFULL para acesso via dispositivos mobile. Este WebRole será disponibilizado juntamente com outro que já está no ar.
A montagem do ambiente foi tranquila, fiz o download do SDK 1.5, atualizei os Visual Studio 2010 e até então tudo certo. Após criar o primeiro método e rodar a App ela subiu direitinho em um endereço como este: http://127.0.0.1:8080/MeuServico. Fiz alguns testes via jquery, e tudo funcionando que é um beleza! Mas não pode ser tão fácil né…. nunca é!
Como trabalho em um MacBook em razão do desenvolvimento para iphone dentre outras coisas, uso o Windows em uma máquina virtual (parallels), então, meu raciocínio foi: “se na vm o serviço está no endereço http://127.0.0.1:8080/MeuServico, logo, para acessá-lo do Mac, utilizo o endereço http://meuip:8080/MeuServico”. Mas qual foi a surpresa? A porta não responde! Eu só poderia estar fazendo algo errado, é claro! Afinal de contas é minha primeira App no Azure, está faltando alguma coisa.
Após muitas algumas longas horas de pesquisa descobri que o SDK do Azure, simplesmente bloqueia a porta que está “servindo” o WebRole por questões de segurança para acesso de outra máquina, dado que o mesmo precisa ser rodado com privilégios de administrador para emular o ambiente Clód Azure.
Mais algum tempo de procura (Google #FTW), encontrei o blog de um gringo que me salvou ajudou. A solução basicamente é abrir uma outra porta e redirecionar para a porta que o Azure está utilizando na sua máquina. Existem algumas maneiras pra fazer isto, inclusive com configurações do IIS e etc, porém obtive sucesso somente com a dica do Emmanuel`s Blog. Abaixo segue a a solução por ele encontrada:
1 – Baixe o rinetd
O ridnet é um utilitário Unix, mas existe um parte para utilizada em windows.
http://www.boutell.com/rinetd/
Após o download, ao abrir o arquivo ZIP, você perceberá que existem vários arquivos. Estes arquivos são necessários caso você esteja com tempo ou queira ver como esse trem é feito queira recompilar o exe posteriormente. No momento precisaremos apenas do arquivo rinetd.exe, extraia-o para uma pasta a sua escolha.
2 – Configurando o rinetd
Crie um novo arquivo chamado “rinetd.conf” no diretório que você colocou o rinetd.exe. Neste arquivo ficará a configuração das portas a serem redirecionadas.
Abra-o no bloco de notas. E insira as informações como descrito abaixo:
10.10.1.20 9980 127.0.0.1 8080
- [10.10.1.20] O endereço a esquerda é seu endereço na rede, você pode descobrir seu ip através do comando ipconfig com prompt de comando do windows;
- [9980] Porta que deverá estar disponível para acesso de outra máquina;
- [127.0.0.1] Único atualmente endereço ip que o ambiente de desenvolvimento do Azure aceita acesso;
- [8080] Porta que sua WebRole no azure está disponível na sua máquina local;
Salve o arquivo e feche-o. Não se esqueça que ele precisa estar na mesma pasta do rinetd.exe.
3 – Inicie o rinetd
Existem três maneiras de inicar o rinetd, manualmente através do prompt de comando, através de um arquivo .bat ou criando um serviço para iniciar este arquivo bat todas as vezes que o sistema iniciar. Irei mostrar apenas as duas primeiras, a terceira pode ser verificada no Emmanuel`s Blog.
- Manualmente:
Digite no prompt de comando:
meu_caminho_escolhido/rinetd-c rinetd.conf
- Através de um arquivo .bat:
Crie um arquivo .bat e coloque os comando descritos abaixo:
c:
cd meu_caminho_escolhido
start meu_caminho_escolhido\rinetd.exe -c C:\rinetd\rinetd.conf
Pronto!!! Agora você pode acessar sua webrole de outra máquina no ambiente de desenvolvimento através do endereço http://10.10.1.20:9980/MinhaWebRole. E talvez queira economizar alguns trocados pode utilizar para testes e homologação.
IMPORTANTE:
Não se esqueça de configurar e rodar o rinetd TODAS as vezes que você estiver em uma rede diferente, visto que seu ip será outro.
TODOS os créditos são do Emmanuel`s Blog, http://blog.ehuna.org/2009/10/an_easier_way_to_access_the_wi.html.
Até a próxima!
Caso tenham alguma dúvida, comenta no post ou manda pelo twitter @flavio1110.
Até a próxima.
Flávio Silva