Arian Pasquali

making it run

Posts Tagged ‘marshallplan

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 at 5:18 pm

Publicado em max2008

Tagged with ,

How Large is a Large Application?

leave a comment »

“Se você pode me dizer o quão grande é sua aplicação, então ela não é tão grande assim.”
Alex Hurair

Em tom de piada Alex começou sua palestra com assim. Pode parecer pragmático demais, mas se você pensar cuidadosamente você acaba concordando com ele. Problemas de performance todos nós enfrentamos, mas escalabilidade é um assunto muito mais delicado do que apenas performance.

Quando se trata de aplicações desse tipo em Flex, ela deve sofrer de pelos menos um dos dois seguintes problemas

  • Tempo de download demorado
  • Out of memory no navegador enquanto executa a aplicação

A primeira solução para download demorado de uma aplicação é quebrar a aplicação em vários SWFs. No Flex conseguimos fazer isso graças a Modules.

Modules para aplicações pesadas

Para entender exatamente a razão de usar módulos precisamos ter em mente que um swf Flex possui dois frames:

  1. Preloader frame
  2. Application frame

A aplicação toda precisa ser baixada antes que ela seja iniciada. Logicamente, quanto menos código no frame 2 significa que a aplicação vai iniciar mais rápido e vai consumir menos memória.

lição número um:

  1. Pegue todo o código que não é necessário no startup e coloque dentro de um  Module.

Limitações dos Modules

  • Você não pode referenciar diretamente uma classe de um módulo a partir de sua Application, você deve usar interfaces compartilhadas.
  • Modules e Application devem ser compiladas com a mesma versão do Flex

Novidades sobre Modules no Flash Player 10

  • Modules agora podem ser removidos da memória.

Ok, temos Modules para diminuir o tempo de download da aplicação. Porém, nem tudo são flores na vida de Joseph Climber, a partir daí a coisa pode complicar ainda mais. Alguns SWFs podem possuir dependência de alguma versão do Flex e por alguma razão não podem ser atualizadas ou ainda para piorar os Modules podem ser criados por diferentes equipes que possuem prazos diferentes entre si.

Continuarei nesse assunto nos próximos posts.

Written by arianpasquali

novembro 18, 2008 at 4:51 pm

Publicado em max2008

Tagged with , ,

Marshall Plan

with one comment

Em 1947 o secretário de estado americano George C. Marshall anunciou um plano para ajudar a reconstruir a Europa devastada pela Segunda Guerra Mundial. Hoje o problema não é tão trágico, mas a Adobe também está diante de um belo desafio com o Flex.

Com os anos o Flex foi amadurecendo e ganhando popularidade, foi sendo adotado em grandes corporações e já é peça fundamental em várias aplicações de larga escala pelo mundo todo. Naturalmente o tempo traz novos desafios para solucionar. Como lidar com tantas versões do SDK? Como manter uma aplicação que hoje possui centenas de módulos, sendo que cada um pode ter sido desenvolvido em uma fase diferente da maturidade do Flex, com versões do diferentes do SDK?

Sabemos que não é viável em algumas situações migrar tudo para a nova versão de uma plataforma, mas nem por isso queremos nos privar de usar os últimos recursos que as versões mais atualizadas oferecem.

Situação similar a essa é o desafio de ter dentro de um mesmo Flash Player várias máquinas virtuais que permitem interpretar diferentes versões de ActionScript. Temos ActionScript 1.0, 2.0 e 3.0. Tudo deve funcionar perfeitamente para não quebrar aplicações desenvolvidas ao longo de todos esses anos. Caso contrário pararia a internet, pois todo o conteúdo baseado em Flash existente hoje não surgiu da noite para o dia, são anos e anos de desenvolvimento de conteúdo e evolução da plataforma.

O Marshall Plan da Adobe é um projeto que de certa forma propôs uma reforma no framework flex para tornar possível que em uma mesma aplicação Flex rode mini-aplicações construídas sob qualquer versão do Flex SDK a partir da versão 3.2 (lançada dia 19 nov durante o MAX 2008, clique aqui para baixar).

Esse foi um dos assuntos da palestra do engenheiro Alex Harui no MAX deste ano. O foco da palestra foi discutir os problemas enfrentados em grandes aplicações Flex, as questões abordadas foram tamanho elevado dos arquivos swf, uso de memória e versionamento. Alex apresenta as soluções e as melhores práticas indicadas pela Adobe pra resolver essas questões.

Nos próximos posts vou detalhar melhor cada um desses problemas e o que fazer para enfrentá-los com as armas que o Flex oferece.

Written by arianpasquali

novembro 18, 2008 at 4:01 pm

Publicado em max2008

Tagged with ,