Upload
lyonjug
View
1.416
Download
4
Embed Size (px)
DESCRIPTION
Octobre 2011
Citation preview
GraniteDS et le framework Spring
GraniteDS et Spring
GraniteDS est une plateforme open source pour les applications RIA basées sur les technologies Adobe Flex et Java
GraniteDS offre en particulier une intégration très poussée avec le framework Spring et les technologies connexes comme JPA
« The easiest way to RIA »
2
3Le projet GraniteDS
Créé fin 2006, licence LGPL v2 Version actuelle 2.2.1, 2.3 imminente Plusieurs milliers d’utilisateurs Utilisé par de grandes entreprises et administrations, en Europe et aux USA Reconnu comme l’alternative principale aux solutions serveurs d’Adobe Support du framework Spring dès les premières versions
Objectif: Simplifier au maximum l’intégration d’une interface Flex avec une application serveur basée sur Spring
Open Source
Projet mature
(Créé en 2006)
1500 téléchargements/
mois
4La plateforme GraniteDS
GraniteDS est une plateforme d’intégration complète qui couvre l’ensemble du cycle de développement jusqu’à la production
5GraniteDS dans une architecture Spring
Transparent côté serveur : Initialisation et configuration très simples directement depuis le contexte Spring
avec le namespace graniteds Intégration avec Spring MVC pour le remoting Quasiment aucune dépendance de compilation aux librairies GraniteDS, hormis
quelques annotations optionnelles Support complet de l’environnement Spring et Java EE (JPA, Bean Validation,
Spring Security, JMS, …)
Framework d’intégration complet côté Flex : Remoting Persistance et gestion de données Validation, sécurité Messaging temps réel
6Remoting
Support de RemoteObject ou de l’API spécifique Tide
Il est possible d’exposer un service Spring avec une simple annotation ou une déclaration dans la configuration XML
Appels de services fortement typés :
Les outils de génération de code reconnaissent les services Spring et générent des classes AS3 typées
L’intégration côté serveur est capable de déterminer une cible de remoting par son type plutôt que par un nom
Facilité de développement : auto-complétion sur le code Flex, possibilités de refactoring améliorées, détection précoce des erreurs
7Persistance et gestion de données (1/2)
Intégration complète de JPA :
Les entités JPA détachées peuvent être sérialisées et échangées entre client et serveur sans risque de perte de données
Les associations “lazy” sont sérialisées dans les deux sens pour gagner en performances, et peuvent être chargées de manière transparente par GraniteDS
GraniteDS s’intègre complètement avec la configuration transactionnelle et de persistance de Spring (EntityManagerFactory, TransactionManager, …)
Support de toutes les implémentations usuelles de JPA : Hibernate, EclipseLink, OpenJPA, DataNucleus
Les outils de génération de code reconnaissent les entités JPA et générent des classes AS3 optimisées
8Persistance et gestion de données (2/2)
Fonctionnalités avancées :
Entity manager côté Flex avec un cache de données permettant d’assurer l’unicité des instances dans l’application
Pagination : support de très grandes listes de données avec une occupation mémoire minimale et un chargement au fur et à mesure
“Dirty checking” : possibilité de détecter si un graphe d’objet a été modifié pour par exemple griser un bouton et/ou émettre une alerte pour proposer à l’utilisateur d’enregistrer son formulaire
Gestion des conflits de modifications concurrentes grâce à l’intégration avec l’”optimistic locking” de JPA
Version entreprise : amélioration des performances grâce à la synchronisation différentielle, seules les propriétés réellement modifiées sont transmises
9Validation
Intégration complète avec l’API Bean Validation :
Implémentation Flex de l’API Bean Validation permettant d’effectuer le maximum de contrôle des données côté Flex avec un rendu visuel en temps-réel
Intégration avec la validation serveur pour reporter automatiquement les erreurs de validation sur l’interface graphique
Cohérence systématique des métadonnées de validation grâce au report par le générateur de code des annotations Bean Validation depuis les entités Java vers les entités AS3
Composants Flex permettant d’effectuer à la volée des validations distantes des données par le serveur
10Sécurité
Intégration complète avec Spring Security :
Composant Flex d’authentification Possibilité de récupérer un contexte de sécurité déjà authentifié, dans le cas d’un
SSO ou lors d’un rafraîchissement de page Web par ex. Intégration avec les autorisations par rôles de Spring Security avec mise en cache
des droits d’accès Intégration avec les autorisations par “access lists” (Spring Security ACL) pour
gérer des droits d’accès sur les données elles-mêmes Il est par exemple très simple par exemple d’afficher ou masquer un bouton
suivant les droits de l’utilisateur sur une instance d’objet particulière
11Messaging temps-réel
Implémentation “scalable” de la technologie long-polling:
Mode “long-polling” compatible avec les proxies Web Utilisation des capacités asynchrones / NIO des serveurs d’applications récents
(Tomcat 6+, Jetty 6+, JBoss 4+, GlassFish 3+, WebLogic 10+, Servlet 3) Intégration avec JMS pour accéder à des données externes Clustering grâce à l’utilisation d’un serveur JMS local du type ActiveMQ ou
HornetQ Possibilité de transmettre de manière transparente, transactionnelle et en temps-
réel les modifications détectées sur des entités JPA à tous les clients souscrits
12Roadmap 2011 / 2012
Des nouvelles fonctionnalités centrées sur le temps-réel et la mobilité:
Protocoles temps-réel RTMP et WebSocket (Q3/Q4) Librairies clientes mobiles natives iOS et Android (Q3/Q4) Mode déconnecté (Q1 2012)
13Contactez-nous
www.graniteds.org
www.granitedataservices.com
France
William Draï24 rue de l’Est75020 PARISFrance+33 1 40 33 76 77
USA
Franck Wolff1501 BroadwayNew York City, NY 10036USA+1 646 287 4747