Fábio já estou a seguir os teus trabalhos a algum tempo e tenho uma pergunta para te colocar… Eu estou a dar os meu primeiros passos com Flex, mas a minha maior dúvida nestes primeiros passos é a conectividade com a base de dados…o que usar? O único que testei até agora foi o AMFPHP, mas sei que existem outras soluções talvez mais eficazes…
O que aconselhas? SQLite?BlazeDS?LiveCycle?
Recebi hoje este comentário deixado por Eduardo Costa, de Portugal. Ele ilustra bem uma dúvida que, mesmo após muito tempo de Flex no mercado e sua crescente adoção por profissionais e empresas, ainda paira pelas cabeças de muitas pessoas.
Então vou procurar saná-la. Venho vivendo Flex diariamente há mais de 2 anos e apesar de estar longe de saber tudo sobre o framework, assumo que sei o suficiente para contribuir com meus centavos.
O Flex é um framework e é opensource. Você não precisa do Flex (agora Flash) Builder para desenvolver aplicações. O framework possui uma ferramenta de linha de comando que é utilizada para compilar o swf a partir de seus arquivos .mxml e .as. Para mais informações consulte este link.
Apesar disso, não é comum encontrar desenvolvedores codificando no bloco de notas (ou o que o valha) e compilando o código via linha de comando. Simplesmente não é produtivo, se comparado com todos os recurso do Flash Builder. É nele que você encontrará um ambiente completo de desenvolvimento, com os componentes do framework listados de forma que torna possível arrastar e soltar, para montar a interface. A compilação se dá apenas pressionando um botão e é possível configurar o compilador, passando parâmetros tais como background padrão, serviços de conexão com servidor web, arquivos de idiomas entre outros.
Muitas pessoas ainda confundem o Flex Builder com o Flex Framework e por isso a mudança do nome da ferramenta de desenvolvimento gerou tanta polêmica, quando passou de Flex Builder para Flash Builder. Essa mudança foi coerente, pois o Flex Builder vinha sendo utilizado pelos desenvolvedores Flash como ambiente de desenvolvimento, devido aos inúmeros recursos que tornam a codificação rápida e coniável, recursos não presentes em nenhuma versão do Flash (Adobe Flash), mesmo na nova versão CS4. Assim, o nome Flash Builder tráz o software mais para perto da Plataforma Flash, que envolve animações, sistemas e videos.
A grande dúvida de quem está chegando agora no mundo Flex é sobre o acesso a dados. Fica aqui um esclarecimento: o Flex não acessa diretamente qualquer banco de dados, apesar de iniciativas isoladas neste sentido. Podemos aqui fazer uma analogia com o HTML, padrão para qualquer sistema web. Da mesma forma que o HTML não acessa qualquer banco de dados, o Flex também não. É necessário um webservice, uma requisição HTTP ou uma linguagem no servidor habilitada a acessar o banco de dados e enviar as informações para a interface. É dessa última que pretendo falar agora.
A Adobe criou um protocolo, que é a forma utilizada pelas máquinas para trocar informações entre si, que permite a serialização de dados vindos do servidor e chegando a interface Flex que reside no cliente (browser do usuário). O protocolo chama-se AMF, que significa Action Message Format e transporta os dados de forma binária sendo muito mais rápido do que qualquer outra forma de tráfego de dados utilizada na internet. Para saber mais, veja este benchmark neste link.
A Adobe possui dois produtos que funcionam como camada intermediária entre o servidor e o cliente, que são o Life Cycle Data Services (LCDS) e é pago e o BlazeDS, que é opensource. Ambos devem ser utilizados com Java. Para outras linguagens, existem diversas soluções no mercado, nenhuma desenvolvida pela Adobe, mas que são muito eficientes e largamente utilizadas. Vejamos:
- PHP - O mais utilizado é o AMFPHP, que teve seu desenvolvimento parado a bastante tempo e que serviu de base para seu sucessor, o ZendAMF, que faz parte do Zend Framework e tem seu desenvolvimento apoiado tanto pela Adobe quanto pela Zend, empresa sinônimo do PHP. Além destes, existe também o WebORB para PHP. Sei da existência de outros, mas me limitarei a estes dois por serem os mais utilizados.
- .NET – o WebORB for .NET, desenvolvido pelos The Midnight Coders é muito bem conceituado. Outra solução que alguns desenvolvedores que conheço utilizam é o FluorineFX e em seu site é possível ver que vai além do protocolo AMF.
- Java - além das soluções proprietárias da Adobe, os Midnight Coders mais uma vez, com a clara intenção de abraçar o mundo do Flash Remoting, possui sua solução para utilização do AMF com Java. Outra opção opensource é o GraniteDS, que segundo o Mario Junior, é a melhor opção de código aberto. Assim, Java conta com 4 boas opções.
- Coldfusion – por ser uma tecnologia de propriedade da Adobe, o Coldfusion se conecta com o Flex nativamente. Apesar disso, os intrépidos Midnight Coders também possuem sua solução: WebORB for Coldfusion.
- Ruby on Rails – são duas as opções para o pessoal do fantástico Rails: RubyAMF e adivinhem? WebORB for Rails
- Python – pyAMF é quem resolve.
Pois bem… procurei listar as tecnologias mais utilizadas para desenvolvimento web. Imagino que existam soluções para outras linguagens, mas estou satisfeito com as listadas acima.
Independente da linguagem utilizada no servidor e a camada AMF escolhida, na lado Flex a a conexão é idêntica, sendo utilizada uma instância da classe Remote Object. Assim, quando você aprender a utilizar essa classe, independente da linguagem que você encontrar no lado do servidor, seu trabalho no Flex será sempre o mesmo. Isso beneficia os desenvolvedores Flex, que podem conseguir contratos apenas para a interface, orientando os desenvolvedores que farão a parte do servidor a expor seus objetos da forma adequada à utilização do AMF.
Quando eu estava aprendendo a desenvolver com Flex, por pura inexperiência, utilizava HTTPService, enviando e recendo as informações por XML. Rapidamente, no entanto, notei que a performance deixava a desejar. Foi quando meu primo fez uma integração do Flex com PHP utilizando AMFPHP e me passou as dicas. Desde então, nunca mais utilizei outra forma de tráfego de dados, a não ser no caso de webservices, o que é uma outra situação e que não cabe neste post. Atualmente estou utilizando o ZendAMF.
Espero não ter chovido no molhado.
Gostaria de deixar uma dica para quem está chegando agora e encantado com o universo Flex: aprenda orientação a objetos, que lhe será útil não apenas com o Actionscript3, mas com qualquer outra linguagem de programção que utiliza o paradigma. Também é muito útil se acostumar a codificar escrevendo diretamente o MXML, que é a linguagem de marcação utilizada no Flex Framework. Seu código ficará muito mais legível e fácil de manter.
Deixo um grande abraço a todos que me apoiam.
Ved
Excelente post meu amigo Ved, porém acrescentaria o FluorineFX no .NET, que é o que o SaintBR utiliza.
Abraços
Igor Musardo
Muito obrigado pelo esclarecimentos!
Show de bola Ved.
Excelente post, parabéns!
Abraços,
Silva Developer
silva.developer@gmail.com
Bom “FAQ” vedovelli. Agora eu tenho que baixar o demo do Flash Builder, quero ver o que mudou da versão 3 para 4.
Grande Vedovelli!
Utilizo o AMFPHP, mas quando tiver um pouco mais de tempo vou ver esse ZendAMF.
Muito bom o post, Sucesso!
Bem, não podia estar melhor …antes de mais o meu muito obrigado! Penso que muita gente ficou esclarecida…
Continua com este bom trabalho que vindo a fazer…
Abraço
Adicione no Java o GraniteDS: http://www.graniteds.org/
Melhor
Então, gostaria de acrescentar uma informação:
- Adicione no Java o GraniteDS: http://www.graniteds.org/, dos open-sources, considero-o melhor que o WebORB for Java.
e agora, discordar de outra
:
“Também é muito útil se acostumar a codificar escrevendo diretamente o MXML …. Seu código ficará muito mais legível e fácil de manter.”
Nao acho… faça bom proveito da herança! Use MXML só para definir layout/posicionamento de telas/componentes e então escreva uma classe AS3 que extends o seu MXML para dar comportamentos/eventos/lógica. Assim sim fica fácil de manter.
Isso é chamado de Code Behind, tem um artigo no Adobe DevNet sobre isso, mas tenho feito de maneira mais “limpa” q o sugerido pelo artigo.
Um abraço.
Show de bola ! To criando o http://www.flex.etc.br. Ainda é “beta” hehe. Mas seu post vai estar lá com certeza!
Olá Ved, eu coloquei seu post no Flex.etc, depois confere lá.
Eu posso colocar mais alguns posts ??
Fábio,
Quanto ao Python, além do PYAMF temos o DjangoAMF (http://djangoamf.sourceforge.jp/index.php?DjangoAMF_en) e o AMFast (http://code.google.com/p/amfast/).
Abraços,
Heronim
PHP Version 5.2.13
amf 1.9
quando publico no dominio.com nao encontra o getway.php o path esta correto e se eu entrar no geway.php funciona normalmente…. Mas com o flex chamando o remote object nao funciona. O que pode ser ?
Você pode atualizar este post, fornecendo um link para WebORB para Java? Aqui está o link: WebORB http://www.themidnightcoders.com/products/weborb-… para Java é um substituto para o BlazeDS e LCDS, com várias vantagens. O ambiente de desenvolvimento para Java fornece WebORB é muito mais fácil eo produto inclui o gerenciamento de dados e streaming media recursos out-of-the-box. O produto está disponível, tanto na comunidade e as edições Enterprise e desenvolvedores podem desenvolver com o produto de graça. O mesmo vale para WebORB para. NET. WebORB para o PHP é open source e gratuito.