Adobe Flex & Grails RIA, REST und XML Pascal Schudel Consultant pascal.schudel@trivadis.com Mischa Kölliker Principal Consultant mischa.koelliker@trivadis.com JUGS Zürich, 8. Juli 2010 Basel Bern Lausanne Zurich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg Munich Stuttgart Vienna
Was haben wir gebaut? Adobe Flex Adobe Flex HTML Grails- App 1 Grails- App 2 Grails- App 3 MySQL Oracle Sybase Adobe Flex & Grails - RIA, REST und XML 2
AMF AMF Der übliche Weg: BlazeDS und AMF Adobe Flex Adobe Flex HTML BlazeDS Grails- App 1 BlazeDS Grails- App 2 Grails- App 3 Adobe Flex & Grails - RIA, REST und XML 3
Script-Clients: REST & XML (Perl)- Scripte Adobe Flex Adobe Flex HTML REST/XML Grails- App 1 Grails- App 2 Grails- App 3 Adobe Flex & Grails - RIA, REST und XML 4
Adobe Flex & Grails - RIA, REST und XML 5
Sehr heterogene Systemlandschaft Client Browser Betriebssysteme Server Datenbanken Adobe Flex & Grails - RIA, REST und XML 6
Flex & Grails WTF? Roundtrip by example Holz- oder Königsweg? Adobe Flex & Grails - RIA, REST und XML 7
Wer wir sind Pascal Schudel Java Consultant Grails-Experte Mischa Kölliker Java & SOA Consultant Buchautor Architektur, Konzeption Trivadis AG Enterprise-Lösungen mit Java-, Oracleund Microsoft-Technologien 550 Mitarbeiter an 11 Standorten in DACH Rich Domain Model mit JPA 2.0 8
Flex & Grails WTF?. Roundtrip by example Holz- oder Königsweg? Adobe Flex & Grails - RIA, REST und XML 9
Grails Adobe Flex & Grails - RIA, REST und XML 10
Grails vs. Rails Adobe Flex & Grails - RIA, REST und XML 11
Grails Open-source RIAD Rapid Internet Application Development Action-basiert (im Gegensatz zu Komponentenbasiert) MVC-basiert Request Controller Model Response View Adobe Flex & Grails - RIA, REST und XML 12
Grails Technologiestack Grails Java EE Spring Hibernate Sitemesh Groovy Java Language Java Development Kit (JDK) Java Virtual Machine Adobe Flex & Grails - RIA, REST und XML 13
Eine Grails-Anwendung erstellen > grails create-app bookstore > cd bookstore > grails run-app Adobe Flex & Grails - RIA, REST und XML 14
Codieren nach Konventionen Adobe Flex & Grails - RIA, REST und XML 15
Adobe Flex Adobe Flex & Grails - RIA, REST und XML 16
Die aktuellen Top 3 RIA-Frameworks Adobe Flex Microsoft Silverlight JavaFX Adobe Flex & Grails - RIA, REST und XML 17
Adobe Flex Stack Flex Applikation Flash Plugin Beliebiger Browser AIR Runtime Beliebiges OS Adobe Flex & Grails - RIA, REST und XML 18
Ansprechendes Default-L&F Adobe Flex & Grails - RIA, REST und XML 19
MXML Action Script MXML: statisch ActionScript: dynamisch Flex SDK: Komponenten Flex SDK Adobe Flex & Grails - RIA, REST und XML 20
Adobe Flex & Grails - RIA, REST und XML 21
MXML Adobe Flex & Grails - RIA, REST und XML 22
Action Script Adobe Flex & Grails - RIA, REST und XML 23
Flex & Grails WTF? Roundtrip by example. Holz- oder Königsweg? Adobe Flex & Grails - RIA, REST und XML 24
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 25
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 26
Kommunikation zum Server mit HTTPService Service-Stub-Definition in Services.mxml: Service aufrufen: Adobe Flex & Grails - RIA, REST und XML 27
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 28
REST URL Mapping Grails Url-Mapping URL Mapping mit Groovy DSL definieren Adobe Flex & Grails - RIA, REST und XML 29
XML parsen Convenience inkl. Databinding XML parsen mit XmlSlurper (Groovy/Grails) request.xml + GPath (ähnlich wie E4X) def xml = request.xml xml.people.each { p ->. } Flache XML-Struktur wird in älteren Grails Versionen automatisch in eine Map geparst Ab Grails 1.1 aktivierbar über URL Mapping Adobe Flex & Grails - RIA, REST und XML 30
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 31
Grails Finder Dynamische Finder-Methoden Performance verschlechtert sich bei vielen Aufrufen Alternative Finder Hibernate-Criteria API Hibernate-Queries Adobe Flex & Grails - RIA, REST und XML 32
Grails-Anwendung Grails Plugin-System Abgespeckte Grails-Anwendungen Der Plugin-Inhalt wird in die Ordner der Grails-Anwendung kopiert (zur Laufzeit) Über 400 Plugins verfügbar Plugin Adobe Flex & Grails - RIA, REST und XML 33
Suchen mit Searchable-Plugin I/II Volltextsuche Basiert auf Compass und Apache Lucene Pro Domain-Klasse konfigurierbar welche Attribute im Index vorhanden sein sollen Adobe Flex & Grails - RIA, REST und XML 34
Suchen mit Searchable-Plugin II/II Adobe Flex & Grails - RIA, REST und XML 35
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 36
Daten an Client zurück senden XML serialisieren Convenience Builder Template (GStringTemplate) Adobe Flex & Grails - RIA, REST und XML 37
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 38
Response verarbeiten mit HTTPService Antwort direkt im DataGrid (Tabelle) anzeigen: Adobe Flex & Grails - RIA, REST und XML 39
Anzeige des XML im DataGrid Adobe Flex & Grails - RIA, REST und XML 40
Response verarbeiten mit HTTPService Sie erinnern sich: Service-Aufruf Antwort verarbeiten: Adobe Flex & Grails - RIA, REST und XML 41
Roundtrip by example Flex Grails Adobe Flex & Grails - RIA, REST und XML 42
Roundtrip by example. Flex & Grails WTF? Holz- oder Königsweg?. Adobe Flex & Grails - RIA, REST und XML 43
Grails und Flex für Um-/Einsteiger geeignet Kunde hat grosses Wissen in Perl, PL/SQL und Oracle Forms Konnte nach kurzer Zeit im Projekt mitarbeiten Adobe Flex & Grails - RIA, REST und XML 44
Ein paar RESTriktionen Browser Design-Beschränkung: Nur GET- und POST-Requests möglich Mögliche Workarounds: Alternative URL: /nametoip/save/123 BlazeDS als Proxy (useproxy= true ) Seit Grails 1.2 HTTP Header X-HTTP-Method-Override URL-Parameter _method Adobe Flex & Grails - RIA, REST und XML 45
Entwicklungsumgebungen / Lizenzkosten Adobe Flash Builder (früher Flex Builder, Eclipse Plugin) GUI-Designer Code Completion Debugger Lizenzkosten: Fr. 0.- / Fr. 300.- / Fr. 890.- IntelliJ IDEA Aktuell beste Unterstützung für Grails Code Completion (bspw. auch für dynamische Finder) Wizards für Controller, Services Kein GUI-Builder für Flex Lizenzkosten: $99 / $249 / $599 Adobe Flex & Grails - RIA, REST und XML 46
Fazit Flex Sehr ausgereifte GUI-Komponenten Open-Source Grails Rapid Prototyping Grosse und sehr aktive Community Dank Plugins fast unendliche Erweiterbarkeit Performance ok Flex und Grails ergänzen sich in der Praxis sehr gut Adobe Flex & Grails - RIA, REST und XML 47