IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Client Serveur et mode déconnecté ( poste nomade )


Sujet :

Bases de données Delphi

  1. #1
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut Client Serveur et mode déconnecté ( poste nomade )
    Bonjour,

    Je travaille sur une application qui doit gérer des données de 11 tables qui ne contiendront pas énormément de données, la plus grande ce sera de l'ordre de quelques milliers de lignes, c'est donc une petite BD.

    Pour l'application desktop, pas de problème, on fait cela en client serveur pour que quelques postes clients ( < 5 ) puissent accèder à cette BD.

    La ou cela commence à se compliquer, c'est pour l'application mobile, on doit faire une version mobile de cette application qui pourrait fonctionner même sans connexion à la BD, j'envisage dans un premier de temps d'utiliser le mode briefcase avec ClientDataSet, je me documente sur le sujet et cela peut se résumer par on charge le ClientDataSet depuis la BD ensuite, en mode déconnecté, le ClientDataSet sauvegarde cela dans un fichier ( format binaire ou XML ) et lorsque l'application mobile retrouve la connection avec la BD, on fait un ApplyUpdate pour sauvegarder le delta dans la base ( à voir ce qu'il faut faire si la BD est crée depuis le poste mobile sans avoir eu un accès au préalable à la BD ).

    Il nous faut donc générer un fichier XML par table ? ce qui est relativement lourd, c'est vrai que ce sont des petites tables et comme il n'y a que 11 tables, pourquoi pas...

    Et quid des relations entre tables ? Il y a quelques intégrités référentielles ( il y a quelques clés étrangères sur certaine tables ), elles se feront lors de l'ApplyUpdate ou alors au niveau du ClientDataSet, dans ce cas, on doit utiliser un ClientDataSet par table ?

    Je n'ai aucune experience du mode briefcase, cela semble être une solution pour les petites BD ( comme la notre ) et sinon, il y a la solution de la réplication mais entre SGDB hétérogène, car sur le serveur il y a une base FireBird ou MS-SQL et pour les postes mobiles, on utilise SQLite vu que pour l'instant, FireBird ne fonctionne pas sur iOS et Android ( idem pour MS-SQL ).

    Voila, qu'en pensez vous ? Avez vous des conseils ou des remarques ?
    Merci
    Thierry

  2. #2
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Bonjour,

    Personne n'a d'experience avec TCLientDataSet et le mode briefcase ? ( même minime... )

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Jamais utilisé cette techno mais pour un problème similaire, j'ai utilisé une base locale Firebird embeded pour stocker une mini-copie de la base du serveur.
    Et l'envoi vers le serveur est fait à partir de ces données.

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Jamais utilisé cette techno mais pour un problème similaire, j'ai utilisé une base locale Firebird embeded pour stocker une mini-copie de la base du serveur.
    Et l'envoi vers le serveur est fait à partir de ces données.
    Sur quel OS pour la base Firebird embeded ? Je suppose que ce n'est pas sur Android ou iOS ?

    J'ai du mal à avoir des infos sur Firebird Embeded pour Android/iOS, apparement c'est prévu, mais pour quand ? La version 3.0 ?

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    pour Android et IOS, pas encore.
    Mais la solution alternative pourrait être SQLite.

    http://docwiki.embarcadero.com/RADSt...OS_et_Android)

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 110
    Points : 41 231
    Points
    41 231
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Il y a aussi IBGO je pense
    il faut savoir que les composants Firedac utilise SQLite pour toutes ses FDMemorytable

    mais ne serait-il pas plus sage d'envisager une programmation multi-tiers (DataSnap) ?

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    pour Android et IOS, pas encore.
    Mais la solution alternative pourrait être SQLite.

    http://docwiki.embarcadero.com/RADSt...OS_et_Android)
    Oui, on utilise SQLite et cela donne matière à réflexion pour la mise à jour de la BD sur le serveur ( MS-SQL ou Firebird ) lorsque le poste nomade est de nouveau connecté au serveur.

    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Il y a aussi IBGO je pense
    il faut savoir que les composants Firedac utilise SQLite pour toutes ses FDMemorytable

    mais ne serait-il pas plus sage d'envisager une programmation multi-tiers (DataSnap) ?
    Oui Datasnap est une bonne solution qu'on envisage aussi mais le problème reste entier en ce qui concerne le mode déconnecté, lorsque le poste nomade n'a pas de connexion au serveur, il doit quant même être fonctionnel d'ou l'utilité d'enregistrer les données dans une base locale mais ensuite, lorsqu'il y a re connection au serveur, il faut mettre à jour la base de données et que celle-ci soit gérée par datasnap n'apporte aucune aide, non ?
    Je n'ai pas encore utilisé Datasnap et je ne pense pas qu'il y ait des mécanismes de réplication pour gérer le mode déconnecté ( ? )

    C'est pas un problème simple à résoudre même si je le simplifie en partant du principe qu'il y a qu'un poste nomade.

    En fait, le poste nomade met à jour sa base locale à partir du serveur, ensuite, pendant la déconnection, on journalise toutes les modifications sur cette base locale ( journalisé dans une table ) et lors de la reconnecton au serveur, on n'a plus qu'à appliquer à la BD du serveur tous ce qui a été journalisé.

  8. #8
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut Clientdataset seul
    Bonjour,
    pour le stockage local sur mobile, j'ai choisi le clientdataset seul pour les petites tables. En effet, la commande savetofile et loadfromfile fonctionne bien sur les mobiles.
    L’inconvénient c'est qu'on ne faite pas de requète sql sur ce type de table.
    Pour dialoguer avec le serveur j'ai choisi TCPServeur et tcpClient avec Indy.
    je pensais faire un Clientdataset.savetostream sur le serveur et recéper les datas avec un Clientdataset.loadfromstream sur le mobile. Mais ce qui fonctionne super bien de Windows à Windows, ne fonctionne pas de Windows à Android. J'ai écris une autre méthode que je n'ai pas encore tester.

    Sinon la communauté Lyonnaise que je rencontre de temps à autre, a opté dans son ensemble, par la création d'un web service. et la lecture des données rest ou json sur le mobile.
    Pour l'instant ma solution n'est pas fiable dans l'acquisition des données.
    Pour avoir du sql, comme il a été dit par SergioMastert, IBGO sur mobile me parait un bon choix.

    Il faut aussi regarder pour ceux qui ont XE7 SME (services de mobilité d'entrepris -
    )

    Cordialement

Discussions similaires

  1. Client / Serveur en mode TCP
    Par bza88 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 30/06/2013, 19h56
  2. Tester Connexion Serveur en Mode Déconnecter
    Par mactwist69 dans le forum VB.NET
    Réponses: 9
    Dernier message: 26/02/2010, 09h29
  3. Application client/serveur sur un seul poste
    Par Just-Soft dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/09/2008, 09h45
  4. comment avoir un réseau client/serveur sur la meme poste?
    Par rebhihabib dans le forum Développement
    Réponses: 9
    Dernier message: 29/02/2008, 17h28
  5. Réponses: 1
    Dernier message: 17/01/2006, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo