È uma dúvida comum de como construir aplicações modulares em Flex que mantenha o tamanho do arquivo compilado pequeno.
O tamanho do arquivo compilado (.swf) do flex ou flash sempre foi a grande preocupação de quem desenvolve aplicações com vários componentes. Isso porque cada componente que se coloca no arquivo significa mais alguns kb no arquivo final, em uma aplicação com um DataGrid, Panel etc chega fácil a 400kb, e isso só piora quando se constrói aplicações com várias telas.
É possível reduzir o tamanho do arquivo SWF da sua aplicação externalizando recursos compartilhados. Estes recursos compartilhados ficam disponíveis para serem usados por inúmeras aplicações em runtime, e são descarregados no cliente somente uma vez. Esta técnica de compartilhar recursos entre aplicações já existe desde a versão 2004 no Macromedia Flash.
Usando RSLs várias aplicações pode compartilhar de um mesmo núcleo (swf) comum de componentes ou de classes, este núcleo comum precisa ser transferido para a maquina do cliente somente uma vez.
As aplicações que compartilham dos recursos do RSL usam o mesmo RSL cacheado desde que estejam no mesmo domínio.
Os benefícios aumentam com o número das aplicações que compartilham os mesmos RSLs e diminuem se poucas aplicações ou telas fizerem uso do recurso.
Neste exemplo, as aplicações e bibliotecas fazem parte do mesmo arquivo .swf forçando o flash player a fazer o download de 250 KB para cada aplicação.
Com a biblioteca compilada em arquivo separado somente a primeira aplicação deve carregar os 150 KB (o tamanho da biblioteca comum as duas aplicações). Para visualizar a segunda aplicação o flash player precisa fazer o download de apenas 100kb que é o tamanho da segunda aplicação sem a biblioteca.No Flex é possível usar RSL criando um Flex Library Project no FlexBuilder ou criando telas que estendam a classe mxmodules.
As duas formas usam a técnica de que a primeira aplicação carrega a biblioteca e as demais fazem uso.
Vou mostrar aqui como criar uma biblioteca compartilhada (RSL) para ser consumida em runtime usando o FlexBuilder.Comece criando um um Flex Library Project.
No FlexBuilder acesse o menu File >> New >> e selecione Flex Library Project.
Preencha o campo Project name e clique em Finish.
Pronto, com isso o Flex Library Project foi criado.
Dentro do Flex Library Project deve ser criado as classes que queremos compartilhar entre aplicações, como componentes customizados classes customizadas ou as classes dos controles do flex que usamos na maioria das aplicações DataGrid, Combobox etc.
Vamos criar um MXML component para servir como repositor de controles que queremos compartilhar como DataGrid, Combobox, List entre outros.
No Flex builder acesse o menu File >> New >> e selecione MXML Component.
Selecione o projeto que estamos trabalhando, preencha o campo Filename, selecione na lista Based on a classe que irá se basear o componente que esta sendo criado.
Escolhi uma classe que seja um container (Canvas) mas em tese poderia ser qualquer uma.
Click em Finish.
Observe a estrutura do projeto:

Por ser um Flex Library Project o Flex Buider compilou autmoticamente as classe librayComponents.mxml e gerou um arquivo SWC dentro da pasta bin.
O arquivo SWC é um arquivo do tipo ZIP, que contém o arquivo swf que será extraído pelo FlexBuider para servir como biblioteca em outros projetos.
Você pode abrir arquivos SWC com qualquer softwares que descompactam arquivos do tipo ZIP.

Arquivo SWC aberto com o winzip.
Observe o tamanho do arquivo library.swf.
Gigantesco para um arquivo que contém apenas as classes:
- Button
- HScrollBar
- VScrollBar
- Application
- Container
- UIComponent
- Zoom
- State
- Transition
Estas classes estão explicitas no swf pois o container Canvas faz uso de todas.
O arquivo catalog.xml lista todas as classes que o library.swf possui, é através deste arquivo que aplicação sabe o que vai poder ser consumido em runtime.
be continued…