SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Des solutions de
synchronisation de données
Webinaire du 18 décembre 2018
(c) Patrick Prémartin / developpeur-pascal.fr
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
Introduction
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
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
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
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
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
C’est quoi une donnée ?
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
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
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
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
Cas pratiques
et solutions
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
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
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
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
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
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
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
Synchro à l’intérieur d’une
fiche avec Live Bindings
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
Synchro à l’intérieur d’une
fiche avec Live Bindings
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Synchro sur le réseau local et
en Bluetooth avec App Tethering
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
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
Synchro sur le réseau local et
en Bluetooth avec App Tethering
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Synchro via Internet
avec DataSnap
(c) Patrick Prémartin / developpeur-pascal.fr
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
La synchro avec DataSnap
(c) Patrick Prémartin / developpeur-pascal.fr
Synchro via Internet
avec DataSnap
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Synchro via Internet avec
les composants TCP/IP
(c) Patrick Prémartin / developpeur-pascal.fr
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
Synchro via Internet avec
les composants TCP/IP
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Cas client : Intelli7 3.x
et son cloud maison
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
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
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
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
Cas client : Intelli7 3.x
et son cloud maison
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
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
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
Questions / réponses
(c) Patrick Prémartin / developpeur-pascal.fr

Weitere ähnliche Inhalte

Was ist angesagt?

Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violenceFrancois Zaninotto
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
 
Mandriva Present Task Oriented Desktop
Mandriva Present Task Oriented DesktopMandriva Present Task Oriented Desktop
Mandriva Present Task Oriented DesktopInria
 
Reprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesReprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesGeeks Anonymes
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
DEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETDEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETTaoufik AIT HSAIN
 
Mercurial - PHPQuebec - December 08
Mercurial - PHPQuebec - December 08Mercurial - PHPQuebec - December 08
Mercurial - PHPQuebec - December 08mdupuis
 

Was ist angesagt? (13)

Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Cloud,webmail
Cloud,webmailCloud,webmail
Cloud,webmail
 
Cloud.pratique.2018
Cloud.pratique.2018Cloud.pratique.2018
Cloud.pratique.2018
 
Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violence
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Mandriva Present Task Oriented Desktop
Mandriva Present Task Oriented DesktopMandriva Present Task Oriented Desktop
Mandriva Present Task Oriented Desktop
 
Adaptative streaming : enjeux, panorama, principes et difficultés
Adaptative streaming : enjeux, panorama, principes et difficultésAdaptative streaming : enjeux, panorama, principes et difficultés
Adaptative streaming : enjeux, panorama, principes et difficultés
 
Reprendre le contrôle de ses données
Reprendre le contrôle de ses donnéesReprendre le contrôle de ses données
Reprendre le contrôle de ses données
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
DEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETDEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLET
 
Mercurial - PHPQuebec - December 08
Mercurial - PHPQuebec - December 08Mercurial - PHPQuebec - December 08
Mercurial - PHPQuebec - December 08
 

Ähnlich wie Des solutions de synchronisation de données

Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilespprem
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMXpprem
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagespprem
 
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...Groupe D.FI
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphipprem
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXpprem
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformepprem
 
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande BertrandCaron4
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Patricia NENZI
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Patricia NENZI
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Patricia NENZI
 
BigData_Technologies_PL.pdf
BigData_Technologies_PL.pdfBigData_Technologies_PL.pdf
BigData_Technologies_PL.pdfMissaouiWissal
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
IPv6 news-fr-20121009
IPv6 news-fr-20121009IPv6 news-fr-20121009
IPv6 news-fr-20121009Bart Hanssens
 

Ähnlich wie Des solutions de synchronisation de données (20)

Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'images
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
 
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphi
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
 
Introduction à HDFS
Introduction à HDFSIntroduction à HDFS
Introduction à HDFS
 
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17
 
Computerland c cloud-2013oct17
Computerland c cloud-2013oct17Computerland c cloud-2013oct17
Computerland c cloud-2013oct17
 
BigData_Technologies_PL.pdf
BigData_Technologies_PL.pdfBigData_Technologies_PL.pdf
BigData_Technologies_PL.pdf
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
IPv6 news-fr-20121009
IPv6 news-fr-20121009IPv6 news-fr-20121009
IPv6 news-fr-20121009
 

Mehr von pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéopprem
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !pprem
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourpprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphipprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphipprem
 
Créer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composantCréer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composantpprem
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

Mehr von pprem (20)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
Créer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composantCréer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composant
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Des solutions de synchronisation de données

  • 1. Des solutions de synchronisation de données Webinaire du 18 décembre 2018 (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. Introduction (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. 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. 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. 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. 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. C’est quoi une donnée ? (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. 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. 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. 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. Cas pratiques et solutions (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. 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. 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. 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. 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. 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. 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. Synchro à l’intérieur d’une fiche avec Live Bindings (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. Synchro à l’intérieur d’une fiche avec Live Bindings Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 29. Synchro sur le réseau local et en Bluetooth avec App Tethering (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. 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. Synchro sur le réseau local et en Bluetooth avec App Tethering Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 34. Synchro via Internet avec DataSnap (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. La synchro avec DataSnap (c) Patrick Prémartin / developpeur-pascal.fr
  • 37. Synchro via Internet avec DataSnap Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 38. Synchro via Internet avec les composants TCP/IP (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. Synchro via Internet avec les composants TCP/IP Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 41. Cas client : Intelli7 3.x et son cloud maison (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. 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. 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. 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. Cas client : Intelli7 3.x et son cloud maison Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 48. Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 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. 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. Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr