Como vocês já devem saber uma das vantagens do Adobe Flex e Adobe AIR é sua portabilidade.
Por exemplo:
Se você criar uma aplicação utilizando o Adobe Flex (para trabalhar através de um navegador) e decidir que essa ficaria melhor no desktop você consegue com um trabalho minimo. (menos de um dia – se você não tiver algo de outro mundo).
A grosso modo a mudança é a tag na aplicação principal, de:
s:Application para s:WindowedApplication.Além de recursos adicionais que o AIR oferece com melhor manipulação com o SO, I/O.No entanto, a parte principal do código é a mesma.
Porém, não é sobre isso que eu gostaria de falar hoje.Vamos um pouco mais embaixo.
E se eu precisar manter uma aplicação que funcione tanto em desktop quanto na web, é possível?
Você deve estar pensando… duplicar código….. tecnologias diferentes (não no caso do Flex)…. com certeza é muito trabalho. Não vale a pena…
Vocês irão mudar de opinião após ler a série de artigos de Todd Prekaski sobre o assunto:
http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase.html
http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase_02.html
http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase_03.html
Com essa arquitetura é possível utilizar o mesmo código fonte para ambas as aplicações..Isso mesmo, não é apenas a reutilização de código através de bibliotecas, e sim toda a estrutura das telas, códigos, funções, eventos, ….
Além disso, é possível definir comportamentos diferentes para ações de acordo com a plataforma que a aplicação está sendo executada.
A arquitetura está organizada da seguinte maneira:
Você precisa de três projetos:
*Projeto que contém a sua aplicação, todas as telas e comportamentos, no entanto esse projeto não contém uma aplicação principal (Application ou WindowedApplication)
*Projeto AIR que contém a aplicação principal do AIR e implementação de uma interface que define comportamentos especificos para a aplicação AIR.
*Projeto Flex que contém a aplicação principal do Flex e implementação de uma interface que define comportamentos especificos para a aplicação Flex.
Prefiro não falar muito.Por isso criei um projeto modelo onde demonstro essa arquitetura (esta muito semelhante ao criado pelo autor dos artigos), qualquer dúvida podem perguntar nos comentários.
O download do projeto pode ser realizado no post em meu blog: