Desenvolvimento com tecnologia Microsoft e Interoperabilidade
Twitter: @vbs_br
Facebook: vbatistadesouza
LinkedIn: viniciusbatista

Windows Azure Mobile Services

No fim do mês passado (Ago/2012) o time do Windows Azure anunciou o lançamento de um novo serviço o Mobile Service (a.k.a. ZUMO).

Com o Mobile Service, podemos acelerar o desenvolvimento de aplicativos focando no desenvolvimento propriamente dito, ou seja, não precisamos nos preocupar com a infraestrutura necessária, nem em sua configuração para termos um serviço de backend escalável para nosso aplicativo.

Para a versão preview foi disponibilizado apenas o SDK para o Windows 8, mas como todo serviço do Windows Azure o Mobile  Services utiliza chamadas HTTP (REST), o que nos dá possibilidade de codificar nossas chamadas em qualquer linguagem facilmente.

Nesse artigo vou mostrar como habilitar o Mobile Services e como realizar as chamadas REST e utilizar esse serviço utilizando qualquer plataforma.

Habilitando o Mobile Services em sua conta

 

Para habilitar o Mobile Service  em nossa conta do Windows Azure, acesse o link https://account.windowsazure.com/ e faça login com sua conta.

Em seguida clique sobre o link “Recursos de visualização” ou “preview features” no meu superior, veja imagem abaixo.

Na página seguinte será apresentado os serviços que estão em preview habilitados para sua conta, clique no botão “Try it now” no item Mobile Services. Essa é uma excelente oportunidade para habilitar outros serviços disponível na versão preview como o WebSites, Virtual Machine, por exemplo, caso não tenha habilitado todos os serviços.

Ao clicar no botão “try it now” será apresentado o pop-up abaixo. Escolha a subscription que deseja habilitar, caso possua mais de uma, e aguarde alguns instantes até que o serviço seja habilitado.

Depois que o serviço estiver habilitado em sua conta, um novo item de menu vai estar disponível.

 

Crie um novo serviço clicando sobre o link “Create new app”, ou acessando a opção “NEW” no fim da página.

O Mobile Services necessita de um banco de dados SQL Server, se não possuir um banco de dados, o assistente de criação vai apresentar as opções necessárias.
Comece definindo a URL para o serviço, nesse exemplo vou criar o serviço “vbs-br.azure-mobile.net” e vou criar o banco de dados “vbs-mobile”.

 

Quando criar o banco de dados, lembre-se de tomar nota das informações de acesso :)

Após finalizarmos o processo de criação, teremos a seguinte url https://vbs-br.azure-mobile.net/, se acessar a url vai visualizar a página padrão informando que o serviço foi criado e está rodando.

A página visualizada não pode ser alterada, mas tenha em mente que o Mobile Service é um endpoint e somente isso, ou seja, não é para ser utilizado como um servidor web.

Tendo isso em mente volte para o portal e clique no serviço criado, no meu caso “vbs-br” para acessar o painel de controle do serviço. Veja imagem abaixo.

A página apresenta algumas opções para utilizarmos com as aplicações do Windows 8, mas como disse antes essa não é a única maneira de utilizarmos o Mobile Service. Vamos criar uma tabela de dados e disponibilizá-la através do serviço criado.

O Azure Mobile Services permite armazenar dados, fazer autenticação e push notification. Porém nesse artigo vou focar no serviço de dado, pois acredito ser a prioridade no momento.

Criando uma tabela

 

No painel de controle acesse a aba “DATA”, em seguida clique sobre o link “ADD A TABLE”.

Defina a nome para a tabela e defina o nível de acesso para cada ação do CRUD, as opções disponíveis são:

  • Everyone – (Todos);
  • Anybody with the application key – (Somente que tiver a chave de acesso da aplicação);
  • Only Authenticated Users – (Somente usuários autenticados);
  • Only Scripts and Admins - (Somente Scripts e administradores).

Nesse exemplo, vou criar uma tabela chamada “Teste” e vou deixar o nível de acesso padrão “Anybody with the applicaiton key”.

O Azure Mobile Services expõe os dados utilizando as seguintes URLs e os dados são submetidos e retornados utilizando JSON.

Http Method URL Descrição
GET https://[your_service].azure-mobile.net/tables/[table_name]/ Retorna todos os registros
GET https://[your_service].azure-mobile.net/tables/[table_name]?$filter Retorna um único registro pelo
POST https://[your_service].azure-mobile.net/tables/[table_name]/ Adiciona um novo registro
PATCH https://[your_service].azure-mobile.net/tables/[table_name]/1 Atualiza o registro identificado pelo ID
DELETE https://[your_service].azure-mobile.net/tables/[table_name]/1 Exclui o registro identificado pelo ID

O Http Method PATCH, não é muito conhecido e por isso segue esse link http://tools.ietf.org/html/rfc5789 do IETF – Internet Engineering Task Force, mas para quem quiser uma rápida definição o PATCH é uma extensão do PUT, que permite atualização parcial do objeto.

No meu caso, todas as requisições serão realizadas utilizando https://vbs-br.azure-mobile.net/tables/Teste.

Alterei o nível de permissão para consulta deixando que todos (Everyone) possam ler os dados armazenados em minha tabela.

Validação de dados

Uma das features mais legais da Mobile Services é a possibilidade de incluir server script, para serem executados em determinadas ações. No caso de dados, por exemplo posso definir regras de validação para o registro.

Para definir a sua regra de validação faço o seguinte, clique na tabela criada na aba “DATA” e em seguida acesse o menu “Script”, logo abaixo do menu existe uma caixa de combo com as operações {Insert, Update, Delete, Read}.

A linguagem utilizada para manejar os dados é o JavaScript, então sem problemas.

Cada operação possui seu próprio método.

Operação Assinatura
Insert function insert (item, user, request) { … }
Update function update (item, user, request) { … }
Delete function del (id, user, request) { … }
Read function read (query, user, request) { … }

 

Cada método possui 3 argumentos, onde o segundo é sempre o user e o terceiro sempre o request.

O user é representa o usuário que enviou os dados, veja a definição do objeto aqui.

E o request é o objeto que representa o request realizado, ele é utilizado para executar a operação e determinar a resposta para o usuário. Um método sempre deve executar o método execute ou respond, caso contrário a operação vai retornar um erro de timeout. Veja mais sobre o objeto request aqui.

Veja abaixo um exemplo para o método Insert, nesse exemplo irei criar uma coluna dinamicamente da tabela de teste incluindo o ID do usuário que realizou o post.

Aqui eu poderia ter incluído regras de validação de campos, e executar até mesmo outras funções para facilitar a leitura do código.

Agora que falei um pouco sobre as operações e suas funções, vamos falar do request.

Utilizando o nível de acesso “Anybody with the Application Key”, para cada chamada devemos informar no header o valor da chave da aplicação do serviço, utilizando a variável “X-ZUMO-APPLICATION”.

Para recuperar a chave da aplicação, acesse o Dashboard do seu serviço e clique no botão “Manage Keys” localizado no fim da página, será apresentado uma nova janela com as chave.

Não devemos esquecer também de informar o ContentType  “application/json”.

 

Já temos alguns casos de uso do Azure Mobile Service em plataformas como IOS, Android e Windows Phone. No repositório WindowsAzure-Samples no gitHub temos um exemplo de aplicação para a plataforma IOS utilizando a tabela da forma como foi apresentado aqui, veja o projeto aqui.

Abraço e até o próximo artigo.

 

 

 

No comments

Trackbacks/Pingbacks

  1. Windows Azure Mobile Services : Porta 25 - [...] [...]

Leave a Reply

%d bloggers like this: