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 :

Quels composants utiliser pour une application client/serveur (mySql) ?


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut Quels composants utiliser pour une application client/serveur (mySql) ?
    Bonjour,

    J'ai tenté d'utiliser les composants BDE (TTable...) pour une appli client/serveur comme je l'ai fait pour une base Access. Mais le fonctionnement n'est plus possible : par exemple, j'utilise plusieurs TTable pointant sur la même table, ce qui ne parait pas logique mais qui est indispensable car si j'ai bien compris, une table pointe sur un enregistrement, et dans mon appli (progiciel) plusieurs utilisateurs peuvent accèder aux clients, et les mises à jours ne sont pas pris en compte (il faut à chaque fois fermer et ouvrir la TTable pour mettre à jour les modifications des autres utilsiateurs).

    Comment faire pour créer une appli Client/Serveur ? Quels composants utiliser ? Dois-je me tourner vers une solution payante ? Si oui laquelle ?

    J'utilise CodeGear 2007 (en fait, Builder c++ 2007 mais je n'ai pas eu de réponses sur le forum à ce sujet)

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    pour moi c'est un comportement normal

    il faut actualiser ton écran pour voir les modifications effectuées

    mais tu dois avoir un Table.Refresh...je sais plus ça fait très longtemps que je n'utilise plus ces composants
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    Delphi 2007 MySQL

    Dans Delphi 2007, il n'y a pas des composants ADO ou des composants DBExpress qui sont spécialement dédié MySQL ?

    Sinon même avec Paradox, pour un bon fonctionnement multi-client (car on ne pouvait pas parler de serveur vraiment), il fallait ouvrir et fermer les tables ...

    maintenant est-il nécessaire d'ouvrir toute la table, pour n'afficher qu'une centaine de ligne ... repense ton application en SQL ... cela optimisera la quantité de données passant sur le réseau ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Si mais si je les utilise telle quelle, j'ai une appli utilisant une bd mysql mais mono utilisateur. Lors d'une connexion, j'ai une session X refletant ma base de données à un instant T. Si à T+1 un autre utilisateur ouvre une session Y, l'utilisateur X ne verra pas les modifications faites par l'utilisateur Y, à moins de quitter le logiciel et l'ouvrir, ou d'utiliser des Refresh().

    Utiliser des Refresh() peut fonctionner mais quand le faire, ou le faire ? A mon avis, il faut créer un serveur qui s'occupe des connexions entrantes et sortantes, et des appli clients qui se connecte au serveur, mais dans ce cas, je me demande s'il n'est pas préférable de partir sur du php qui me semble plus adapté (ou windev qui propose par défaut une gestion client/serveur fonctionnel). Ne connaissant pas le fonctionnement d'appli client/serveur, je ne sais pas quel paramètres prendre en compte et comment réaliser un serveur fonctionnel (il y'aura des 50aines de clients connectés). Pouvez vous me donner des conseils à ce sujet ?

    Merci d'avance.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    PHP te donnera exactement le même résultat (l'autre je ne sais pas ce que c'est ), tu lances un SQL à un moment T qui te renvoie une ensemble de données, et il n'y a qu'en executant de nouveau la requête que tu peux mettre à jour le résultat.

    ce que tu désires c'est que le serveur informe tous ses clients de chaque mise à jour de tous les autres clients...ou dans une version optimisée, tous les clients ayant ouvert une table, des mises à jours de cette table par tous les autres clients. Mais je ne pense pas que ça existe, et je ne pense pas que ce soit utile.

    Edit: en même temps ça pourrait être amusant de le faire un P2P Les clients enregistrent leur @IP dans une table au lancement de l'application, et quand ils font une mise à jour ils informent leurs autres directement de client à client...why not. Le tout en multicast évidemment
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre éclairé

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 617
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Dans Delphi 2007, il n'y a pas des composants ADO ou des composants DBExpress qui sont spécialement dédié MySQL ?
    ADO ajoute une couche un peu lourde et et je n'ai pas trouvé dbExpress très concluant.
    Les choses ont peut être changé avec les dernières versions, mais le composant dbExpress clonait la connexion à chaque requête, ce qui obligeait à des pirouettes pour, par exemple, récupérer le LAST_INSERT_ID.

    Pour mois le meilleur ensemble de composants pour mySQL reste ZeosLib.
    Un peu lourd à installer (livré en sources), ils permettent un accès natif qui n'oblige, à être livré avec l'EXE, aucune autre DLL que libmysql.dll

    L'autre intérêt de ces composant, par rapport à d'autres composant d'accès natif à mySQL, c'est que, comme dbExpress, on peut les utiliser pour se connecter à d'autres bases de données comme Firebird, SQLite ou Postgress.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Merci de vos réposnes. Je ne coche pas l'onglet [résolu] en vue d'autres réponses...

  8. #8
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    pour en revenir à l'idée que ce n'est pas une bonne idée...prenons un exemple bête

    j'ai une DBGrid qui m'affiche le stock d'une PME

    comme c'est la première informatisation de la compta, on recrute un pool de gens pour saisir les factures 2007, disons 5 personnes

    chaque personne prend disons 5 seconde pour saisir un article dans une facture, et comme mon système et bien foutu, je ne peux pas facturer un article qui n'est pas en stock...on a donc alimenté le stock, et à chaque fois qu'un article est ajouté à la facture le stock diminue.

    ben ma DBGrid va s'actualiser toutes les secondes pour refléter la modification du sock, c'est chouette non ? Bon ça va pas être évident de cliquer entre deux mises à jour, mais ça a un petit côté ludique en même temps
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Par défaut connection my sql
    bonjour

    existe il un composant qui permet de se connecter a mysql sans passer par odbc

    une connection direct si je peux dire


    merci
    a+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 165
    Par défaut
    j ai repondu la meme chose dans un autre sujet (sorry)...

    Il existe les composants mySQLDAC mais qui sont peut etre payants (faut verifier si ce n est que pour une utilisation commerciale ou non ?).

  11. #11
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Par défaut
    merci

    ce n est pas pour une utilisation commercial..

    Effectivement tu avais dejas repondu dans un autre post mais impossible de mettre la main dessus

    a+

  12. #12
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    il existe une suite de composants payants disponible à cette adresse :http://www.crlab.com/mydac/. Ils sont payants, mais tu peux les tester durant 30 jours mais ils sont puissants.

    Quelle méthode utilises-tu Paul TOTH pour réactualiser ton grid régulièrement ? Si tu utilises un timer ou qq chose comme ça, le comportement revient à celui d'un client/serveur non ? Moi je ne peux pas faire une ré actualisation d'un grid, étant donné que j'ai 70 tables. Ce qui revient à réaliser une appli serveur qui met à jour les données qui sont modifiés. Si mon raisonnement est correct, pour le type d'application que je dois réaliser, je n'ai pas le temps développer un serveur, le tester, mon choix serait de développer en php.

    Merci de vos réponses

  13. #13
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par whitespirit Voir le message
    il existe une suite de composants payants disponible à cette adresse :http://www.crlab.com/mydac/. Ils sont payants, mais tu peux les tester durant 30 jours mais ils sont puissants.

    Quelle méthode utilises-tu Paul TOTH pour réactualiser ton grid régulièrement ? Si tu utilises un timer ou qq chose comme ça, le comportement revient à celui d'un client/serveur non ? Moi je ne peux pas faire une ré actualisation d'un grid, étant donné que j'ai 70 tables. Ce qui revient à réaliser une appli serveur qui met à jour les données qui sont modifiés. Si mon raisonnement est correct, pour le type d'application que je dois réaliser, je n'ai pas le temps développer un serveur, le tester, mon choix serait de développer en php.

    Merci de vos réponses
    je n'actualise pas mes DBGrid ! à mes yeux ça ne sert à rien

    soit l'utilisateur est inactif devant son écran et dans ce cas, on se fiche de la pertinence des infos affichées, soit il travaille à l'écran et il y a peu de chance que les données restent dans l'état très longtemps.

    j'ai gardé une habitude de mes années de programmation sur AS/400 ou les données sont affichées en liste non modifiable (un peu à la façon du web d'ailleurs). Quand tu cliques sur une ligne, tu passes sur un écran d'édition (ou d'affichage) d'enregistrement, et au retour la liste est mise à jour.

    Si tu regardes bien, ce n'est pas très éloigné de ce que tu trouves sur ce site
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel langage utiliser pour une application web ?
    Par Blooster dans le forum Jeux web
    Réponses: 2
    Dernier message: 09/01/2014, 14h13
  2. Quel technologie utiliser pour une application?
    Par nesswaw dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 29/01/2011, 21h34
  3. Quelle API utiliser pour une appli client/serveur ?
    Par ManusDei dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 2
    Dernier message: 14/10/2010, 08h00
  4. Réponses: 13
    Dernier message: 18/06/2009, 17h43
  5. Réponses: 2
    Dernier message: 30/09/2008, 02h43

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