Your SlideShare is downloading. ×
  • Like
  • Save
Spring on Flash Platform
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Spring on Flash Platform

  • 1,518 views
Published

Talk of Spring on Flash Platform, How Spring has influenced on RIA's develop. Framework used IoC and Dependency Injection.

Talk of Spring on Flash Platform, How Spring has influenced on RIA's develop. Framework used IoC and Dependency Injection.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,518
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide












































Transcript

  • 1. [ Spring en Flash Platform ] 1
  • 2. Nosotros Ivan Alvarez Adobe Certi ed Expert Flex & AIR Senior RIA Developer @Ivanhoe email ivan.alvarez@tidyslice.com 2
  • 3. Nosotros Daniel Ramos Adobe Certi ed Instructor Flex & AIR Senior RIA Developer @dannyGeek email daniel.ramos@tidyslice.com 3
  • 4. Descripción Eliminating Enterprise Java Complexity. Made programming painless Become a Superstar IoC: Es un principio abstracto que describe un aspecto de algunos diseños de arquitectura de software en el que se invierte el ujo de control de un sistema en comparación con la programación procedimental . 4
  • 5. Descripción Principio de Hollywood, “No nos llames, nosotros te llamamos” 5
  • 6. Quién inicio IOC ? • Martin Fowler Books • Patterns of Enterprise Application Architecture • Domain Specific Languages • Analysis Patterns: Reusable Object Models 6
  • 7. Por qué IOC ? Te permite ensamblar un sistema a partir de sus partes. In the Java community there's been a rush of lightweight containers that help to assemble components from different projects into a cohesive application. Underlying these containers is a common pattern to how they perform the wiring, a concept they refer under the very generic name of "Inversion of Control". Martin Fowler. ref http://martinfowler.com/articles/injection.html 7
  • 8. Por qué IOC ? Las partes no se preocupan por encontrarse unas a otras In the Java community there's been a rush of lightweight containers that help to assemble components from different projects into a cohesive application. Underlying these containers is a common pattern to how they perform the wiring, a concept they refer under the very generic name of "Inversion of Control". I dig into how this pattern works, under the more specific name of "Dependency Injection" ref http://martinfowler.com/articles/injection.html 8
  • 9. Por qué IOC ? Cualquier parte puede ser fácilmente sustituida 9
  • 10. 10
  • 11. Application Context: • Definición de Beans y sus dependencias • Beans de infraestructura • Definido en uno o más archivos .xml 11
  • 12. • Contenedor IoC (Inversión de Control) usando Inyección de Dependencias. “There are three main styles of dependency injection. The names I'm using for them are Constructor Injection, Setter Injection, and Interface Injection.” Martin Fowler http://martinfowler.com/articles/injection.html#InversionOfControl 12
  • 13. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias 13
  • 14. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias 13
  • 15. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias Bean B 13
  • 16. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias Bean B 13
  • 17. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias Bean A Bean B 13
  • 18. • Spring se encarga de crear los objetos e inyectar sus dependencias. • Constructor o setter injection • Los objetos son creados en el orden correcto basados en sus dependencias Bean A Bean B 13
  • 19. La inyección con Spring vía Constructor: package x.y; public class Foo { public Foo(Bar bar, Baz baz) { // ... } } Configuracion Spring via XML <beans> <bean id="foo" class="x.y.Foo"> <constructor-arg ref="bar"/> <constructor-arg ref="baz"/> </bean> <bean id="bar" class="x.y.Bar"/> <bean id="baz" class="x.y.Baz"/> </beans> 14
  • 20. La inyección con Spring vía setter: class MovieLister... public MovieLister(MovieFinder finder) { this.finder = finder; } class ColonMovieFinder... public ColonMovieFinder(String filename) { this.filename = filename; } Configuracion Spring via XML <beans> <bean id="MovieLister" class="spring.MovieLister"> <property name="finder"> <ref local="MovieFinder"/> </property> </bean> <bean id="MovieFinder" class="spring.ColonMovieFinder"> <property name="filename"> <value>movies1.txt</value> </property> </bean> </beans> 15
  • 21. Flash Platform 16
  • 22. Flash Platform Videos Aplicaciones Ricas Internet Juegos Visualización Datos Experiencias Interactivas Música 17
  • 23. 18
  • 24. Evolución Generación 1.0 Cairngorm Obsoleto Spring AS PureMVC Generación 1.5 Madurez Mate Swiz Estado del arte Generación 2.0 Parsley Robotlegs 19
  • 25. Plataformas Flex & Flash Flex Spring AS Mate PureMVC Swiz Parsley RobotLegs Cairngorm 20
  • 26. Spring AS • Contenedor IOC para AS3. • Flash/Flex/AIR/AS3 puro. • Christophe Herreman. • Prana Framework. 21
  • 27. Contenedor IOC • Fábrica de objetos. • Crea y ensambla objetos. • Centraliza el manejo de dependencias. • Configuración via XML o MXML. 22
  • 28. Contenedor IOC • Object. • Object Factory: Crea y administra los objetos – factory.getObject("myObject"). • Object Definition • Application Context: Fábrica de objetos inteligente. 23
  • 29. Contenedor IOC • Object Scopes – Singleton: Solo una instancia en el contenedor. • Default • factory.getObject(“obj”) == factory.getObject(“obj”) – Prototype • Nueva instancia por cada request. • factory.getObject(“obj”) != 24
  • 30. Con guración • MXML – Compilado como parte de la aplicación. – AppContext.mxml. <Objects> <app:ApplicationModel id=“appModel” /> <app:ApplicationController id=“appController” </Objects> applicationModel=“{appModel}”/> 25
  • 31. Con guración • XML – Configuración externa. – Ejecutada al inicio de la aplicación. <objects> <object id=“appModel” class=“com.domain.app.ApplicationModel”/> <object id=“appController” class=“com.domain.app.ApplicationController” > <property name=“applicationModel” ref=“appModel”/> <objects> 26
  • 32. Con guración • XML Pros – Diálecto mas rico que la configuración en MXML. – Flash/Flex/Air/AS3 – No es necesario recompilar. – Familiar a usuarios de Spring 27
  • 33. Arquitectura MVC • Ninguna en particular. • Realmente es necesaria? • Alternativas: Cairngorm, PureMVC, Mate. 28
  • 34. Arquitectura MVC • Estructura: – Operation API. – Event Bus. – Autowiring. • Recomendaciones – Presentation Model(Fowler). 29
  • 35. Operation API • Comportamiento asíncrono en el Flash Player: • Carga de recursos externos • WebServices • HttpServices • Unifica los APIS: -AsyncToken, Responders, Callbacks, 30
  • 36. Operation API • Problema: obtener un usuario. interface IUserRepository { function getUser(id:int): ??? } • Que debe devolver el método getUser? AsyncToken(Flex/RemoteObject), User, 31
  • 37. Operation API • Spring AS: devolver un IOperation. interface IUserRepository { function getUser(id:int): IOperation } • Una “operacion” es utilizada para denotar un comportamiento asíncrono. • IOperation es una interfaz con métodos “complete” y “error” cuando 32
  • 38. Event Bus • Sistema de publicación/subscripción. • Promueve el bajo acoplamiento. • Eventos standard de Flash(flash.events.Event) 33
  • 39. Event Bus • Subscripción a eventos. – Escuchar todos los eventos. • EventBus.addListener(listener:IEventBusListener); • function onEvent(event:Event):void { } – Escuchar solo ciertos eventos. • EventBus.addEventListener(“anEvent”, handler); • function handler(event:Event):void { } 34
  • 40. Event Bus • Publicación de eventos. – Disparar eventos standart. • EventBus.dispatchEvent(new Event(“someEvent”)); – Dispara eventos personalizados. • class UserEvent extends Event { ...} • EventBus.dispatchEvent(new UserEvent(UserEvent.DELETE, user)); 35
  • 41. Autowiring • Inyección de dependencias via Metadata. • Alambrado por tipo, nombre, constructor, autodección. • Disponible para objetos manejados por el contenedor. 36
  • 42. Autowiring • Anotar una propiedad con [Autowired] class UserController { [Autowired] public var userRepository:IUserRepository; } [Autowired(name=“myObject“, property=“prop”)] 37
  • 43. Resumen • Manejo de dependencias. • Codificar hacia interfaces, bajo acoplamiento. • Filosofía Spring. • Promueva buenas practicas. 38
  • 44. Enlaces • http://www.springactionscript.org/docs/reference/html/ springactionscript.html • http://www.richardlord.net/blog/is-the-flash-platform-waiting-for-a- spring-moment • http://static.springsource.org/spring/docs/3.0.x/spring-framework- reference/html/ • http://martinfowler.com/articles/injection.html • http://www.robotlegs.org/ • http://www.springactionscript.org/ • http://swizframework.org/ • http://www.springsource.org/spring-flex • 39
  • 45. Q &A 40