Arian Pasquali

making it run

Marshall Plan – Sub-applications, não modules

with 2 comments

Como já comentado anteriormente, eventualmente, pode ser que não seja possível manter todos os SWF sob a mesma versão do Flex.

Para resolver esse problema a Adobe entendeu que apenas Modules não resolveria o problema. Para isso criou o projeto Marshall Plan, que resultou em mudanças significativas no Flex 3.2.
A última versão do SDK do Flex 3.2 possui permitirá uma Application utilizar Sub-Applications compiladas em diferentes versões do Flex.

Atualmente o Flex 3.2 é o ponto de partida, esse recurso por enquanto ainda não suporta as versões anteriores 3.1, 3.0, ou 2.x, portanto você vai precisar migrar para 3.2 para usar esses recursos hoje.
Se sua aplicação já é compilada em Flex 3.2, aplicações compiladas em Flex 4, 5, etc poderão utilizar sua aplicação.

Refatorar o seu código vai dar trabalho, isso você pode ter certeza. Separar módulos e sub-applications em diferentes domínios de aplicação e ainda permitir comunicação entre eles dá trabalho. Esse refactoring para permitir que os SWFs de diferentes domínios continuem conversando entre si foi cunhado como ‘marshalling’.

Lição de história: o Plano Marshal original foi uma forma que os paises europeus encontraram para se reerguer em paz. O Marshall Plan da Adobe é uma maneira de fazer com que diferentes versões do Flex conversem em paz.

Como isso funciona?

Cada sub-application é carregada em um ApplicationDomain independente, possue seu próprio StyleManager por exemplo, o que significa que Application e Sub-Applications não compartilham nem estilos.
Todos os singletons do Flex Framework precisaram seu refatorados para suportar o Marshall Plan, portanto provavelmente você terá retrabalhos no seu código que usa Flex Managers como DragDrop, PopUps, ToolTips e Cursors.

Singletons não são mais tão “Singletons” assim

sub-applications

Exemplo:

MySubApp.mxml
ToolTipManager.toolTipDelay = 1000;

MyApp.mxml
trace(ToolTipManager.toolTipDelay); // 500 (default) not 1000

MySubApp’s ToolTipManager não é o mesmo objeto que MyApp’s ToolTipManager

Limitações do Marshall Plan

  • Styles não são compartilhados. Cada aplicação tem seu próprio estilo, nem ao mesmo herda estilos da Application principal. Estilo de uma sub-application não interfere no estilo da application principal e vice-versa.
  • ResourcesBundles também não são compartilhados da mesma forma que Styles. Cada sub-application deve carregar seu próprio ResourcesBundle.
  • HistoryManager apenas para a Application principal.
  • Use systemManager.getSandboxRoot() no lugar de systemManager para listening de eventos do Mouse e do Keyboard.

Utilizar esse recurso pode dar trabalho. Existem várias questões de segurança envolvidas nesse processo. Pretendo comentar sobre elas nos próximos posts.

Written by arianpasquali

novembro 18, 2008 às 5:18 pm

Publicado em max2008

Tagged with ,

2 Respostas

Subscribe to comments with RSS.

  1. No Flex utilizando modules é possível obter o mesmo resultado como no Java, que temos para cada classe um arquivo compilado e no final podemos gerar um .war, no Flex é possível pegar um conjunto de janelas e compila-las em um .swf e depois cria-las a partir da aplicação principal? Faço esta pergunta, pois na internet a forma que eles utilizam modules é bem diferente dos padrões convencionais.

    Renan Fretta

    abril 16, 2009 at 4:53 pm

    • Normalmente Modules são usados para dividir casos de usos, por exemplo um cadastro de cliente. Particularmente não acho boa prática misturar casos de uso em um mesmo Module, pois o princípio é justamente minimizar o tempo de download e espera fazendo o cliente baixar as funcionalidades sob demanda.
      Yakov Fain inclusive é mais radical ainda, para que o aplicativo Flex seja carregado o mais rápido possível ele sugere criar a Home diretamente em Flash e a partir daí chamar os Modules feitos em Flex. http://flexblog.faratasystems.com/?p=410

      arianpasquali

      maio 6, 2009 at 11:19 pm


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: