Parce que j'ai rencontré le problème du traitement des transactions dans le service Web la dernière fois, j'ai accidentellement fait une découverte intéressante sur le paramètre d'enrôlement de chaîne de connexion d'OracleConnection lors du débogage du programme.
J'ai déjà lu un article, mais je ne me souviens plus de quoi il s'agissait. L'article disait qu'il était préférable de définir l'enrôlement sur false. À ce moment-là, je n'ai pas expliqué en détail pourquoi il devait être défini sur false. mon programme, enlist=false, a été écrit directement. Ce n'est que maintenant que j'ai découvert qu'il existe une relation subtile entre le paramétrage de l'enrôlement et le traitement des transactions.
Les gestionnaires de transactions utilisent généralement deux méthodes pour gérer, l'une est appelée Lightweight Transaction Management, appelée LTM, et l'autre est appelée oleX TM. Dans la soumission en phase simple, LTM est généralement utilisé, tandis que dans le traitement des transactions distribuées, 2PC est généralement utilisé, la méthode utilisée est donc oleX TM.
Si enlist=false, cela signifie que les transactions suivantes ne seront pas enregistrées dans la transaction en cours, donc la transaction en cours ne deviendra pas la racine de la transaction. Si le traitement des transactions distribuées est utilisé dans le programme, il risque de ne pas être exécuté correctement (je n'ai pas testé cela). À ce stade, le programme demande à TM d'utiliser LTM pour gérer.
Si enlist=true, alors le processus indique à TM qu'il doit être géré à l'aide d'oleX TM. La gestion des transactions distribuées sera automatiquement activée à ce moment, donc si enlist=true est défini dans la chaîne de connexion, si la base de données Oracle est utilisée, alors l'arrière-plan affichera Lors de l'appel de oramts.dll, si le service MTS pour Oracle n'est pas installé dans l'environnement de développement, il sera demandé que oramts.dll soit introuvable. Vous pouvez télécharger le package d'installation de ce service à partir du site Web d'Oracle. Je ne sais pas pourquoi Oracle ne fournit pas de package d'installation distinct, mais le télécharge avec odac.
Que se passera-t-il si vous ne configurez pas l'enrôlement ? Cela dépend si votre programme utilise des transactions distribuées ou un traitement général des transactions. TM réagira automatiquement en fonction de la demande du programme.
Conclusion : enlist dispose d'un certain contrôle sur l'enregistrement des transactions. Si ma description est fausse, aidez-moi à me corriger.
Adresse du lien : http://yanrongpi.cnblogs.com/archive/2006/07/13/450189.html