domingo, 21 de março de 2010

A Page to rule them all

Você é capaz imaginar uma aplicação web/web site composto inteiramente de uma única página? Esta é a proposta do Single Page Interface Manifesto, publicado recentemente por Jose Maria Arranz Santamaria.

Movido inicialmente pela curiosidade, resolvi conferir o tal manifesto. Este post resume a proposta do manifesto e as discussões que ele motivou.
Motivação

A internet foi concebida como uma forma de compartilhar documentos científicos, que comumente contém referências para outros documentos relacionados. Daí sua natureza baseada em páginas e links.

Hoje a internet abriga muito mais que documentos científicos. A possibilidade de gerar conteúdo dinamicamente abriu as portas para aplicações web de propósito geral. Verdade seja dita: hoje o protocolo HTTP é usado para suportar funcionalidades para as quais definitivamente não foi planejado.

Por este motivo desenvolver para a web sempre foi demasiadamente complexo. Pode-se afirmar que toda evolução do desenvolvimento web se deu no sentido de tornar-se mais parecido com o desenvolvimento desktop - mais simples e natural. Neste sentido, vimos o surgimento de front controllers que "capturam" requisições para páginas que sequer existem, criação de frameworks web baseados em eventos, e uso extensível de Ajax para criação de interfaces mais "desktop-like".

SPI (Single Page Interface) seria o último passo desta jornada. Seria possível ter uma aplicação web rodando inteiramente em uma única página- exatamente como uma aplicação desktop roda em uma única janela principal. Esta abordagem acabaria com uma série problemas que tira o sono de desenvolvedores web: back button, caching, navegação e preenchimento automático de formulários só para citar alguns.

Princípios

A principal idéia por trás de SPI é a substituição do conceito de página pelo conceito de estado. Uma aplicação é composta por um conjunto de estados (primários e secundários) que determinam, entre outras coisas, a interface a ser exibida.

O controle dos estados é feitos através das referências da URL (a parte final, que vem depois do '#'). alterações neste trecho não causam recarga da página.

Ajax é a tecnologia fundamental para SPI - sem ela esta abordagem seria inviável. De fato uma aplicação SPI faz uso intenso de chamadas Ajax para evitar recarga completa da página.

Entre as críticas a SPI, encontramos dificuldades de integração com sistemas de busca e de contabilização de visitas. O manifesto propõe solução para tais problemas na forma de diversos códigos javascrit.
Seguindo o paradigma associado a evolução das aplicações web, esta nova abordagem poderia ser chamada de model 4.

Conclusão

Considero a idéia SPI válida como abordagem alternativa em casos particulares, fundamentalmente que envolvam iterações complexas por parte do usuário - que resultariam em regras de navegação complexas em aplicações baseadas em páginas.

O fato das soluções apresentadas no manifesto constituírem-se majoritariamente de "workarounds" mostra a necessidade de maturação da abordagem.

Apesar do manifesto mostrar a viabilidade técnica da abordagem, é preciso muito mais para ganhar espaço na comunidade: é preciso produtividade. É preciso que surjam frameworks e toolkits que abracem SPI.

Apesar de tudo a idéia é bastante instigante. Seria esse o futuro do desenvolvimento web?

Um comentário:

  1. Hi Geraldo I know you because I've received some visits from your blog. I fully understand the content your blog because I usually travel for holidays to Portugal and I have a good teacher :)

    http://www.publico.pt

    but I'm not proficient enough to write in Portuguese :(

    @Geraldo: é preciso muito mais para ganhar espaço na comunidade: é preciso produtividade. É preciso que surjam frameworks e toolkits que abracem SPI.

    You are in luck, take a look to this tutorial about SPI web sites.

    http://itsnat.sourceforge.net/index.php?_page=support.tutorial.spi_site

    ResponderExcluir