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

Accès aux données Discussion :

[2.0][C#][SQL Server] Synchronisation des données SQL Server -> appli cliente


Sujet :

Accès aux données

  1. #1
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut [2.0][C#][SQL Server] Synchronisation des données SQL Server -> appli cliente
    Bonjour,

    Je débute en .Net et ma question risque donc d'être assez saugrenue.

    Contexte:
    - une application (Winforms) à développer en C#
    - une base de données SQL Server 2005

    Ce qu'on me demande de faire :
    - à chaque modification des données dans table particulière (ajout, suppression, modification), répercuter les changements "en temps réel" sur tous les clients

    Mes questions:
    1) est-ce que c'est possible ?
    2) si oui, comment ?
    3) si non, quelles sont les solutions alternatives ?
    4) est-ce que j'ai posté dans le bon forum ? (si non, déplacez le sujet)

    Merci d'avance pour vos réponses.

  2. #2
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    Hummm, je ne vois pas d'autres solutions performante que d'ecrire un programme serveur qui gere tes MAJ. En meme temps que tes MAJ, il se chargera d'avertir les clients des modifications effectuees, mais c'est loin d'etre qq chose de simple qui peut se decrire en 3 lignes et ecrire un programme serveur n'est pas forcement le meilleur moyen de debuter avec un langage...
    Comme alternative, tu peux envisager sur chaque post client un petit 'service' qui scanne une table en permanence dans laquelle tu insere une ligne decrivant ce qu'il y a a faire a chacune de tes modifications. Les MAJ de ta base se feront alors dans une transaction qui ecrira dans cette table et fera tes MAJ.

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par fred777888999
    Hummm, je ne vois pas d'autres solutions performante que d'ecrire un programme serveur qui gere tes MAJ. En meme temps que tes MAJ, il se chargera d'avertir les clients des modifications effectuees,
    On avait pensé à cette solution.

    Citation Envoyé par fred777888999
    mais c'est loin d'etre qq chose de simple qui peut se decrire en 3 lignes
    C'est aussi pour cela que l'on cherche à savoir s'il n'existerait pas une solution plus simple.


    Citation Envoyé par fred777888999
    et ecrire un programme serveur n'est pas forcement le meilleur moyen de debuter avec un langage...
    En plus...


    .

    Citation Envoyé par fred777888999
    Comme alternative, tu peux envisager sur chaque post client un petit 'service' qui scanne une table en permanence dans laquelle tu insere une ligne decrivant ce qu'il y a a faire a chacune de tes modifications. Les MAJ de ta base se feront alors dans une transaction qui ecrira dans cette table et fera tes MAJ.
    Pour résumer ton idée:
    1) coté serveur: une table spéciale contient tous les changements survenus sur les données.
    2) coté client: on scanne cette table à intervalles réguliers pour savoir ce qui a changé

    On avait aussi pensé à cette solution. Le problème, c'est que les scans réguliers de la table risquent de surcharger le réseau entre BDD/appli.

    Plutôt que d'utiliser des transactions pour mettre à jour la table contenant les changements, on avait pensé à des triggers AFTER INSERT/DELETE/UPDATE, plus propres et plus rapides.


    Je te remercie pour ta réponse. Ca rejoint ce à quoi on avait pensé et confirme nos craintes: il va falloir développer des modules supplémentaires...

    Pour l'instant, je ne mets pas ce sujet en "Résolu", au cas où quelqu'un aurait une autre solution (ou connaîtrait des composants spécifiques pour ce que l'on cherche à mettre en place. J'ai trouvé un composant semblant répondre au besoin... mais pour Oracle ). De la réponse à ma question de départ dépendra le choix d'une partie de l'architecture, donc ce n'est pas une décision que l'on souhaite faire à la légère...

  4. #4
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Renseignes toi sur le caching proactif. Sans certitude mais tu y trouveras peut être des voies...

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Ditch
    Renseignes toi sur le caching proactif.
    Ca n'a pas l'air de correspondre au besoin (d'apès ce que j'ai compris, le caching proactif permet de trouver un compromis entre calculer certaines données à chaque fois et perdre en performance ou bien stocker les données calculées, avec le risque de travailler avec des données obsolètes)

    Citation Envoyé par Ditch
    Sans certitude mais tu y trouveras peut être des voies...
    Quelqu'un s'y connait en Notification Services ? Ca a l'air bien ce truc.

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par pcaboche
    Quelqu'un s'y connait en Notification Services ? Ca a l'air bien ce truc.
    C'est peut-être ce qu'il me faut, à en juger par ce sujet:
    http://www.developpez.net/forums/sho...d.php?t=213752

    Reste à trouver comment le Notification Service peut servir pour avertir une application cliente.

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par pcaboche
    Ce qu'on me demande de faire :
    - à chaque modification des données dans table particulière (ajout, suppression, modification), répercuter les changements "en temps réel" sur tous les clients
    Pourquoi ne pas partager ta table particulière pour tous les clients ?
    Tu peux très bien faire une vue sur les bases de chaque client qui va récupérer les données dans cette table, tout simplement.

    Exemple
    Base de données non client : (BDNONCLIENT)
    Contient la TableA

    Base de données Client A : (BDCLIENTA)
    Vue qui pointe sur la TableA dans base de données BDNONCLIENT
    ...

    Base de données Client B : (BDCLIENTB)
    Vue qui pointe sur la TableA dans base de données BDNONCLIENT
    ...

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Kelpan
    Pourquoi ne pas partager ta table particulière pour tous les clients ?
    Tu peux très bien faire une vue sur les bases de chaque client qui va récupérer les données dans cette table, tout simplement.
    Rien à voir: c'est au niveau de l'affichage que ça se passe: si le contenu de la table en question est modifié, il faut rafraichir l'affichage sur tous les postes clients.

Discussions similaires

  1. Synchronisation des données d'Sqlite vers Sql Server
    Par blomkvist dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 05/01/2016, 10h18
  2. Réponses: 11
    Dernier message: 26/12/2006, 19h05
  3. Réponses: 5
    Dernier message: 12/12/2006, 16h24
  4. Synchronisation des Données avec SQL Server 2005
    Par attouchi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/07/2006, 16h14
  5. Rafraichissement des données avec ADOConnection -SQL Server
    Par newfsch dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/01/2006, 21h48

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