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
