Granite Data Services Franck WOLFF et William DRAI
Sommaire Présentation du projet L’API de réflexion La gestion des  Big Numbers Le framework de validation La synchronisati...
Le projet GraniteDS Créé fin 2006 Open Source: LGPL3 (© Adequate Systems) Version actuelle: 2.1.0.GA / 2.2.0.RC1 en prépar...
Pourquoi GraniteDS Aucune implémentation Java open source du protocole AMF3 en 2006 / 2007 Technologie LCDS  full client  ...
 
API de réflexion <ul><li>Problème  : les fonctionnalités de réflexion offertes par l’API standard Flash sont limités et pe...
java.math / entier 64 bits <ul><li>Problème   : la sérialisation AS3 des long, BigInteger et BigDecimal perd de la précisi...
Validation (1/2) <ul><li>Problème  : vérifier des contraintes de validation du modèle de données côté Flex. </li></ul><ul>...
Validation (2/2) <ul><li>Solution  : </li></ul><ul><li>1. Le générateur d'entités GAS3 reproduit les annotations Bean Vali...
Synchonisation de données temps-réel (1/2) <ul><li>Problème  : s'assurer que tous les clients  voient  les mêmes données <...
Synchronisation de données temps-réel (2/2) <ul><li>Problème  : les mises à jour d’entités JPA devraient être répercutées ...
Fin Q/A © Adequate Systems 2010
Prochain SlideShare
Chargement dans…5
×

201006 Graniteds

1 001 vues

Publié le

Publié dans : Technologie, Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 001
Sur SlideShare
0
Issues des intégrations
0
Intégrations
77
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

201006 Graniteds

  1. 1. Granite Data Services Franck WOLFF et William DRAI
  2. 2. Sommaire Présentation du projet L’API de réflexion La gestion des Big Numbers Le framework de validation La synchronisation temps-réel
  3. 3. Le projet GraniteDS Créé fin 2006 Open Source: LGPL3 (© Adequate Systems) Version actuelle: 2.1.0.GA / 2.2.0.RC1 en préparation Informations et documentation http://www.graniteds.org/ Téléchargement et SVN http://sourceforge.net/projects/granite/ Forum http://tech.groups.yahoo.com/group/graniteds/
  4. 4. Pourquoi GraniteDS Aucune implémentation Java open source du protocole AMF3 en 2006 / 2007 Technologie LCDS full client ne convenant pas à notre architecture applicative serveur Pas d'intégration native avec les EJB3 et les frameworks usuels (Spring, JBoss Seam) Problématiques de gestion des données côté client et utilisation d'entités JPA détachées (support du lazy-loading) Des frameworks Flex existants (Cairngorm, PureMVC) trop complexes : création du framework Tide Objectif principal : simplifier au maximum l'intégration d'un front-end Flex avec une application JEE
  5. 6. API de réflexion <ul><li>Problème : les fonctionnalités de réflexion offertes par l’API standard Flash sont limités et peu commodes à utiliser (fonction describeType ). </li></ul><ul><li>Solution : une API de réflexion qui reproduit les fonctionnalités de l’API Java correspondante et qui simplifie considérablement l’analyse des classes ActionScript3. </li></ul><ul><li>Exemple : </li></ul>var t:Type = Type.forName (&quot;path.to.MyClass&quot; ); for each ( var a:Annotation in t.annotations) trace (a.args); var ms:Array = t.getMethods( function (m:Method):Boolean { return m.isStatic(); });
  6. 7. java.math / entier 64 bits <ul><li>Problème : la sérialisation AS3 des long, BigInteger et BigDecimal perd de la précision (conversion en Number). Les opérations sur le type Number ont les mêmes limites que celles du type double en Java. </li></ul><ul><li>Solution : une implémentation ActionScript3 de classes Long, BigInteger et BigDecimal associée à un mécanisme de sérialisation (externalisation) qui permet de conserver avec exactitude la précision de ces types lors de l’échange de données Flex/Java. </li></ul><ul><li>Exemple : </li></ul>var a:BigDecimal = new BigDecimal( &quot;123.45&quot; ); var b:BigDecimal = new BigDecimal( &quot;6.789&quot; ); var q:BigDecimal = a.divide(b, 5, RoudingMode.FLOOR);
  7. 8. Validation (1/2) <ul><li>Problème : vérifier des contraintes de validation du modèle de données côté Flex. </li></ul><ul><li>L'API JEE Bean Validation propose un framework de validation complet basé sur des annotations. </li></ul><ul><li>Il serait judicieux de pouvoir réutiliser ces annotations côté Flex et de valider des objets autant que possible sans passer par le serveur. </li></ul>
  8. 9. Validation (2/2) <ul><li>Solution : </li></ul><ul><li>1. Le générateur d'entités GAS3 reproduit les annotations Bean Validation sur les entités ActionScript 3. </li></ul><ul><li>2. Le moteur de validation GraniteDS implémente la spécification Bean Validation en ActionScript 3 et utilise les annotations générées ci-dessus. </li></ul><ul><li>3. Un composant Flex FormValidator fait le lien entre les composants graphiques et le moteur de validation en utilisant les informations du data binding bidirectionnel de Flex. </li></ul><ul><li>Exemple : </li></ul>[ NotNull ] [ Size (min= &quot;6&quot; , max= &quot;10&quot; )] public var username:String;
  9. 10. Synchonisation de données temps-réel (1/2) <ul><li>Problème : s'assurer que tous les clients voient les mêmes données </li></ul><ul><li>Option 1 : bouton 'Actualiser' </li></ul><ul><li>Option 2 : utilisation de techniques de push </li></ul><ul><li>GraniteDS inclut un moteur de push de type Comet performant ( Gravity ) qui utilise les capacités de traitements asynchrones des conteneurs de servlets récents. </li></ul><ul><li>Le modèle publish-subscribe permet d'envoyer des messages à tous les clients souscrits, moyennant un peu de développement. </li></ul>
  10. 11. Synchronisation de données temps-réel (2/2) <ul><li>Problème : les mises à jour d’entités JPA devraient être répercutées sur tous les clients de façon simple et transparente. </li></ul><ul><li>Solution : </li></ul><ul><li>1. GraniteDS détecte les modifications sur les données grâce à un listener JPA. </li></ul><ul><li>2. Les modifications sont poussées sur un topic spécifié par une annotation sur le service. </li></ul><ul><li>3. Le framework Tide fusionne les modifications reçues côté client dans le cache local d'entités. </li></ul><ul><li>4. L'interface graphique est mise à jour automatiquement grâce au data binding Flex. </li></ul>
  11. 12. Fin Q/A © Adequate Systems 2010

×