Nas poucas aplicações em flex que fiz, utilizei componentes para fazer as telas, ou módulos.
O problema de se utilizar componentes é que o swf fica muuuito grande.
Se utilizar módulos, tem aquele problema de memory leaks.
Se isso já ocorre em aplicações de pequeno porte, imagina em aplicações de médio e grande porte, como por exemplo um ERP !!!
A aplicação só vai ter um tamanho grande, caso haja um número excessivo de imagens/fontes embedded. Se for apenas classes AS/MXML, você vai precisar de um bom tempo para conseguir fazer isso chegar a 3mb.
Imagens @Embed deixa maior sim, porque é ‘colado’ no swf. Agora, vários fontes eu achei que não implicaria (até uso vários fontes pra fazer mas componentes genéricos).
Você pode dar uma olhada em Runtime-shared-libraries (RSL) que diminui o tamanho final do swf. Nunca usei, mas o propósito dele é esse mesmo. Uma ‘googlada’ já vai dar no livedocs da Adobe (eu espero :p).
Me surgiu um ‘click’ na cabeça quando falei que usava vários fontes por causa de componentes genéricos. Nunca usei modules, só ouvi falar… Mas é com swc que eles trabalham? Parecido com ‘arrastar’ alguma lib pro projeto e usar ela (se for swc) também? Essa parte de diminuir o tamanho de aplicações em swf parece ser bastante delicada… As vezes acho que rola certa desvantagem em usar um swf do tamanho do mundo… Seria melhor usar algo mais básico (apesar de que me parece ser muito mais simples o desenvolvimento com o Flex).
De qualquer forma, acho que se for uma rede intranet fica tudo mais fácil, pois o download do swf vem bem mais rápido. Estou errado?
Na verdade o módulo é como se fosse um outro aplicattion, vc carrega ele apenas quando for usá-lo, através de um componente, o moduleLoader.O problema de usar módulos é que o Garbagge Colector do Flash Player não descarrega esse módulo da memória, e o consumo da memória aumenta a cada módulo que vc abre.
Com certeza é bem mais rápido, mas se não for intranet fica bem mais lento, dependendo da internet do cliente, é claro.
Vou dar uma olhada
A minha preocupação é começar um projeto fazendo as telas em componentes, e depois de um tempo o swf ficar muuito grande, e eu ter que mudar a estrutura dele. Ou então fazer as telas em módulos e depois de um tempo, começar a dar Memory Leaks, e eu ter que mudar a estrutura dele. Se fosse um projeto que depois de pronto fosse entregue e não teria que mexer mais, tudo bem, porque eu saberia o quantidade de telas e tal, mas e se fosse um projeto que teria várias atualizações, não tem como saber a quantidade de telas.
A minha preocupação é começar um projeto fazendo as telas em componentes, e depois de um tempo o swf ficar muuito grande, e eu ter que mudar a estrutura dele. Ou então fazer as telas em módulos e depois de um tempo, começar a dar Memory Leaks, e eu ter que mudar a estrutura dele. Se fosse um projeto que depois de pronto fosse entregue e não teria que mexer mais, tudo bem, porque eu saberia o quantidade de telas e tal, mas e se fosse um projeto que teria várias atualizações, não tem como saber a quantidade de telas.
O grande problema do Flex são os ícones de botão. Na verdade.
Todos eles vão como embed. Logo, não tem como diminuir. Trabalho com uma aplicação que está com umas 250 entidades e está em 5mb. Usando RSL. RSL é o melhor caminho. Módulos é uma porcaria.
Realmente o que aumenta o tamanho da aplicação são os embed de fontes (principalmente, use no máximo uma padrão e uma versão bold dessa, se precisar de uma letra especial faça embed apenas daquela letra e não de todas daquela fonte exemplos no site da adobe… ) e imagens.
O resto tem um tamanho padrão do framework que pode fica no cache do Flash Player, cerca de 400kb.
Fazendo release build já tira + uns 200kb
Fica só os embed mesmo e caso você acha que tá ultrapassando muito pode usar um decompilador e ver as imagens menos usadas para serem carregadas em tempo de execução (tem exemplos na internet de algumas talvez gambiarras? de como carregar as imagens em botões, linkbutton, image, … sem embed)