adobe flex & grails - jug.ch · basel · bern · lausanne · zurich · düsseldorf ·...

47
Basel · Bern · Lausanne · Zurich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · Munich · Stuttgart · Vienna Adobe Flex & Grails RIA, REST und XML Pascal Schudel Consultant [email protected] Mischa Kölliker Principal Consultant [email protected] JUGS Zürich, 8. Juli 2010

Upload: others

Post on 05-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Basel · Bern · Lausanne · Zurich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · Munich · Stuttgart · Vienna

Adobe Flex & GrailsRIA, REST und XML

Pascal [email protected]

Mischa KöllikerPrincipal [email protected]

JUGS Zürich, 8. Juli 2010

© 2010© 2010

Was haben wir gebaut?

Adobe Flex & Grails - RIA, REST und XML 2

Adobe Flex

Grails-App 2

Grails-App 1

Grails-App 3

Adobe Flex

HTML

MySQL Oracle Sybase

© 2010© 2010

Der übliche Weg: BlazeDS und AMF

Adobe Flex & Grails - RIA, REST und XML 3

Adobe Flex

Grails-App 2

Grails-App 1

Grails-App 3

Adobe Flex

HTML

BlazeDS BlazeDS

AM

F

AM

F

© 2010© 2010

Script-Clients: REST & XML

Adobe Flex & Grails - RIA, REST und XML 4

Adobe Flex

Grails-App 2

Grails-App 1

Grails-App 3

Adobe Flex

HTML(Perl)-Scripte

REST/X

ML

© 2010© 2010Adobe Flex & Grails - RIA, REST und XML 5

© 2010© 2010

Sehr heterogene Systemlandschaft

• Client

–Browser

–Betriebssysteme

• Server

–Datenbanken

Adobe Flex & Grails - RIA, REST und XML 6

© 2010© 2010

Flex & Grails – WTF?

Roundtrip by example

Holz- oder Königsweg?

Adobe Flex & Grails - RIA, REST und XML 7

© 2010© 2010

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-, Oracle-

und Microsoft-Technologien– 550 Mitarbeiter an 11 Standorten in DACH

Rich Domain Model mit JPA 2.0 8

© 2010© 2010

Flex & Grails – WTF? .

Roundtrip by example

Holz- oder Königsweg?

Adobe Flex & Grails - RIA, REST und XML 9

© 2010© 2010

Grails

Adobe Flex & Grails - RIA, REST und XML 10

© 2010© 2010

Grails vs. Rails

Adobe Flex & Grails - RIA, REST und XML 11

© 2010© 2010

Grails

• Open-source

• RIAD – Rapid Internet Application Development

• Action-basiert (im Gegensatz zu Komponenten-basiert)

• MVC-basiert

Adobe Flex & Grails - RIA, REST und XML 12

View

ModelControllerRequest

Response

© 2010© 2010

Grails Technologiestack

Adobe Flex & Grails - RIA, REST und XML 13

Grails

Java EE Spring Hibernate Groovy

Java Development Kit(JDK)

Java Language

Java Virtual Machine

Sitemesh

© 2010© 2010

Eine Grails-Anwendung erstellen

Adobe Flex & Grails - RIA, REST und XML 14

> grails create-app bookstore

> cd bookstore

> grails run-app

© 2010© 2010

Codieren nach Konventionen

Adobe Flex & Grails - RIA, REST und XML 15

© 2010© 2010

Adobe Flex

Adobe Flex & Grails - RIA, REST und XML 16

© 2010© 2010

Die aktuellen Top 3 RIA-Frameworks

• Adobe Flex

• Microsoft Silverlight

• JavaFX

Adobe Flex & Grails - RIA, REST und XML 17

© 2010© 2010

Adobe Flex Stack

Adobe Flex & Grails - RIA, REST und XML 18

Flex Applikation

Flash Plugin

Beliebiger Browser

Beliebiges OS

AIRRuntime

© 2010© 2010

Ansprechendes Default-L&F

Adobe Flex & Grails - RIA, REST und XML 19

© 2010© 2010

• MXML: statisch

• ActionScript: dynamisch

• Flex SDK: Komponenten

Adobe Flex & Grails - RIA, REST und XML 20

FlexSDK

MXML

ActionScript

© 2010© 2010Adobe Flex & Grails - RIA, REST und XML 21

© 2010© 2010Adobe Flex & Grails - RIA, REST und XML 22

MXML

© 2010© 2010Adobe Flex & Grails - RIA, REST und XML 23

ActionScript

© 2010© 2010

Flex & Grails – WTF?

Roundtrip by example .

Holz- oder Königsweg?

Adobe Flex & Grails - RIA, REST und XML 24

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 25

Flex Grails

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 26

Flex Grails

© 2010© 2010

Kommunikation zum Server mit HTTPService

• Service-Stub-Definition in Services.mxml:

• Service aufrufen:

Adobe Flex & Grails - RIA, REST und XML 27

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 28

Flex Grails

© 2010© 2010

Grails Url-Mapping

• REST URL Mapping

– URL Mapping mit Groovy DSL definieren

Adobe Flex & Grails - RIA, REST und XML 29

© 2010© 2010

XML parsen

• Convenience inkl. Databinding

• XML parsen mit XmlSlurper (Groovy/Grails)• request.XML + GPath (ähnlich wie E4X)

– def xml = request.XMLxml.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

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 31

Flex Grails

© 2010© 2010

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

© 2010© 2010

Grails Plugin-System

• Abgespeckte Grails-Anwendungen

• Der Plugin-Inhalt wird in die Ordner der Grails-Anwendungkopiert (zur Laufzeit)

• Über 400 Plugins verfügbar

Adobe Flex & Grails - RIA, REST und XML 33

Gra

ils-A

nw

end

un

g

Plu

gin

© 2010© 2010

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

© 2010© 2010

Suchen mit Searchable-Plugin II/II

Adobe Flex & Grails - RIA, REST und XML 35

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 36

Flex Grails

© 2010© 2010

Daten an Client zurück senden

• Template (GStringTemplate)

Adobe Flex & Grails - RIA, REST und XML 37

• XML serialisieren• „Convenience“

• Builder

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 38

Flex Grails

© 2010© 2010

Response verarbeiten mit HTTPService

Antwort direkt im DataGrid (Tabelle) anzeigen:

Adobe Flex & Grails - RIA, REST und XML 39

© 2010© 2010

Anzeige des XML im DataGrid

Adobe Flex & Grails - RIA, REST und XML 40

© 2010© 2010

Response verarbeiten mit HTTPService

Sie erinnern sich: Service-Aufruf

Antwort verarbeiten:

Adobe Flex & Grails - RIA, REST und XML 41

© 2010© 2010

Roundtrip by example

Adobe Flex & Grails - RIA, REST und XML 42

Flex Grails

© 2010© 2010

Flex & Grails – WTF?

Roundtrip by example.

Holz- oder Königsweg? .

Adobe Flex & Grails - RIA, REST und XML 43

© 2010© 2010

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

© 2010© 2010

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

© 2010© 2010

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 / $599Adobe Flex & Grails - RIA, REST und XML 46

© 2010© 2010

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 gutAdobe Flex & Grails - RIA, REST und XML 47