SlideShare una empresa de Scribd logo
1 de 45
[ Spring en Flash Platform ]




                           1
Nosotros



           Ivan Alvarez
            Adobe Certi ed Expert Flex & AIR
            Senior RIA Developer


           @Ivanhoe

           email
           ivan.alvarez@tidyslice.com




                                               2
Nosotros



           Daniel Ramos
            Adobe Certi ed Instructor Flex & AIR
            Senior RIA Developer


           @dannyGeek

           email
           daniel.ramos@tidyslice.com




                                                   3
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
Descripción




      Principio de Hollywood, “No nos llames, nosotros te
      llamamos”




                                                            5
Quién inicio IOC ?

• Martin Fowler
  Books
• Patterns of Enterprise Application Architecture
• Domain Specific Languages
• Analysis Patterns: Reusable Object Models




                                                    6
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
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
Por qué IOC ?




      Cualquier parte puede ser fácilmente sustituida




                                                        9
10
Application Context:

    •   Definición de Beans y sus dependencias

    •   Beans de infraestructura

    •   Definido en uno o más archivos .xml




                                                11
•      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
•   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
•   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
•   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
•   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
•   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
•   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
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
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
Flash Platform




                 16
Flash Platform
        Videos          Aplicaciones Ricas Internet   Juegos




  Visualización Datos    Experiencias Interactivas    Música




                                                           17
18
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
Plataformas


      Flex & Flash   Flex
      Spring AS      Mate
      PureMVC        Swiz
      Parsley
      RobotLegs
      Cairngorm




                            20
Spring AS

• Contenedor IOC para AS3.

• Flash/Flex/AIR/AS3 puro.

• Christophe Herreman.

• Prana Framework.

                             21
Contenedor IOC

• Fábrica de objetos.

• Crea y ensambla objetos.

• Centraliza el manejo de dependencias.

• Configuración via XML o MXML.

                                    22
Contenedor IOC
• Object.

• Object Factory: Crea y administra los
  objetos
 – factory.getObject("myObject").


• Object Definition

• Application Context: Fábrica de objetos
  inteligente.
                                      23
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
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
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
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
Arquitectura MVC

• Ninguna en particular.

• Realmente es necesaria?

• Alternativas: Cairngorm, PureMVC, Mate.




                                    28
Arquitectura MVC
• Estructura:
 – Operation API.
 – Event Bus.
 – Autowiring.



• Recomendaciones
 – Presentation Model(Fowler).



                                 29
Operation API

• Comportamiento asíncrono en el Flash
  Player:
   • Carga de recursos externos
   • WebServices
   • HttpServices

• Unifica los APIS:
    -AsyncToken, Responders, Callbacks,
                                   30
Operation API
• Problema: obtener un usuario.


      interface IUserRepository {
                       function getUser(id:int): ???
      }




• Que debe devolver el método getUser?
  AsyncToken(Flex/RemoteObject), User,
                                                       31
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
Event Bus

• Sistema de publicación/subscripción.

• Promueve el bajo acoplamiento.

• Eventos standard de
  Flash(flash.events.Event)



                                    33
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
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
Autowiring
• Inyección de dependencias via Metadata.

• Alambrado por tipo, nombre,
  constructor, autodección.

• Disponible para objetos manejados por
  el contenedor.



                                    36
Autowiring
• Anotar una propiedad con [Autowired]


      class UserController
      {
         [Autowired]
         public var userRepository:IUserRepository;
      }

      [Autowired(name=“myObject“,
      property=“prop”)]



                                                      37
Resumen

• Manejo de dependencias.

• Codificar hacia interfaces, bajo
  acoplamiento.

• Filosofía Spring.

• Promueva buenas practicas.
                                    38
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
Q &A


       40

Más contenido relacionado

Similar a Spring on Flash Platform

Taller Spring3 + BlazeDS 4 + Flex 4
Taller Spring3 + BlazeDS 4 + Flex 4Taller Spring3 + BlazeDS 4 + Flex 4
Taller Spring3 + BlazeDS 4 + Flex 4riahispano
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframeworkVortexbird
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overviewzerovirus23
 
Diapositivas Spring Framework- Javier Oliver Fulguera
Diapositivas Spring Framework-  Javier Oliver FulgueraDiapositivas Spring Framework-  Javier Oliver Fulguera
Diapositivas Spring Framework- Javier Oliver FulgueraJavier Oliver Fulguera
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp UneMarcos Jara
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017Vortexbird
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleMario Cortés Flores
 
Taller backbone.js - Betabeers Córdoba (18/10/2012)
Taller backbone.js - Betabeers Córdoba (18/10/2012)Taller backbone.js - Betabeers Córdoba (18/10/2012)
Taller backbone.js - Betabeers Córdoba (18/10/2012)betabeers
 
Presentacion Spring Roo Java Mania
Presentacion Spring Roo Java ManiaPresentacion Spring Roo Java Mania
Presentacion Spring Roo Java ManiaJavier Onsurbe
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScriptRemo Jansen
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascriptJavier Constain
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxcarrilloja98
 

Similar a Spring on Flash Platform (20)

SpringBlazeDS
SpringBlazeDSSpringBlazeDS
SpringBlazeDS
 
Taller Spring3 + BlazeDS 4 + Flex 4
Taller Spring3 + BlazeDS 4 + Flex 4Taller Spring3 + BlazeDS 4 + Flex 4
Taller Spring3 + BlazeDS 4 + Flex 4
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 
Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Introducción a Spring framework
Introducción a Spring frameworkIntroducción a Spring framework
Introducción a Spring framework
 
spring framework
spring frameworkspring framework
spring framework
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
 
Diapositivas Spring Framework- Javier Oliver Fulguera
Diapositivas Spring Framework-  Javier Oliver FulgueraDiapositivas Spring Framework-  Javier Oliver Fulguera
Diapositivas Spring Framework- Javier Oliver Fulguera
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycle
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Taller backbone.js - Betabeers Córdoba (18/10/2012)
Taller backbone.js - Betabeers Córdoba (18/10/2012)Taller backbone.js - Betabeers Córdoba (18/10/2012)
Taller backbone.js - Betabeers Córdoba (18/10/2012)
 
Tema 6
Tema 6Tema 6
Tema 6
 
Presentacion Spring Roo Java Mania
Presentacion Spring Roo Java ManiaPresentacion Spring Roo Java Mania
Presentacion Spring Roo Java Mania
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScript
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascript
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptx
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Spring on Flash Platform

  • 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
  • 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

Notas del editor