logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Tutorial Básico Swiz Framework 1.0

Colocado por Janderson Cardoso na(s) categoria(s): Adobe Flex, Flex, Flex 4, Ria’s Geral, Swiz Framework em 02 26th, 2011 | Sem comentários


 Tutorial Básico Swiz Framework 1.0

Bem, estou muito feliz por esse início de ano 100% Flex, seja tirando dúvidas, desenvolvendo ou corrigindo alguns detalhes em aplicações, enfim, é muito bom voltar com o flex na minha carga horária icon biggrin Tutorial Básico Swiz Framework 1.0 #FlexNaVEIA

Bem, nesse início de ano a coisa que mais me perguntaram foi, o swiz vale a pena? tem como fazer um exemplo usando o novo swiz? então resolvi fazer esse tutorial onde tentarei ser o mais básico possível, espero justificar o porque é bom ter o Swiz como uma alternativa de Framework para você usar em suas aplicações Flex.

Embora esteja fazendo esse ABC é bom que todos divulguem os excelentes materias que já foram disponibilizados sobre o assunto como a próprio Wiki do Swiz que é bem completo, esse material do nosso amigo Mario Junior ( Swiz + Modules ) , o material também disponibilizado pelo nosso amigo Erko Bridee ( [Flex & AIR] Swiz Framework + Presentation Model : Exemplo de Projeto ), tem também os que disponibilizei no Flexmania no ano de 2010 ( #flexmania 2010 – disponibilizando código fonte ). Além desses links tem o que criei no curso de Design Patterns ( flexdp ), onde sou o instrutor, fiz um exemplo com flex4 + swiz + presentation model, é baseado nesse modelo um pouco mais simplificado e sem tratar os design patterns que vou fazer esse tutorial para vocês icon wink Tutorial Básico Swiz Framework 1.0 . Let’s go icon biggrin Tutorial Básico Swiz Framework 1.0

Conhecendo o Swiz

Para quem ainda não conhece o swiz framework, ele é um framework para Action Script 3(Portanto usamos no Flex tranquilamente), e como todo bom framework o swiz cuida de algumas partes chatas enquanto nos preocupamos mais com o nosso modelo de negócio. Vou me basear nesses 3 pontos que considero bons motivos para usar o Swiz:

  1. Ajuda no mapeamento de eventos tirando a necessidade de addEventListener para cada Evento disparado, isso tudo com o uso da metadata [EventHandler].
  2. IOC(Inversão de Controle) containers e DI(Injeção de Dependências) sendo feito por metadata [Inject].
  3. Utilitários como o ServiceHelper e ChannelSetHelper que ajuda na comunicação com serviços como WebService ,RemoteObject,etc…

Irei explicar com calma cada item deste citado acima principalmente quando for mostrando o código fonte, porém vale ressaltar que um dos melhores pontos é o baixo acoplamento entre o framework e nossa aplicação, com o bom uso de metadatas o swiz consegue nos auxiliar na construção de uma aplicação e não se meter na forma como organizamos o projeto. O Swiz em suas versões mais novas não é mais um framework MVC como já disse em outro post no blog ( http://www.jandersonfc.com/swiz-nao-e-framework-mvc/ ) , o swiz se concentrou em ser um IOC e DI eficiente que vamos conhecer mais detalhadamente a partir de agora icon smile Tutorial Básico Swiz Framework 1.0

Swiz na prática

Não tem nada melhor para aprender algo do que um exemplo prático, no nosso caso um CRUD, depois do “Hello Word” é a forma mais requisitada que conheço, vamos fazer um cadastro de Contatos , bem simples e só a parte do Flex(e sem se preocupar com o layout no momento)… vamos usar um recurso do próprio Swiz (MockDelegateHelper)para simular as chamadas aos serviços no backend.

Aqui está o projeto rodando

aqui está o código fonte do projeto ( https://github.com/jandersonfc/ContactSwiz )

Para não ficar muito extenso vou postar parte do código que apenas seja útil para entender o Swiz, qualquer dúvida podem usar o comentário a vontade para isso.

Mapeando os eventos

uma das grandes vantagem de usar o Swiz é o suporte que ganhamos para tratar nossos eventos, através do uso de metadatas [EventHandler] podemos deixar nosso código bem desacoplado de quem envia para quem recebe os eventos, vamos ao exemplo do nosso tutorial:

perceba que desacoplamos completamente nosso Presentation Model(ContactPM) do resto da aplicação, ele só dispara um evento e através do swiz nosso Controller(ContactController) será invocada.

Obs. Perceba essa primeira variável,a dispatcher, ela usa um metadata do Swiz [Dispatcher], o framework recomenda trabalhar dessa forma embora usando eventos com bubles também funcione.

Agora vamos analisar esse trecho da nossa Controller :

Quando disparamos o evento ContactEvent.GET_CONTACTS em nosso Presentation Model(ContactPM) o Swiz irá invocar esse método getContacts() do nosso ContactController, isso porque esse método possui um metadata do swiz [EventHandler] com o tipo do evento que ele fica na escuta, nesse caso o event=”ContactEvent.GET_CONTACTS”.  A mágica fuciona tão bem que nossa PM(Presentation Model) e Controller não se conhecem, e é esse o grande ganho que temos em usar esse EventHandler do Swiz, baixo acoplamento o que ajuda e muito na manutenção de nossa aplicação.

Mas toda mágica para funcionar precisa de um truque, e com o Swiz não é diferente, por isso existe o seu arquivo de configuração que mostro abaixo.

para essa mágica funcionar precisamos informar esses atributos eventPackages e viewPackages para o swiz:

  • eventPackages – indica para o swiz onde estão nossos eventos customizados para quando informarmos o tipo no [EventHandler] ele saiba como tratar o mesmo.
  • viewPackages – indica para o swiz onde estão nossas views que disparam os eventos.

Obs. Observe esse

IOC containers e DI

Além da forma como Swiz nos ajuda a trabalhar com os eventos, o que já considero um ganho e tanto, o Swiz possui um excelente IOC container e DI através do metadata [Inject], vamos mais uma vez analisar nosso Controller:
perceba o [Inject] em cima dos atributos do nosso controller, isso quer dizer que quando nossa aplicação for iniciada o swiz vai procurar referências em seu container desse objeto e vai injetá-lo em nosso Controller. Mais uma linda mágica icon biggrin Tutorial Básico Swiz Framework 1.0

Como assim? Como o Swiz vai saber por exemplo que esse contactDelegate que é uma Interface (IContactDelegate) qual implementação(ContactDelegate e ContactDelegateFake) usar na hora de criar a instancia desse objeto? Aí vem mais um truque, o nosso arquivo que citei mais acima, o nosso Beans.mxml, é o que chamamos de IOC container do swiz:

É aí que você vai mapear os objetos que você quer que quando a aplicação for iniciada o swiz crie instancias desses objectos. Bem, ainda não entendeu? O fluxo é esse.

  1. Aplicação inicia.
  2. O Swiz pega esses objetos que você informou nesse container e instancia os mesmos. ex. contactdelegate = new ContactDelegateFake().
  3. O Swiz vai procurar se tem algum [Inject] referenciando esse id informado no container e vai tentar injetar essa instancia que ele criou.

É por isso que em nenhum momento na nossa ContactController foi preciso instanciar o atributo contactDelegate, o swiz cuidou disso pra nós, e isso chamamos de DI, quando a responsabilidade de instanciar suas dependências não é do próprio objeto, no nosso caso a Controller não instancia a suas dependências e sim o Swiz. Uma coisa interessante que gostaria que vocês observassem é que nesse exemplo existe duas implementações do IcontactDelegate, o ContactDelegate e ContactDelegateFake, está ativo no exemplo o Fake mas para mudar para o Delegate que usa o RemoteObject é só mudar de:

para:

ou seja, alteramos no arquivo de configuração do swiz e não precisamos mudar nada no código da nossa aplicação, isso tudo porque na Controller mencionamos apenas uma interface e não a sua implementação que só é definida em tempo de execeção pelo Swiz.

Service Helper

algo muito útil também no swiz é seu serviceHelper que nos auxilia na comunicação com o nosso backend, que na maioria das vezes é feito via RemoteObject, vamos analisar na nossa Controller:

é bem simples o seu uso e de fácil entendimento, ao chamar o método executeServiceCall passando 3 parametros já é
o suficiente para o swiz fazer a requisição no backend ou chamar quem faça(no nosso caso o Delegate que faz isso) e mapear qual função vai tratar o retorno do nosso RemoteOject em caso de sucesso ou em caso de erro.

Conclusão


Espero com esse exemplo e rápida explicação tenha te incentivado a usar o mesmo, e lembre-se, o swiz não impôe uma forma de estruturar sua aplicação, nada impede de você injetar a Controller no Presentation Model e diminiur a quantidade de eventos disparados na aplicação por exemplo, nem de usar MVC ou não em sua arquitetura.

Uma coisa que sempe digo é que antes de usar algo que facilite seu desenvolvimento você precise aprender sem as facilidades, eu tive que aprender como mapear o Hibernate com XML para depois perceber o ganho que tinha com os Annotations, talvez você precise aprender como funciona os eventos em actionScript para perceber o ganho que terá usando os [EventHandler] do Swiz por exemplo icon wink Tutorial Básico Swiz Framework 1.0

O swiz possui mais algumas funcionalidades, mas essas são as básicas para você já começar a usá-lo, então faça bom proveito icon wink Tutorial Básico Swiz Framework 1.0

Cumps.


 Tutorial Básico Swiz Framework 1.0

Similar Posts:

  • Swiz não é mais Framework MVC!
  • TUTORIAL JAVA + FLEX NA PRÁTICA 5/6
  • MVC da teoria para a prática
  • TUTORIAL JAVA + FLEX NA PRÁTICA 3/6
  • TUTORIAL JAVA + FLEX NA PRÁTICA (9) – Atualizando o Swiz



Veja o post original no blog do autor aqui!  

Janderson Cardoso

Escrito por Janderson Cardoso @ http://www.jandersonfc.com/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» #soudevcon e as novidades #soudev
» #soudevcast 1 – O Futuro do Flex e Flash
» Evento – Flash Builder e ColdFusion Builder Tour

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com