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

Windows Forms Discussion :

Trigger et C#


Sujet :

Windows Forms

  1. #1
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut Trigger et C#
    Bonjour à tous

    Je me posais la question suivante :

    Avec SQL Server, on peut créer des triggers en C#... ok, cela me va comme information.

    Maintenant ma question : Est-il possible avec SQLServer ou une autre base de données d'être "notifié" d'un changement ayant eu lieu dans la base sans que le code de traitement soit dans la base ?

    En clair, je voudrais savoir si quelque chose se rapprochant d'un truc genre :

    IConnection myDb = ...
    myDb.OnCreate+=...


    Evidemment, je pourrais mettre un trigger en C# dans ma base et appelé via remoting ou socket un programme.. mais je me demandais juste si il était possible d'externaliser un tel traitement...

    Merci à tous
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Hello,

    il me semble en tous cas qu'Oracle propose depuis quelques versions un système de notification. Mais je ne sais pas si les providers pour .Net la wrappent.
    ಠ_ಠ

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Avec le SQL CLR, tu peux à peu près tout faire en baissant un peu le niveau d'autorisation d'exécution.

    Notamment, le niveau "intermédiaire" te permet de faire des appel web service sortant depuis le SQL CLR. (et des appels socket sortant en général).

    Donc, il t'est parfaitement possible de coupler tes triggers avec une couche de "remontée" d'évènements.

    Ceci dit, AMHA, cela n'a de sens qui si tu veux monitorer une base à laquelle accède des applications sur lesquelles tu n'as pas la main.

    Dans le cas contraire (maîtrise des applications qui accèdent à la base) autant mettre la DAL sur un tier séparé et remonter les événements depuis la DAL.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ce que tu veux dire avec le tier, c'est que finalement, le DAL serait une application ou un module levant lui les evenements... Ce qui voudrait dire que toutes applications voulant acceder à ma base l'utiliserait plutot que d'attaquer directos la base...

    Et effectivement, dans ce cas, ce n'est pas la base SQL qui leverait l'event mais plutot le DAL qui en fonction de la méthode appellée, lèverait un event aux applications abonnées

    C'est plutot interessant comme idée !!! Par contre, ca demande à faire un "petit" effort supplémentaire pour abstraire le DAL de l'application et lui rajouter de telles fonctionnalités. Ca ne me dérange pas de faire celà, mais c'est vrai que si une application avait pu directement s'abonner à des Trigger, event provenant d'une base SQL Server, ca m'aurait éviter ce développement complémentaire.

    Merci
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    ce que tu veux dire avec le tier, c'est que finalement, le DAL serait une application ou un module levant lui les evenements... Ce qui voudrait dire que toutes applications voulant acceder à ma base l'utiliserait plutot que d'attaquer directos la base...
    Cela suppose en effet que :

    - si plusieurs appli, elles utilisent une DAL unique
    - dépoter la DAL sur un tier séparé.

    Et effectivement, dans ce cas, ce n'est pas la base SQL qui leverait l'event mais plutot le DAL qui en fonction de la méthode appellée, lèverait un event aux applications abonnées
    C'est une technique assez classique dès l'instant où les clients d'une appli doivent être notifiés en temps réel de modifications émises par un autre client (cas type : appli de planning) et ça évite les trucs plus ou moins sale du type polling toutes les x-minutes, etc ....


    C'est plutot interessant comme idée !!! Par contre, ca demande à faire un "petit" effort supplémentaire pour abstraire le DAL de l'application et lui rajouter de telles fonctionnalités.
    Si ton appli est faite proprement en n-layers, le passage 3-tier n'est pas un gros boulot, l'ajout des méthodes de monitoring non plus.

    Si c'est conçu "quick en dirty" (style accés direct à la DB depuis le code des GUIs comme on en voit hélas pas mal d'exemples ici), c'est plus important comme modif.

    Ca ne me dérange pas de faire celà, mais c'est vrai que si une application avait pu directement s'abonner à des Trigger, event provenant d'une base SQL Server, ca m'aurait éviter ce développement complémentaire.
    Comme je l'ai écrit supra, c'est aussi possible, à condition de baisser un peu le niveau de sécu par défaut. Et c'est la seule solution si tu veux monitorer des modif venant d'appli que tu ne peux pas modifier.

    Dans ce cas je mettrais :

    - un webservice recevant les notifications de la base
    - ce webservice exposerait par ailleurs un contrat duplex WCF permettant aux appli se connectant de recevoir les notifications.

    C'est plus lourd que de "remoter" une DAL bien faite.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Notamment, le niveau "intermédiaire" te permet de faire des appel web service sortant depuis le SQL CLR. (et des appels socket sortant en général).
    J'ai déjà vu dans des projets des triggers qui faisaient des appels web services à chaque modif d'une table donnée, le tout sans désynchronisation ; assez peu étonnamment, les perfs se croutent lamentablement et les DBA pleurent
    ಠ_ಠ

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Guulh Voir le message
    J'ai déjà vu dans des projets des triggers qui faisaient des appels web services à chaque modif d'une table donnée, le tout sans désynchronisation ; assez peu étonnamment, les perfs se croutent lamentablement et les DBA pleurent
    Ben, un appel synchro, vaut mieux l'éviter

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    L'application en question n'est pas encore développée.. donc, pour le basculement d'un mode à l'autre, pas de soucis de ce coté là.

    Ma question, et vous y avez brillamment répondue, avait pour but de m'indiquer ce qu'il était possible de faire et quels étaient les moyens existants pour y arriver...

    Et il est clair que moins je fais de code coté SQL Server mieux je me porte. Donc, je crois que je vais retenir la solution DAL et que je ferais ainsi quand j'aurais basculé sur la phase de développement de l'application.

    Thanks guys
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

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

Discussions similaires

  1. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 18h32
  2. [Interbase6] Trigger : Post_event
    Par Andry dans le forum InterBase
    Réponses: 2
    Dernier message: 13/05/2003, 09h27
  3. Trigger ??
    Par XDeus dans le forum Développement
    Réponses: 6
    Dernier message: 31/03/2003, 09h44
  4. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 12h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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