1º WorkShop PHPMS – PHP
         Extremo




     patrocínio:
Aplicações com mais do que um
rostinho bonito - PHP + Adobe Flex



           Cauan Cabral
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;
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.
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.
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.
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;
AMF – a língua natural




   Fonte: http://www.jamesward.com/census/
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.
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.
AMF e PHP – fluxo de trabalho

   Cliente                                      Servidor

 navegador/                                   Apache / IIS
 flashplayer
               Requisição ou envio de dados




                         Resposta




                       Comunicação
                       Utilizando AMF
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.
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.
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.
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.
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;
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);
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);
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.
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
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.
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.
Dúvidas? Contribuições?

Agora é hora de discutir...
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.
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/
Agradecimentos

A todos os presentes;
Aos organizadores;
Aos patrocinadores;
Comunidade CakePHP, em especial aos de
 língua portuguesa;
Desenvolvedores do AMFPHP e AMFEXT;
Contato...

Email: cauan@radig.com.br
Blog: http://geek.cauancabral.net
MSN: cauanc@gmail.com
Gtalk: cauanc@gmail.com
Twitter: cauancabral
IRC @ Freenode: CauanCabral
http://linkedin.com/in/cauancabral
Apoiaram e patrocinaram este
          evento

PHP + Flex

  • 1.
    1º WorkShop PHPMS– PHP Extremo patrocínio:
  • 2.
    Aplicações com maisdo 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 – umaalternativa 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 – umaalternativa 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 – alí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 – alí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 – cozinhandoos 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 – cozinhandoos 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 areceita 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 areceita 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.
  • 23.
  • 24.
    Considerações Flex é umaalternativa 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 trabalhacom 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 ospresentes; Aos organizadores; Aos patrocinadores; Comunidade CakePHP, em especial aos de língua portuguesa; Desenvolvedores do AMFPHP e AMFEXT;
  • 27.
    Contato... Email: cauan@radig.com.br Blog: http://geek.cauancabral.net MSN:cauanc@gmail.com Gtalk: cauanc@gmail.com Twitter: cauancabral IRC @ Freenode: CauanCabral http://linkedin.com/in/cauancabral
  • 28.