DClick

Flex e o MVC…


O Cairngorm é o carro chefe dos frameworks para a plataforma Flex. Há quem diga que é o framework que todo desenvolvedor flex deve conhecer. E de fato o é. Ele é simples e intuitivo, e é também suportado pela Adobe. Por todos esses motivos é o mais utilizado no mercado. Bom é que ele não é o único.

Dentre os frameworks para a plataforma Flex em desenvolvimento atualmente, um deles vem se tornando cada vez mais popular. Me refiro ao PureMVC, visto ter sido citado como “vencedor” em uma comparação de frameworks (ao todo, 9) para o Flex e desde então só tem aumentado seu número de interessados.

Antes de iniciar a exposição do framework em questão, em linhas gerais, é necessário entender o que é um Framework de Aplicação. Assisti a exposição citada logo acima e achei-a clara, precisa e útil no que concerne a definição de um Application Framework. Recomendo a visão desta apresentação com atenção mais precisa a esta parte. Reproduzo agora em um parágrafo a síntese do que assimilei para que não percamos o desenrolar do raciocínio.

Um Application Framework(Servidor de Aplicação) pode ser dividido em duas metades. A parte Prática e a parte Metodológica. A parte prática pode ser definida como as classes e padrões que irão compo-lo. A parte Metodológica é a parte do como fazer, como usar. Esta parte, muitas vezes chamada de boas práticas, pode ser entendida como a ideologia de utilização dos patterns de um determinado framework. É a vontade constante de manter tudo desacoplado e coeso. É aquilo que nos baseamos na hora de decidir se é melhor criar um Command para executar determinada função ou disparar um evento para um Manager definido no Model que executará uma função específica de uma View. Enfim, a junção destas duas metades é chamada de Application Framework. Capiche?

O PureMVC:

Model
View
Controller
Façade
Mediator
Command
Proxy
Notification
Observer

Diferenças primariamente percebidas entre o PureMVC e o Cairngorm:

A estrutura meta-padronizada Model-View-Controller do PureMVC é pouco similar ao Cairngorm. Diferentemente deste, nós não desenvolvemos classes do tipo Model, View, ou Controller. Estas classes já estão implementadas no PureMVC de maneira que ficam essencialmente “escondidas”. Utilizamos o MVC implementando Mediators, Commands e Proxys. Estes são registrados nas classes Singleton: View, Controller e Model respectivamente. Trocando em miúdos, Mediator = View, Command = Controller e Proxy = Model.

O registro nas Entidades principais citadas logo acima acontece da seguinte forma. As classes Model, View e Controller são instanciadas como Singleton dentro da Classe Facade, de maneira que o Facade, que também é Singleton, disponibiliza métodos que tem a função de registrar um Mediator na View, um Command no Controller e um Proxy no Model, tudo por composição. Uma vez instanciado o Facade, a estrutura MVC já está criada e pronta para uso. Sim, o PureMVC é lindo. Brincadeiras a parte, imagino que se tudo está claro até agora, é fácil concluir que todo o trabalho de implementação de uma aplicação desenvolvida com o PureMVC vai ser feita dentro de Mediators, Views e Commands.

Ok, mas como esses “caras” se comunicam??

Diferentemente do Cairngorm que usa uma estrutura de eventos (CairngormEvent) o PureMVC utiliza o padrão Notification. Uma notificação pode ser disparada de um Mediator, por exemplo, e ser “escutada” em um ou mais Commands e vice versa. A estrutura do padrão Notification, isto é, a forma como, por exemplo, um Mediator pode escutar uma notificação de um Proxy, está implementada internamente no framework, através do padrão Observer, ficando longe da visão do desenvolvedor. Apesar do PureMVC ser mais complexo e com uma curva de aprendizado maior do que a curva de aprendizado do Cairngorm a estrutura do padrão Notification, isto é, a forma como um Mediator pode escutar uma notificação de um Proxy por exemplo, está implementada internamente no framework ficando longe da visão do desenvolvedor. Isto faz o nosso framework em questão ser simples de implementar mas sem perder a robustez.

Após esta exposição superficial, é possível concluir que, por agrupar mais patterns que o Cairngorm, o PureMVC é mais complexo. Apesar da complexidade ficar “escondida” do desenvolvedor, é claro que é necessário, num primeiro momento, entende-la. Desta forma, a curva de aprendizado se torna maior. É melhor que o Cairngorm? Pode ser. Acredito que este framework irá dar bons frutos em projetos grandes no futuro, mas assim como o Cairngorm, o PureMVC é um Application Framework e por esse motivo sofre dos males que todos os Applications Frameworks sofrem: Se não utilizado com uma METODOLOGIA bem definida, isto é, com a vontade constante de manter tudo coeso e desacoplado, pode abrir espaço para problemas de implementação.

Por Marcos Arruda em 14/March/2008 | Comentar | Trackback


No Translations

3 comentários para “Flex e o MVC…”


Estamos usando o PureMVC há algum tempo em vários projetos e percebemos que ele realmente potencializa o crescimento e a manutenibilidade.
A flexibilidade do framework permite utilizar algumas práticas do Cairngorm (Delegates e ServiceLocator) em conjunto com o PureMVC, facilitando a migração de sistemas legados em Cairngorm.
Outro ponto importante é o suporte a ‘MultiCore’, permitindo módulos e componentes rodarem na mesma VM sem colisão de namespace.

[]s


Olá! A frase mais importante do post é “Se não utilizado com uma METODOLOGIA bem definida”… ou seja, não use frameworks se você nao sabe usar frameworks… é um tiro de bazuca em uma mosca (sendo que você vai errar a mosca !!)

Não comece a utilizar o framework sem pelo menos entendê-lo muito bem e principalmente, sem treinar. Se decidir usá-lo, faça um “projeto teste Agenda Telefonica” antes de tudo. Entenda os conceitos, o que está acontecendo por baixo dos panos… Tente simular problemas (e resolvê-los, claro..)…

Faça também a pergunta: “Eu preciso de um framework ?” se você pensar 2 segundos antes de dar a resposta… siginfica que não precisa! Se o projeto é de médio ou pequeno porte, o uso de um framework no lado do cliente talvez não seja tão necessário..

Abraços Pessoal


O principal problema é achar que o Framework sozinho é a sua salvação quando, na realidade, eles se tratam de excelentes pontos de partida.

Adicionar comentário

(requerido)
(requerido, não será publicado)