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

Oracle Discussion :

Transaction autonomes pour une appli web en .NET


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut Transaction autonomes pour une appli web en .NET
    Salut à tous,

    Je suis assez novice dans le monde Oracle et je développe actuellement une appli Web en 3-tiers, ou le back end qui accède à Oracle est un Web Service (donc sans contexte).

    Voilà ce que je dois faire :

    1. L'utilisateur entre et données et les soumet. Les données sont envoyées au Web service qui se connecte à Oracle.

    2. Une transaction débute, plein de calculs sont faits dans la base, et des données insérées.

    3. Il y a un retour à l'utilisateur : un écran affiche la simulation, et demande si l'utilisateur est vraiment sur de chez sur qu'il veut valider cette simulation.

    4. Si l'utilisateur dit OUI alors la transaction est commitée. Si il dit NON, elle est rollbackée.

    On m'a parlé d'utiliser des transactions autonomes pour gérer tout ça, car cela permet justement d'avoir une perte du contexte. Mais voilà, je ne trouve rien à ce sujet, ni sur la manière d'implémenter ce que je dis plus haut.

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    dans ce cas, je ne vois pas l'intérêt du tout... les transactions autonomes peuvent être intéressante si le trigger d'une table lance une procédure qui manipule les données de cette même table par exemple... mais sinon...

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Et donc dans mon cas comment gèrerais-tu le retour à l'utilisateur tout en gardant la transaction en cours ?

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je ne connais pas .net

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Une transaction reste active tant qu'elle n'est pas validée par COMMIT ou annulée par ROLLBACK.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par SheikYerbouti
    Une transaction reste active tant qu'elle n'est pas validée par COMMIT ou annulée par ROLLBACK.
    Mais (Arretez moi si je me trompe) un Web Service n'a pas de persistence, et dès qu'on revient à l'utilisateur notre transaction est perdue. Donc on ne peut pas ensuite la commiter ou la rollbacker.

  7. #7
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    t'es-tu renseigné sur le forum .NET ?
    je suppose que tu n'es pas le premier à faire du Web Service sur base Oracle...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Yep, je pense que je vais poser ma question là-bas aussi

  9. #9
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Parce que les transaction autonomes ne vont pas résoudre ton problème de persistance... tu devras quand même commiter ou rollbacker la transaction avant de rendre la main à l'utilisateur.
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  10. #10
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    La technique dont on m'a parlé consiste en effet à séparer ma transaction en 2 transactions autonomes, et la 1ere est commitée, juste avant le retour à l'utilisateur. Et on garde l'état de ce qu'on a fait dans une table de log.

    Enfin c'est assez flou quoi ...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Ok en fait le truc c'est que les transactions autonomes (autonomous transaction) ont un autre sens en oracle , il s'agit de transactions autonomes imbriquées dans une transaction (pour simplifier)

    Maintenant il est clair que si ton web service ne gere pas de contexte, le seul moyen de faire ce que tu veux est de procéder à un "rollback/commit applicatif" .

    Par exemple sauvegarder les anciennes valeurs avant l action de l utilisateur dans des tables de sauvegarde pour pouvoir les rétablir en cas de changement d avis de l utilisateur...

    ou bien dans un autre style aussi ecrire les ordres que l utilisateur aurait du jouer dans une table et exécuter ces ordres (avec du sql dynamique) si l'utilisateur valide sa transaction ...

    ce genre de trucs...

  12. #12
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    OK merci de ton explication !

Discussions similaires

  1. Quelle language/framework pour une appli web
    Par Teufboy dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 20/06/2008, 21h03
  2. [SSO] Single Sign On en LDAP pour une appli web
    Par imsory dans le forum Sécurité
    Réponses: 4
    Dernier message: 21/05/2008, 21h58
  3. Réponses: 10
    Dernier message: 12/10/2007, 14h02
  4. Quel plug pour une appli web?
    Par trollchichon dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 19/02/2007, 19h51
  5. Quel outil de test pour une appli web ?
    Par Arnard dans le forum Tests et Performance
    Réponses: 7
    Dernier message: 31/10/2006, 09h24

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