Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Des solutions de synchronisation de données

webinaire Delphi

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Des solutions de synchronisation de données

  1. 1. Des solutions de synchronisation de données Webinaire du 18 décembre 2018 (c) Patrick Prémartin / developpeur-pascal.fr
  2. 2. Au menu du jour • Introduction • C’est quoi une donnée ? • Cas pratiques et solutions • Synchro à l’intérieur d’une fiche avec Live Bindings • Synchro sur le réseau local et en Bluetooth avec App Tethering • Synchro via Internet avec DataSnap • Synchro via Internet avec les composants TCP/IP • Cas client : l’application Intelli7 3.x et son cloud maison • Conclusion • Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr
  3. 3. Introduction (c) Patrick Prémartin / developpeur-pascal.fr
  4. 4. Introduction • Présentation de la société Olf Software https://www.olfsoftware.fr • Présentation de Patrick Prémartin https://www.linkedin.com/in/patrickpremartin/ • Les différentes versions de Delphi https://www.embarcadero.com/fr/products/delphi • Voir ou revoir les webinaires précédents https://vasur.fr/webinairesdelphi (c) Patrick Prémartin / developpeur-pascal.fr
  5. 5. A propos de Olf Software • Depuis octobre 2001 la société de services Olf Software propose des prestations de conseil, développement et formation sur les technologies liées au web et au développement logiciel. • La société édite également des livres, des sites Internet et des logiciels. • Site web principal : https://olfsoftware.fr (c) Patrick Prémartin / developpeur-pascal.fr
  6. 6. Organisme de formation • Olf Software propose des formations en lien avec Delphi. • Des formations inter entreprises sont organisées régulièrement et annoncées sur https://se-former-a-delphi.fr/ • Des formations intra entreprise personnalisées sont faisables sur demande partout en France et en Europe. • Olf Software est un organisme de formation professionnelle enregistré en préfecture et référencé sur Datadock. Nos formations peuvent être prises en charge par les OPCA. (c) Patrick Prémartin / developpeur-pascal.fr
  7. 7. Et votre hôte pour ce webinaire • Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours, développeur web depuis NCSA Mosaic… • Prestataire et formateur à travers sa société Olf Software. • Editeur du blog https://developpeur-pascal.fr/ • MVP Embarcadero depuis octobre 2017. • Auteur d’articles, de livres, webinariste et parfois même conférencier. (c) Patrick Prémartin / developpeur-pascal.fr
  8. 8. Les versions de Delphi • Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio): • Academic : pour les établissements d’enseignement et leurs étudiants • Community Edition : gratuit pour tous, en licence commerciale limitée • Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins • Pour toutes informations sur les licences et les tarifs contactez la société Barnsten sur https://www.barnsten.com/fr/ (c) Patrick Prémartin / developpeur-pascal.fr
  9. 9. Les webinaires précédents • Je participe régulièrement à des webinaires organisés par la société Barnsten. Une page leur est consacrée sur le blog à l’adresse https://vasur.fr/webinairesdelphi • Vous y trouverez les rediffusions en vidéos lorsqu’elles sont disponibles, un PDF de mes présentations, le lien vers les sources des exemples présentés et des informations complémentaires. (c) Patrick Prémartin / developpeur-pascal.fr
  10. 10. C’est quoi une donnée ? (c) Patrick Prémartin / developpeur-pascal.fr
  11. 11. C’est quoi une donnée ? • On parle de données d’une manière générale mais il en existe plusieurs types dans différents types de stockages. • Les données peuvent être textuelles (avec ou sans encodage) ou binaires. • Les types de stockages peuvent être des flux, des variables, des fichiers ou des bases de données. (c) Patrick Prémartin / developpeur-pascal.fr
  12. 12. Les variables et flux de données • D’une façon générale on n’échange pas directement des variables ou des flux mais ils peuvent servir de support au transfert d’informations selon les technologies et composants utilisés. • Les flux (TStream et ses descendants) sont omniprésents dans la RTL et les librairies de Delphi et C++Builder. Ils permettent de basculer des données vers des zones mémoires et les traiter sans se préoccuper de leur type d’origine. (c) Patrick Prémartin / developpeur-pascal.fr
  13. 13. Les fichiers • Les fichiers sont l’un des deux conteneurs de données que l’on échange le plus. • On peut transférer directement les fichiers ou leur contenu selon la technologie et le besoin. • Le cas le plus courant d’échange de fichiers que nous utilisons tous au quotidien c’est Internet puisque ce n’est que du transfert de fichiers du serveur vers le butineur. (c) Patrick Prémartin / developpeur-pascal.fr
  14. 14. Les bases de données • Avec les fichiers ce sont les bases de données qui sont l’autre conteneur de données qui s’échange le plus ou dont on synchronise les contenus. • Certaines bases de données sont stockées sous forme de fichiers facilement échangeable (comme SQLite ou Interbase). • Certaines bases de données permettent d’elles-mêmes la réplication de leurs contenus ou la synchronisation de données en fonction des utilisateurs (Interbase avec ses change views par exemple). • Il y a aussi des bases qui ne permettent pas de se synchroniser seules. (c) Patrick Prémartin / developpeur-pascal.fr
  15. 15. Qu’allons-nous synchroniser ? • Dans les exemples de technologies que j’ai choisis de vous montrer aujourd’hui nous allons faire un peu de tout, mais pas forcément de façon automatique. • Un peu de codage ne peut pas faire de mal et permet surtout de faire ce que l’on veut quand on veut. (c) Patrick Prémartin / developpeur-pascal.fr
  16. 16. Cas pratiques et solutions (c) Patrick Prémartin / developpeur-pascal.fr
  17. 17. Cas pratique et solutions • Cas 1 : des fichiers sont créés sur un logiciel et doivent être transférés à un autre sur le même ordinateur. => Enregistrer le fichier dans un dossier, parcourir ce dossier régulièrement depuis l’autre logiciel. => Utiliser un socket en localhost entre les deux programmes. => Utiliser du client/serveur en TCP/IP entre les deux programmes. => Utiliser AppTethering qui simplifie grandement les choses (quand on n’a pas de problème avec le firewall de l’ordinateur). (c) Patrick Prémartin / developpeur-pascal.fr
  18. 18. Cas pratique et solutions • Cas 2 : des fichiers sont créés sur un logiciel et doivent être transférés à un autre logiciel ailleurs sur le même réseau local. => Utiliser du client/serveur en TCP/IP entre les deux programmes si celui devant recevoir le fichier est localisable. => Utiliser AppTethering qui simplifie grandement les choses (quand on n’a pas de problème avec le firewall des ordinateurs). (c) Patrick Prémartin / developpeur-pascal.fr
  19. 19. Cas pratique et solutions • Cas 3 : des fichiers sont créés sur un logiciel et doivent être transférés à un autre logiciel ailleurs sur Internet. => Si les deux ordinateurs peuvent dialoguer directement le plus simple est de faire du client/serveur avec WebBrocker, DataSnap ou RAD Serveur. => Si les deux ordinateurs ne peuvent pas discuter, on peut passer par un serveur intermédiaire, un envoi d’email avec pièce jointe, un transfert FTP, un envoi en POST à un site web ou un stockage du fichier sur un cloud. (c) Patrick Prémartin / developpeur-pascal.fr
  20. 20. Cas pratique et solutions • Cas 4 : des fichiers sont créés sur un logiciel et doivent être transférés à un autre logiciel sur des appareils à proximité mais sans réseau TCP/IP. => On peut utiliser des sockets en bluetooth si les deux appareils sont équipés. => On peut utiliser AppTethering en bluetooth (mais il fonctionne en BT classique donc pas sur iOS qui n’a que du BT LE). (c) Patrick Prémartin / developpeur-pascal.fr
  21. 21. Cas pratique et solutions • Cas 5 : on désire dupliquer une base de données. => Le plus simple reste de transférer la base de données en tant que fichier si on peut en conserver le format et qu’on reste sur la même base. => On peut faire un dump de la base et l’exporter/réimporter tout simplement grâce aux composants de FireDAC. L’échange des informations restant équivalent à un transfert de fichier. (c) Patrick Prémartin / developpeur-pascal.fr
  22. 22. Cas pratique et solutions • Cas 6 : on désire accéder en temps réel à une base de données distante. => Si le moteur de base de données ne le permet pas, que l’on est sur un réseau TCP/IP, le plus pratique est d’utiliser DataSnap. => On peut aussi développer une API en REST pour accéder aux données à distance si le langage utilisé des deux côtés n’est pas le même. (c) Patrick Prémartin / developpeur-pascal.fr
  23. 23. Cas pratique et solutions • Cas 7 : on désire travailler sur une base de données en conditions de mobilité (avec coupures de connexion possibles). => L’utilisation de FireDAC avec un cache des données et de leurs modifications est le plus simple si le driver de la base de données existe sur la plateforme utilisée. => Si la première solution n’est pas possible on doit passer par du transfert de bases (dump en JSON, XML ou BIN) et synchroniser ensuite les mises à jour s’il y en a, soit à la main quand elles sont compliquées, soit par transfert du journal des mises à jour. (c) Patrick Prémartin / developpeur-pascal.fr
  24. 24. Cas pratique et solutions • Cas 8 : on travaille à plusieurs sur des bases de données non centralisées (des bases locales ou des bases différentes) et on désire synchroniser ce que l’on fait. => C’est le cas le plus complexe, mais il peut se régler en pensant correctement la structure de la base de données et en mettant en place un système de réplication des mises à jour. => On peut soit passer par un serveur intermédiaire qui sert de référence pour la base, soit utiliser AppTethering pour connecter tout le monde ensemble (si on est en réseau local) et s’échanger les journaux de mises à jour des données. (c) Patrick Prémartin / developpeur-pascal.fr
  25. 25. Synchro à l’intérieur d’une fiche avec Live Bindings (c) Patrick Prémartin / developpeur-pascal.fr
  26. 26. La synchro avec Live Bindings • La technologie Live Bindings est destinée à synchroniser des données entre composants d’une même fiche. • Les Live Bindings sont utilisés soit à la main à travers un expert, soit visuellement à travers le concepteur Live Bindings présent sur le concepteur de fiches VCL et FMX. • Live Bindings fonctionne sur les propriétés de composants compatibles. (c) Patrick Prémartin / developpeur-pascal.fr
  27. 27. La synchro avec Live Bindings • Pour en savoir plus sur Live Bindings : https://vasur.fr/livebindings • Vous y trouverez des vidéos, des liens vers la documentation officielle, les excellents tutoriaux de Serge Girard et quelques articles complémentaires. (c) Patrick Prémartin / developpeur-pascal.fr
  28. 28. Synchro à l’intérieur d’une fiche avec Live Bindings Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  29. 29. Synchro sur le réseau local et en Bluetooth avec App Tethering (c) Patrick Prémartin / developpeur-pascal.fr
  30. 30. La synchro avec App Tethering • App Tethering est une technologie destinée à dialoguer simplement entre applications développées avec Delphi ou C++Builder. • La connexion s’établit soit en bluetooth (sauf iOS) soit en UDP&TCP sur le réseau local. • Le tout est géré par une série de composants présents dans l’unité System.Tether : http://docwiki.embarcadero.com/Libraries/Rio/en/System.Tether (c) Patrick Prémartin / developpeur-pascal.fr
  31. 31. La synchro avec App Tethering • Grâce à l’App Tethering on peut synchroniser des propriétés de composants entre plusieurs logiciels, échanger des messages ponctuels ou sous forme de flux et faire du RPC (Remote Procedure Call) en exécutant des actions à distance. • Plusieurs exemples d’applications utilisant l’App Tethering sont disponibles dans les exemples fournis par Embarcadero. • Un tutoriel bien conçu a été écrit en 2015 par Malcolm Groves à la sortie des composants AppTethering. Il est disponible à cette adresse : http://www.malcolmgroves.com/blog/?p=1842 (c) Patrick Prémartin / developpeur-pascal.fr
  32. 32. La synchro avec App Tethering • Chaque logiciel doit avoir un TTetheringManager qui gère le type d’accès au réseau (IP ou BT), le broadcast auprès des autres appareils visibles et les appairages. • Ensuite les logiciels peuvent avoir un ou plusieurs TTetheringAppProfile qui s’occupent des échanges d’informations et de la synchronisation des données partagées. • Le dialogue s’effectue soit automatiquement, soit par l’intermédiaire de messages passant par le manager. (c) Patrick Prémartin / developpeur-pascal.fr
  33. 33. Synchro sur le réseau local et en Bluetooth avec App Tethering Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  34. 34. Synchro via Internet avec DataSnap (c) Patrick Prémartin / developpeur-pascal.fr
  35. 35. La synchro avec DataSnap • La technologie DataSnap a été créée pour permettre d’accéder à tout type de données à distance en créant une source de données qui se connecte en réseau à un serveur, lui-même connecté à la vraie source de données. • DataSnap permet également de gérer du RPC et de faire des appels de procédures et fonctions à distance. • La documentation est disponible sur http://docwiki.embarcadero.com/RADStudio/Rio/en/Developing_DataSna p_Applications (c) Patrick Prémartin / developpeur-pascal.fr
  36. 36. La synchro avec DataSnap (c) Patrick Prémartin / developpeur-pascal.fr
  37. 37. Synchro via Internet avec DataSnap Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  38. 38. Synchro via Internet avec les composants TCP/IP (c) Patrick Prémartin / developpeur-pascal.fr
  39. 39. La synchro avec TCP/IP • Avec Delphi et C++Builder on a des composants permettant de travailler directement avec les sockets, HTTP ou REST. On peut par conséquent faire tout ce qu’on veut à la main. • Web Brocker, DataSnap et RAD Server sont disponibles pour gérer la partie serveur si on veut travailler avec les composants HTTP ou REST mais on peut aussi développer en PHP ou n’importe quel autre langage. (c) Patrick Prémartin / developpeur-pascal.fr
  40. 40. Synchro via Internet avec les composants TCP/IP Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  41. 41. Cas client : Intelli7 3.x et son cloud maison (c) Patrick Prémartin / developpeur-pascal.fr
  42. 42. Intelli7 et son cloud maison • Intelli7 est un cas intéressant pour les contraintes que l’on a mis dans le projet en terme de données et de réplication. • Le logiciel a été développé sous Delphi avec FireMonkey. • Il fonctionne sous Windows, Mac et sur tablettes pour iOS et Android. • Chaque utilisateur a des droits différents et ses propres données mais il leur est possible d’en transférer à d’autres utilisateurs. (c) Patrick Prémartin / developpeur-pascal.fr
  43. 43. Intelli7 et son cloud maison • Le logiciel travaille avec des fichiers chiffrés, INI, JSON, texte ou images. • Chaque utilisateur doit avoir accès à ses fichiers de façon instantanée (ou quasiment) et à ses mises à jour quel que soit l’appareil sur lequel il travaille. • Il a été nécessaire de verrouiller l’arborescence de stockage pour éviter les erreurs de manipulations, les virus, ransomwares et autres malwares. (c) Patrick Prémartin / developpeur-pascal.fr
  44. 44. Intelli7 et son cloud maison • La solution choisie a tout simplement été de stocker les fichiers en base de données. C’est le plus pratique pour éviter les manipulations extérieures et ça donne des possibilités de réplications selon le moteur de base choisi. • Sur les différents appareils exécutant le logiciel nous sommes partis sur des bases SQLite. • La synchronisation se fait ensuite avec un ou plusieurs serveurs selon des critères internes. (c) Patrick Prémartin / developpeur-pascal.fr
  45. 45. Intelli7 et son cloud maison • Je parle de réplication mais en fait c’est plus de la synchronisation de modifications gérée à travers une structure de base de données spécifique et une API gérée côté Delphi et côté PHP sur les serveurs. • Nous avons donc créé un mini cloud maison pour chaque utilisateur, synchronisé en temps réel entre tous les appareils du même utilisateur et son serveur de référence. • Les mêmes fonctionnalités d’accès et d’édition des fichiers dans les « clouds » sont disponibles sous Delphi et en PHP. (c) Patrick Prémartin / developpeur-pascal.fr
  46. 46. Intelli7 et son cloud maison • Les fichiers sources du programme ne sont pas diffusables. Une version indépendante de la librairie gérant ce cloud maison est envisagée. • Pour le moment je ne peux que vous montrer comment tout ceci s’articule à travers une démonstration. (c) Patrick Prémartin / developpeur-pascal.fr
  47. 47. Cas client : Intelli7 3.x et son cloud maison Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  48. 48. Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  49. 49. Conclusion • J’ai choisi quelques techniques permettant de faire des échanges d’informations et de synchroniser des choses entre logiciels à partir de fonctionnalités fournies dans Delphi. • Ce n’est pas un choix exhaustif. • J’aurais aussi pu parler des fonctions de cache et de journalisation incluses dans les composants FireDAC, de RAD Server, d’Interbase et ses change views, de TMS Echo, de TMS RemoteDB ou de plein d’autres solutions pour échanger et synchroniser des données. (c) Patrick Prémartin / developpeur-pascal.fr
  50. 50. Conclusion • Ce webinaire et les sources des démos seront rapidement mis à disposition sur le blog https://developpeur-pascal.fr • Les prochains événements en live : => les meetups et présentations continuent en 2019 • Les prochains événements en ligne : => les dates et sujets seront annoncés début janvier • Surveillez vos emails et la page https://www.barnsten.com/fr/events (c) Patrick Prémartin / developpeur-pascal.fr
  51. 51. Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr

×