Enterprise Spring and Flex applications


Published on

SpringSource ha recentemente annunciato Spring BlazeDS Integration, un nuovo progetto open source per permettere una facile integrazione tra il framework Spring e Adobe BlazeDS, una tecnologia open source basata su server Java remoting e Web messaging.
Il plugin di SpringSource fornisce un approccio più semplice ed intuitivo agli sviluppatori Spring e Java per creare Enterprise Rich Internet Applications utilizzando il framework Adobe Flex, una pietra miliare della Flash Platform.
In questa sessione ai partecipanti verrà fornita una panoramica del framework Flex e di BlazeDS, illustrando i vantaggi e le modalità di integrazione al framework Spring attraverso il plugin Spring BlazeDS.

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Enterprise Spring and Flex applications

  1. 1. we make it RIA<br />Raffaele Mannella <br />ManagingDirector<br />r.mannella@comtaste.com<br />
  2. 2. Mission<br />Exploring new frontiers in Rich Internet Applications<br />Maximizing the <br />User Experiences<br />
  3. 3. MISSION<br />“Bringing Sexy Back to the Enterprise applications”<br />by a clever use of Rich Internet Applications and Multimedia content.<br />Because better information workplaces:<br /><ul><li>make customers happier
  4. 4. improve the quality of work life for employees</li></li></ul><li>WHY<br />In other words:<br />RIAs in enterprise environments dramatically increase staffproductivity and responsivecapacity<br />Multimedia contents add enhanced effectiveness<br />
  5. 5. Technologies<br />The technologies we use:<br /><ul><li> J2EE (Java, JSP, Hibernate, EJB3, Struts, Spring)
  6. 6. Ajax
  7. 7. Flash
  8. 8. Flex
  9. 9. AIR
  10. 10. Flash Media Server</li></li></ul><li>Team<br />Who can make it possible<br />J2EE Developers<br />Flex/Flash Developers<br />Creative UI Designers<br />
  11. 11. Showcase<br />Maggioli S.p.A.<br />è una delle più grandi realtà italiane nell&apos;ambito della fornitura di prodotti e servizi per la PAL con particolare impegno nella produzione e assistenza di software gestionali per gli enti.<br />Noi per Loro<br /><ul><li>Orientamento tecnologico
  12. 12. Formazione
  13. 13. Menthoring
  14. 14. User Interface Design</li></li></ul><li>Showcase<br />INPDAP<br />Noi per Loro<br />Sviluppo , user interface design e deploy di una piattaforma RIA per archiviazione, distribuzione e ricerca di delibere e circolari<br />
  15. 15. Showcase<br />Dashboard applications<br />
  16. 16. Showcase<br />Comtaste Open Source Projects<br />Pantaste (http://code.google.com/p/pantaste/)<br />A library to create ActionScript-based personalized start page or personal web portal much like  iGoogle, My Yahoo!, Netvibes etc<br />DAO-EXT (http://code.google.com/p/dao-ext/)<br />an Adobe AIR tool that allows developers to automatically generate ActionScript Data Access Objects (DAO) and Value Objects starting from a local SQLite database.<br />
  17. 17. Showcase<br />CASE HISTORIES<br />
  18. 18. CLIENTS<br />
  19. 19. Partnership<br />
  20. 20. Upcoming<br />Spring-Flex Training<br />Corsi Spring in Italiano<br />Comtaste ha creato un percorso didattico rivolto a chi già utilizza Flex in ambiente Enterprise e vuole esplorare le possibilità di integrazione con Spring.<br />Comtaste e SpringSource stanno lavorando insieme per offrire corsi di Spring in lingua italiana.<br />
  21. 21. Spring + Flex + BlazeDS<br />MARCO CASARIO<br />CTO – Comtaste<br />http://casario.blogs.com<br />
  22. 22. My books<br />WWW.COMTASTE.COM<br />
  23. 23. My books<br />WWW.COMTASTE.COM<br />
  24. 24. My books<br />WWW.COMTASTE.COM<br />
  25. 25. My books<br />GEN 09<br />WWW.COMTASTE.COM<br />
  26. 26. My Books<br />Advanced AIR Applications<br />Professional Flash Catalyst<br />Flex 4 Solutions<br />WWW.COMTASTE.COM<br />
  27. 27. Who I am<br />WWW.COMTASTE.COM<br />
  28. 28. Flex + Spring<br /><ul><li>Flash Platform Overview
  29. 29. Flex 4 e Flash Catalyst
  30. 30. Livecycle DS
  31. 31. BlazeDS
  32. 32. Integrazione con Spring
  33. 33. Q & A</li></ul>WWW.COMTASTE.COM<br />
  34. 34. Flex + Spring<br />Flex 3 Component Model (Halo) <br />/<br />Component<br />Skin<br />Graphics<br />Layout<br />Animation<br />Parts<br />States<br />Behavior<br />Logic<br />Data<br />WWW.COMTASTE.COM<br />
  35. 35. Flex + Spring<br />Flex 4 Component Model (Spark) <br />ActionScript<br />MXML<br />Skin<br />Component<br />Graphics<br />Layout<br />Animation<br />Parts<br />States<br />Behavior<br />Logic<br />Data<br />CSS <br />properties<br />WWW.COMTASTE.COM<br />
  36. 36. Flex + Spring<br />FXG: grafica a compile time<br />Flash CS4Professional<br />FlashCatalyst<br />FlashBuilder<br />FXG: formatograficobasatosu MXML<br /><ul><li>Di facile comprensione per i designers
  37. 37. Basatosul flash rendering model
  38. 38. Statico – no binding, layout, event handlers, styling, etc
  39. 39. Ottimizzatodal compiler (alte performance)</li></ul>InteractiveContent<br />Prototyping<br />Eclipse IDE<br />Animation<br />Design/DevelopWorkflow<br />Code Profiling<br />Visual Layout<br />Debugging<br />FXG<br />After Effects<br />Illustrator<br />Photoshop<br />Fireworks<br />WWW.COMTASTE.COM<br />
  40. 40. Flex + Spring<br />Flex 4 MXML Graphics<br /><ul><li>MXML Graphics library providing rich primitive support
  41. 41. Simple Shape primitives (Rectangles, rounded rects, ellipses, circles)
  42. 42. Complex Paths(Linear, Quadratic, and Bezier curve segments)
  43. 43. Full range of fills and strokes (solid, transparent, bitmap, linear and radial gradients)
  44. 44. Masking, filters, blend modes, and more. (blur, glow, dropshadow, screen, multiply…)
  45. 45. Color and 2D transformations (rotate, scale, tint, brighten…)
  46. 46. Integrated text, bitmaps</li></ul>&lt;Graphic&gt;<br />&lt;Path data=“ ….. “&gt;<br />&lt;fill&gt;<br />&lt;LinearGradient angle=“90”&gt;….<br />&lt;/LinearGradient&gt;<br />&lt;/fill&gt;<br />&lt;/Path&gt;<br />&lt;Path blendMode=“screen” data=“…” &gt;<br />&lt;fill&gt;<br />&lt;LinearGradient angle=“45”&gt;…<br />&lt;/LinearGradient&gt;<br />&lt;/fill&gt;<br />&lt;/Path&gt;<br />&lt;GraphicText text=“MXML Graphics”&gt;<br />&lt;filters&gt;<br />&lt;Glow color=“#00FF00” strength=“3” … /&gt;<br />&lt;/filters&gt;<br />&lt;/GraphicText&gt;<br />&lt;/Graphic&gt;<br />WWW.COMTASTE.COM<br />
  47. 47. Flex + Spring<br /><ul><li>2-way binding
  48. 48. text=“@{myModel.data}”
  49. 49. <fx:Binding source=“foo.text” destination=“myModel.data” twoWay=“true” />
  50. 50. Advanced CSS
  51. 51. Multiple Class Selectors:<Button id=“upButton” styleName=“default tiny” />
  52. 52. ID Selectors:#upButton { fontSize: 14 }
  53. 53. Descendant Selectors: s|Scrollbar #upButton { baseColor: #FF8888 }
  54. 54. Pseudo Selectors: s|Scrollbar #upButton:over { baseColor: #8888FF }</li></ul>WWW.COMTASTE.COM<br />
  55. 55. Flex + Spring<br />Gli States in Flex 4<br /><ul><li>Declare your states with a ‘State’ tag
  56. 56. Describe ‘alternate views’ of your markup
  57. 57. Change values, bindings, event handlers
  58. 58. Include and exclude components as easily as setting visibility
  59. 59. Unscoped entries specify the ‘default’ for all states
  60. 60. Use in 2009 documents – 2006 still supports legacy states.</li></ul>&lt;states&gt;<br />&lt;State name=”login&quot;/&gt;<br />&lt;State name=”register&quot;/&gt;<br />&lt;/states&gt;<br />&lt;Group&gt;<br />&lt;TextBox text=“username:” /&gt;<br />&lt;TextInput /&gt;<br />&lt;TextBox text=“password:” /&gt;<br />&lt;TextInput /&gt;<br />&lt;Button label=“new user?” /&gt;<br />&lt;Checkbox includeIn=“register” label=“agree to terms” /&gt;<br />&lt;Button label=“log in” label.register=“sign up” /&gt;&lt;/Group&gt;<br />WWW.COMTASTE.COM<br />
  61. 61. Flex + Spring<br /><ul><li>FTE: New low level text engine (player 10)
  62. 62. TLF: New text layout library built on top of FTE.
  63. 63. Benefits:
  64. 64. Soft hyphens
  65. 65. Baseline control (e.g., superscripts and subscripts)
  66. 66. Right, center, and decimal tabs
  67. 67. Vertical justification
  68. 68. Multiple columns
  69. 69. Ligatures, capitalization styles, digit styles
  70. 70. Integrated Rendering of device fonts (a.k.a. I can fade and rotate my text)
  71. 71. Bi-Directional text</li></ul>Nuovo Text engine<br />WWW.COMTASTE.COM<br />
  72. 72. Flex + Spring<br />Flash Catalyst<br /><ul><li>A professional interaction design tool for rapidly creating the user experience of applications and interactive content without coding</li></ul>WWW.COMTASTE.COM<br />
  73. 73. Flex + Spring<br /><ul><li> Interactive Web Designers / Interaction Designers</li></ul>Responsible for the visual design of interactive experiences created at agencies. Uses tools like Photoshop, Illustrator, and Fireworks to design the layout and assets - but increasingly wants to design the “behavior” of the interface.<br /><ul><li> Information Architects</li></ul>Responsible for creating the high-level interaction models for the media and experiences. Involved in the early wireframes and ideation process <br /><ul><li> Graphic Designers and Creative Directors</li></ul>Aspire to do interactive pieces or showcase sites without having to write code.<br />WWW.COMTASTE.COM<br />
  74. 74. Flex + Spring<br />WWW.COMTASTE.COM<br />
  75. 75. Flex + Spring<br />WWW.COMTASTE.COM<br />
  76. 76. Flex + Spring<br />WWW.COMTASTE.COM<br />
  77. 77. Flex + Spring<br />WWW.COMTASTE.COM<br />
  78. 78. Flex + Spring<br />WWW.COMTASTE.COM<br />
  79. 79. Flex + Spring<br />WWW.COMTASTE.COM<br />
  80. 80. Flex + Spring<br />WWW.COMTASTE.COM<br />
  81. 81. Flex + Spring<br />WWW.COMTASTE.COM<br />
  82. 82. Flex + Spring<br />WWW.COMTASTE.COM<br />
  83. 83. Flex + Spring<br />Perché Flex e Spring insieme<br />Spring è di fatto uno standard emergente per il business tier delle applicazioni Java Enterprise<br />Flex rappresenta lo standard per le RIA <br />Nell’integrazione lo sviluppatore non deve abbandonare l’approccio server side di Spring<br />WWW.COMTASTE.COM<br />
  84. 84. Flex + Spring<br />Perché Flex e Spring insieme<br />Lo sviluppatore Spring è “attratto” dall’approccio di sviluppo:<br /><ul><li>Configurazione di differenti tecnologie
  85. 85. Transizione semplice tra “standard” e “enterprise”
  86. 86. Migrazione da Local transactions e JTA non richiedono codice</li></ul>WWW.COMTASTE.COM<br />
  87. 87. Flex + Spring<br />Remoting Service<br />Permette al client di invocare metodi di oggetti sull’application server<br />Le informazioni tipizzate (Java / AS) sono mantenute<br />Encoding dei dati in formato binario<br />WWW.COMTASTE.COM<br />
  88. 88. Flex + Spring<br />Remoting Service<br />BlazeDS viene configurato attraverso una serie di file:<br /><ul><li>Services-config.xml
  89. 89. Remote-services.xml
  90. 90. Messaging-services.xml
  91. 91. Proxy-services.xml</li></ul>Questi file contengono le informazioni delle destination per i servizi remoti e gli adapter per l’implementazione di servizi<br />WWW.COMTASTE.COM<br />
  92. 92. Flex + Spring<br />Flex Remoting: le basi<br />WWW.COMTASTE.COM<br />
  93. 93. Flex + Spring<br />Flex Remoting: le basi<br />WWW.COMTASTE.COM<br />
  94. 94. Flex + Spring<br />SpringFactory: il vecchio approccio<br />Nel vecchio approccio veniva utilizzata una classe SpringFactory che però aveva degli svantaggi:<br /><ul><li>Utilizzava un approccio “dependency lookup”
  95. 95. Necessità di molteplici configurazioni</li></ul>Il vecchio approccio è stato una barriera per l’adozione di Flex e BlazeDS dagli sviluppatori Spring.<br />WWW.COMTASTE.COM<br />
  96. 96. Flex + Spring<br />SpringFactory: il vecchio approccio<br />WWW.COMTASTE.COM<br />
  97. 97. Flex + Spring<br />Spring-Flex:il nuovo approccio<br />Con una collaborazione tra Adobe e SpringSource è nato il progetto Spring-Flex:<br /><ul><li>Semplificare la configurazione di BlazeDS
  98. 98. Usare il MessageBroker di BlazeDS come un bean “Spring-managed”
  99. 99. Indirizzare i messaggi http di flex al MessageBroker attraverso lo Spring DispatcherServlet</li></ul>http://www.springsource.org/spring-flex<br />WWW.COMTASTE.COM<br />
  100. 100. Flex + Spring<br />Spring-Flex:il nuovo approccio<br />Per usare Spring-Flex bisogna avere i seguenti requisiti:<br /><ul><li>Java 5 o +
  101. 101. Adobe BlazeDS 3.2 o +
  102. 102. Spring 2.5 con dependencies o +</li></ul>WWW.COMTASTE.COM<br />
  103. 103. Flex + Spring<br />Spring-Flex:configurazione<br />Dopo aver scaricato ed installato BlazeDS e Spring BlazeDS Integration dovrete configurare il MessageBroker:<br /><ul><li>È il componente responsabile per gestire i messaggi HTTP dal client Flex
  104. 104. È gestito da Spring
  105. 105. I messaggi sono passati al MessageBroker di Spring attraverso la DispatcherServlet di Spring</li></ul>WWW.COMTASTE.COM<br />
  106. 106. Flex + Spring<br />Spring-Flex:configurazione<br />La DispatcherServlet è configurata nel bootstrap di Spring nell’WebApplicationContext (file web.xml):<br />&lt;servlet-class&gt;<br /> org.spring.framework.web.servlet. DispatcherServlet<br />&lt;/servlet-class&gt;<br /><ul><li>Prima era:</li></ul>flex.messaging.MessageBrokerServlet<br />WWW.COMTASTE.COM<br />
  107. 107. Flex + Spring<br />Spring-Flex:configurazione<br />Nell’applicationContext.xml file di BlazeDS vanno aggiunti i seguenti beans:<br /><ul><li>SimpleUrlHandlerMapping
  108. 108. MessageBrokerHandlerAdapter
  109. 109. MessageBrokerFactoryBean (da flex.messaging)</li></ul>WWW.COMTASTE.COM<br />
  110. 110. Flex + Spring<br />Spring-Flex:configurazione<br />A questo punto Spring gestisce il MessageBroker per permettere ai beans di essere connessi direttamente alle remoting call di Flex.<br />In questo modo le operazioni di serializzazione e deserializzazione tra Java e AMF avvengono automaticamente <br />Questo ci permette di non scrivere molto codice di configurazione nel file remoting-config.xml<br />WWW.COMTASTE.COM<br />
  111. 111. Flex + Spring<br />Spring-Flex:configurazione<br />Nel remoting-config.xml ci saranno solo gli elementi di configurazione nativi di BlazeDS:<br />&lt;service id=“remoting-service“ class=“flex.messaging.services.RemotingService” &gt;<br />&lt;adapters&gt;<br /> &lt;adapter-definition id=&quot;java-object&quot; class=&quot;flex.messaging.services.remoting.adapters.JavaAdapter&quot;/&gt;<br />&lt;/adapters&gt;<br />&lt;default-channels&gt;<br /> &lt;channel ref=&quot;my-amf&quot;/&gt;<br />&lt;/default-channels&gt;<br />WWW.COMTASTE.COM<br />
  112. 112. Flex + Spring<br />Spring-Flex:configurazione<br />Siamo pronti a collegare i beans nell’application context:<br />&lt;bean id=&quot;product&quot; class=&quot;org.springframework.flex.messaging.remoting.FlexRemotingServiceExporter&quot;&gt;<br /> &lt;property name=&quot;messageBroker&quot; ref=&quot;mySpringManagedMessageBroker&quot;/&gt;<br />&lt;property name=&quot;service&quot; ref=&quot;productService&quot;/&gt;<br />&lt;/bean&gt;<br />Espone il servizio ProductService a BlazeDS remoting <br />WWW.COMTASTE.COM<br />
  113. 113. Flex + Spring<br />Nomi di metodi riservati per RemoteObject<br />If a remote method has the same name as a method defined by the RemoteObject class, or by any of its parent classes, then you cannot call the remote method directly. The RemoteObject class defines the following method names:<br />WWW.COMTASTE.COM<br />
  114. 114. Flex + Spring<br />Spring-Flex: Sicurezza<br />WWW.COMTASTE.COM<br />
  115. 115. Flex + Spring<br />Spring-Flex: Messaging<br />Il progetto già prevede la compatibilità col nuovo sistema di Spring Integration per le comunicazione asincrone<br />Integrazione con BlazeDS MessageService senza usare la configurazione del file message-services.xml<br />Sono esposti adapters per Spring JMS e SpringIntegration per permettere la comunicazione tra il client Flex e i message-driven POJOs di Spring<br />WWW.COMTASTE.COM<br />
  116. 116. Flex + Spring<br />Spring-Flex: Sicurezza<br />WWW.COMTASTE.COM<br />
  117. 117. Flex + Spring<br />Spring BlazeDS: il futuro<br />Questesonoalcunedellenuove features in fasediimplementazione per la prossimaversione del progetto:<br /><ul><li>Spring 3 REST integration
  118. 118. Supporto per client-types multipli
  119. 119. Supportoallaserializzazione Hibernate
  120. 120. Semplicitànellaserializzazionedientità Hibernate a AMF senzal’erroreLazyInitializationException</li></ul>WWW.COMTASTE.COM<br />
  121. 121. Flex + Spring<br />Spring e Livecycle Data Services<br />Adobe stalavorandoall’integrazione con LCDS:<br /><ul><li>Data Assembler configurati come Spring beans
  122. 122. SpringHibernateAssemblercheutilizza un HibernateSessionFactorydi Spring (equivalentedell’Assembler JPA)</li></ul>WWW.COMTASTE.COM<br />
  123. 123. Flex + Spring<br />Spring ActionScript<br />Il progetto è mantenuto dallo stesso creatore del Prana framework (http://www.springactionscript.org/)<br />E’ entrato a far parte di Spring Extension <br />Il framework contiene un Inversion of Control Container, un MVCS framework, estensioni per Cairngorm e PureMVC frameworks e altre utilities.<br />WWW.COMTASTE.COM<br />
  124. 124. Flex + Spring<br />Spring ActionScript<br />E’ un container ActionScript che applica il design pattern IoC:<br />IoC tende a tener disaccoppiati i singoli componenti di un sistema, in cui le eventuali dipendenze non vengono scritte all&apos;interno del componente stesso, ma gli vengono iniettate dall&apos;esterno: non si segue il normale flusso di controllo dei linguaggi imperativi, in cui, nel momento del bisogno, si richiamano funzioni di classi o librerie esterne, gli oggetti quindi non istanziano e richiamano gli oggetti dal quale il loro lavoro dipende, ma queste funzionalità vengono fornite da un ambiente esterno tramite dei contratti definiti da entrambe le entità.<br />La Dependency Injection è una delle tecniche con le quali si può attuare l&apos;IOC. <br />WWW.COMTASTE.COM<br />
  125. 125. Flex’s Bootstrap<br />MARCO CASARIO<br />CTO – Comtaste<br />http://casario.blogs.com<br />