Cairngorm – Parte 2

Na seqüência do primeiro artigo, essa segunda parte discute os desafios do desenvolvimento das RIAs, e foca no primeiro deles: manter o estado no cliente, e discute a solução desses problemas com os patterns VO (ou DTO, Data Transfer Object) e ModelLocator.

O original no qual esse estudo é baseado está disponível do Developer Center.


Cairngorm Store
1. Flex Store
– Aplicação de demonstração
2. airngorm Store
– Reconstruído utilizando o Cairngorm
– Rápido, escalável e de fácil manutenção

The Cairngorm Store: Four Key Challenges
1. Visões de um desenvolvimento de aplicação
– Como solução de problema de negócio
– Sistema que implementa a solução
– Arquitetura técnica para software customizado
– Nível detalhada de implementação das classes
2. Quatro desafios principais de alto nível
– Manter estado (state) no cliente
– Arquitetar a visualização
– Desenvolvimento baseado em requerimentos (FDD, modelo de desenvolvimento ágil)
– Invocar serviços de servidores

Keeping State on the Client
1. Em RIAs, o cliente mantém estados
– Web tradicional era request/response, com uso de cookies, sessão, etc.
2. MVC
– O cliente mantém os dados
– O state é o Model: objetos que têm significado
– Mapas: o object model contém ruas, rotas, referências, postos de gasolina, etc.
3. Sincronização
– Um estado no cliente normalmente reflete o estado em outra ponta (o servidor)
– No desenvolvimento de aplicações server-side, o estado está entre duas camadas: business e integration tier
– No desenvolvimento de aplicações enterprise, o sistema é apresentado através de um middle-tier (ou business tier): manter o estado entre as camadas
– Manter o estado é complicado pois a representação relacional em uma ponta (banco de dados, por exemplo) é diferente da outra, com objetos (Java, por ex).
– Problema de consistência: manter o mesmo dado em dois lugares
– Problemas de concurrency, lock, transactions, rollbacks, etc.
– Desenvolvimento RIA: model do business tier ser igual ao presentation tier
– Basta um Object model consistente!
4. Value Object ou Data Transfer Object Pattern
– Representar “coisas” e seus valores
– Estrutura intercambiável entre as camadas
– Transformação de dados de significados técnicos (RecordSets, ResultSets, Data Sets) em objetos com significados de negócio (pessoas, mapas, etc)
– Coleção de atributos que descreve uma entidade

Keeping a Consistent Object Model Between Flex and Java
1. Tradução automática entre VOs do Flex e do Java
2. XDoclet cria VOs em ActionScript baseados no Java
3. VOs permitem:
– Best practice em representar dados no cliente com significados do object model
– Manter consistência do object model no cliente e no servidor
– Utilizar a capacidade do Flex em traduzir VOs entre o Java e o ActionScript

Binding the Model and View Together
1. R do RIA: Apresentar dados de maneira rica e profunda
2. Databinding
– Mudanças na origem refletem no destino
– Dados e visualização, por exemplo
– Model e View
3. “Responsiveness” à mudanças no Model
4. Dificuldade em variáveis de dados intercambiáveis entre diferentes contextos da aplicação

Enter the Model Locator Pattern
1. Lugar único onde o state é guardado, e Views podem achar os dados
2. Uso do databinding
3. Variáveis estáticas, singleton