Fernando Correia

Experiência com Front-End Orientado a Serviços

In Dicas on 28 jun 2012 at 21:35

Nos últimos meses estive desenvolvendo, junto com os colegas Rafael Leonhardt, Jean Pereira e Márcio Oliveira, um software como serviço escalável na plataforma Windows Azure.

Para atender os requisitos de escalabilidade e conectividade do projeto, eu selecionei uma arquitetura que venho pesquisando já há alguns anos, chamada SOFEA (Service-Oriented Front-End Architecture, ou arquitetura de interface com o usuário orientada a serviços), também conhecida como Thin Server Architecture (arquitetura de servidor leve).

Neste padrão, o servidor, que no nosso caso é hospedado no Windows Azure, é responsável pela lógica de negócio e armazenamento de dados, e oferece uma interface orientada a serviços. A interface com o usuário é executada totalmente no dispositivo cliente (computador ou dispositivo móvel). Para ficar claro, neste estilo de arquitetura não há camada de apresentação no servidor.

Neste projeto, as tecnologias que eu selecionei para o servidor foram um serviço REST sobre HTTP com protocolo OData, implementado com o WCF Data Services da Microsoft sobre um modelo de entidades baseado no Entity Framework e armazenamento de dados escalável com SQL Azure Federations.

Para o aplicativo cliente, eu selecionei a tecnologia HTML5 com JavaScript utilizando o framework Sencha Ext JS. Este aplicativo é uma coleção de classes JavaScript que gera a interface HTML no próprio cliente e comunica-se com o servidor por XMLHttpRequest (XHR) no formato JSON.

A arquitetura de uma aplicação neste padrão segue este modelo:

experiencia-com-front-end-orientado-a-servicos-1

É uma arquitetura que tem por característica a alta coesão de seus grandes componentes (aplicativo cliente e serviço de aplicação) e o baixo acoplamento entre eles. Entre as diversas vantagens, destaca-se a possibilidade de evoluir a interface com o usuário de forma independente da lógica de negócios, e a conectividade com outras aplicações.

Ontem nós tivemos a grata surpresa de ter uma demonstração prática destas características. Em um concurso interno de programação de nossa empresa, com patrocínio da Microsoft, nosso colega Carlos Neto implementou uma nova aplicação cliente conectada ao nosso serviço de aplicação.

Ele desenvolveu um aplicativo nativo para Windows Phone que conecta-se ao nosso serviço de aplicação e permite ao usuário fazer consultas de forma simples e objetiva, e armazenar dados localmente no próprio dispositivo para utilização desconectada.

Ou seja, não é uma mera transposição das funcionalidades da aplicação HTML/JavaScript para outra plataforma, mas é um aplicativo completamente diferente, que conecta-se aos serviços já existentes:

experiencia-com-front-end-orientado-a-servicos-2

Esta experiência serviu como exemplo e comprovação da flexibilidade desta arquitetura e dos benefícios que pode trazer para os negócios, viabilizando o desenvolvimento rápido de aplicações para novas plataformas.