Apresentação sobre a integração entre PHP e Flex, utilizando CakePHP ocorrida durante o 1º Workshop PHPMS - PHP Extremo.
www.radig.com.br / geek.cauncabral.net / phpms.org
2. Aplicações com mais do que um
rostinho bonito - PHP + Adobe Flex
Cauan Cabral
3. Tópicos
RIA's – isso é novo?
FLEX – uma alternativa atraente;
AMF – a língua natural;
AMF e PHP – opções para todos os gostos;
AMF e PHP – fluxo de trabalho;
CakePHP – cozinhando os serviços;
CakePHP e AMF – é fácil falar essa língua?
Aplicação de exemplo – Pagode;
Adicionando FLEX a receita do bolo;
Participação de todos (dúvidas?);
Considerações;
Agradecimentos;
4. RIA's – isso é novo?
O que é RIA:
RIA – Rich Internet Application
Define uma classe de aplicações que rodam
direto da web e dão enfase na experiência do
usuário.
Exemplo conhecidos: Gmail, Google Docs,
Photoshop.com.
Podemos criar RIA's utilizando javascript, Flash,
Flex, Silverlight, JavaFX,...
RIA não é algo novo.
5. FLEX – uma alternativa atraente
FLEX – SDK open-source para desenvolvimento de
RIA;
Utiliza plataforma Flash;
Utiliza-se duas linguagens: MXML e ActionScript;
MXML é um XML com tags pré-definidas que podem
gerar componentes ou definir ações;
ActionScript é uma linguagem de programação,
semelhante ao JavaScript que permite controle da
aplicação FLEX.
6. FLEX – uma alternativa atraente
Aplicação FLEX é executada no computador do
usuário (client-side);
Alguma forma de comunicação com o servidor
precisa ser estabelecida;
Formas usuais: XML (incluindo XHTML), JSON e
texto puro;
Problema:
XML e texto puro consomem muita banda;
JSON implica em um overhead, é preciso converter tudo
que será enviado para JSON e depois reverter para um
formato nativo.
7. AMF – a língua natural
FLEX possui um formato próprio de
comunicação – Action Message Format
(AMF);
O AMF é um formato binário e nativo dentro
da plataforma Flash/Flex;
8. AMF – a língua natural
Fonte: http://www.jamesward.com/census/
9. AMF e PHP – opções para todos os
gostos
Do lado cliente não precisamos nos
preocupar com o formato AMF – ele é
nativo;
Do lado servidor o PHP ainda não oferece um
suporte padrão para o formato (da forma
que fornece para o JSON e XML);
Existem várias implementações do AMF para
PHP e até mesmo EM PHP.
10. AMF e PHP – opções para todos os
gostos
AMFPHP – Uma das primeiras implementações,
está sem desenvolvimento a mais de 1 ano;
AMFEXT – Extensão escrita em C para fornecer
suporte ao AMF;
Zend_AMF – parte do Zend Framework e fruto de
parceria entre Adobe e Zend. Possui como
principal desenvolvedor o criador do AMFPHP;
WebORB for PHP – solução completa para
comunicação utilizando AMF agregada a serviços
avançados. Possui versão grátis (limitada) e paga.
11. AMF e PHP – fluxo de trabalho
Cliente Servidor
navegador/ Apache / IIS
flashplayer
Requisição ou envio de dados
Resposta
Comunicação
Utilizando AMF
12. AMF e PHP – fluxo de trabalho
Cliente: para apresentar informações ao usuário, faz
requisição dos dados ao servidor;
Servidor: recebe o pedido, identifica o conteúdo da
mensagem utilizando alguma das implementações
do AMF para PHP;
Servidor: retorna o resultado de suas operações,
também em AMF;
Cliente: recebe a resposta e apresenta para o
usuário.
13. AMF e PHP – fluxo de trabalho
O servidor funciona como um webservice;
Recebe requisição → Processa → Retorna
resultado;
Há uma boa separação de código (cliente →
servidor), o que facilita atualizações e
escalabilidade.
14. CakePHP – cozinhando os serviços
CakePHP é um framework PHP popular que
implementa reconhecidos padrões de
desenvolvimento: MVC e ORM;
Possui gerador de código (shell): bake;
Facilita TDD;
Tem comunidade muito ativa e participativa,
além de extensa, inclusive no Brasil.
15. CakePHP – cozinhando os serviços
Separação dos ambientes “cliente” e
“servidor”;
Utilizando o CakePHP construímos uma
aplicação rapidamente;
O objetivo do CakePHP é agilizar o
desenvolvimento dos nossos serviços.
Não há iteração entre o CakePHP e a
aplicação Flex além das requisições e
respostas.
16. CakePHP e AMF – é fácil falar essa
língua?
Assim como o PHP, o CakePHP ainda não
possui uma implementação padrão e nativa
do AMF;
Existem várias formas de se integrar o AMF
ao CakePHP;
17. CakePHP e AMF – é fácil falar essa
língua?
Formas de integração:
AMFPHP – podemos usar a biblioteca AMFPHP
dentro do conceito de “vendors”. Incluímos ela
ao nosso projeto e chamamos sempre que
necessário;
CakeAmfPHP – plugin para CakePHP, um dos
primeiros a serem desenvolvidos, está parado
na versão 0.6 (utiliza AMFPHP);
18. CakePHP e AMF – é fácil falar essa
língua?
Formas de integração:
CakeAMF – plugin que possui como
desenvolvedores parte do CORE Team do
CakePHP (utiliza AMFEXT);
CpAMF – plugin que tem como base o
CakeAmfPHP, possui atualizações constantes
(utiliza AMFEXT ou AMFPHP);
FlexibleCake – controller que intercepta
chamadas e retorna conteúdo AMF (utiliza
Zend_AMF);
19. Aplicação de Exemplo – Pagode
O que é o Pagode:
Aplicação simples para controle das finanças
pessoais;
A aplicação do exemplo é um esboço de solução,
apenas para demonstrar a iteração do PHP +
Flex;
O Pagode é um projeto idealizado pelo PHPMS.
20. Aplicação de Exemplo – Pagode
Criando a aplicação utilizando o CakePHP;
Precisamos apenas definir o banco de dados
de nossa aplicação;
Pausa nos slides para a construção da
aplicação com o CakePHP.....
Para ver o fonte da aplicação, faça um
checkout ou export do repositório:
http://svn.radig.com.br/pagode
21. Adicionando Flex a receita do bolo
Utilizaremos:
AMFEXT;
CakeAMF para integrar o AMFEXT ao CakePHP.
Idéia:
O plugin CakeAMF irá interceptar as requisições
e devolver o resultado em AMF.
22. Adicionando Flex a receita do bolo
Construindo interface da aplicação: um pouco
de MXML e AS3.
Definindo nosso gateway que passará os
dados para a aplicação Flex.
Visualizando o resultado.
24. Considerações
Flex é uma alternativa atraente para criação de
interfaces de sistemas:
É gratuito (o SDK);
Sua API gráfica é muito boa – vide o flash player;
Capacidade de se conectar através de diferentes
tipos de dados (AMF, XML, JSON, …)
Unindo a facilidade e poder de “fogo” do Flex
removemos as amarras das sandbox para javascript
e incompatibilidade de renderização entre browser do
html e css.
25. Bônus
Para quem trabalha com CakePHP:
Está para ser lançado, provavelmente nesta
segunda-feira (13/07/2009), a versão 1.0 do
FAKE;
FAKE é um framework MVC para ActionScript3,
que segue as convenções do CakePHP,
tornando mais fácil se adaptar a esta
linguagem.
http://code.google.com/p/fake-as3/
26. Agradecimentos
A todos os presentes;
Aos organizadores;
Aos patrocinadores;
Comunidade CakePHP, em especial aos de
língua portuguesa;
Desenvolvedores do AMFPHP e AMFEXT;