Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette section explique comment vous pouvez utiliser les fonctionnalités fournies par le System.Transactions espace de noms pour écrire votre propre application transactionnelle et gestionnaire de ressources. Plus précisément, cette section explique comment créer et participer à une transaction (locale ou distribuée) avec un ou plusieurs participants.
Vue d'ensemble de System.Transactions
L’infrastructure fournie par les classes de l’espace de noms rend la System.Transactions programmation transactionnelle simple et efficace en prenant en charge les transactions lancées dans SQL Server, ADO.NET, Message Queuing (MSMQ) et Microsoft Distributed Transaction Coordinator (MSDTC). L’espace System.Transactions de noms fournit à la fois un modèle de programmation explicite basé sur la Transaction classe, ainsi qu’un modèle de programmation implicite à l’aide de la TransactionScope classe, dans laquelle les transactions sont automatiquement gérées par l’infrastructure. Pour plus d’informations sur la création d’une application transactionnelle à l’aide de ces deux modèles, consultez Écriture d’une application transactionnelle.
L’espace System.Transactions de noms fournit également des types pour vous permettre d’implémenter un gestionnaire de ressources. Un gestionnaire de ressources gère les données durables ou volatiles utilisées dans une transaction et collaborez avec le gestionnaire de transactions pour fournir à l’application une garantie d’atomicité et d’isolation. Le gestionnaire de transactions fourni par l’infrastructure System.Transactions prend en charge les transactions impliquant plusieurs ressources volatiles ou une seule ressource durable. Pour plus d’informations sur l’implémentation d’un gestionnaire de ressources, consultez Implémentation d’un Resource Manager.
Le gestionnaire de transactions augmente également de manière transparente les transactions locales vers des transactions distribuées en coordonnant avec un gestionnaire de transactions sur disque comme le DTC, lorsqu’un gestionnaire de ressources durable supplémentaire s’inscrit à une transaction. L’infrastructure offre deux façons System.Transactions clés d’améliorer les performances.
L’escalade dynamique garantit que l’infrastructure System.Transactions engage uniquement le MSDTC lorsqu’une transaction s’étend sur plusieurs ressources distribuées. Pour plus d’informations sur l’escalade dynamique. consultez la rubrique Escalade de la gestion des transactions .
Les enrôlements promouvables, qui permettent à une ressource, telle qu'une base de données, de prendre en charge la transaction à condition qu'elle soit la seule entité participant à ladite transaction. Plus tard, si nécessaire, l’infrastructure System.Transactions peut toujours faire remonter la gestion de la transaction au MSDTC. Cela réduit davantage le risque d’utilisation du MSDTC. Les inscriptions pouvant être promues sont présentées en détail dans la rubrique Optimisation en utilisant la validation à phase unique et la notification de phase unique pouvant être promue.
L’espace System.Transactions de noms définit trois niveaux d’approbation : AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) et confiance totale, qui limitent l’accès aux types de ressources qu’il expose. Pour plus d’informations sur les différents niveaux d’approbation, consultez Niveaux d’approbation de sécurité dans l’accès aux ressources.
Dans cette section
Écriture d’une application transactionnelle
L’espace System.Transactions de noms fournit deux modèles pour la création d’applications transactionnelles. L’implémentation d’une transaction implicite à l’aide de l’étendue de transaction décrit comment l'espace de noms System.Transactions prend en charge la création de transactions implicites à l’aide de la classe TransactionScope.
Implémentation d’une transaction explicite en utilisant CommittableTransaction explique comment l’espace de noms System.Transactions prend en charge la création de transactions explicites en utilisant la classe CommittableTransaction.
Pour plus d’informations sur l’écriture d’une application transactionnelle, consultez Écriture d’une application transactionnelle.
Implémentation d’un Gestionnaire de ressources
Pour implémenter un gestionnaire de ressources qui peut participer à une transaction, consultez Implémentation d’un Gestionnaire de ressources. Cette section traite de l’inscription d’une ressource, de la validation d’une transaction, de la récupération après échec et des bonnes pratiques d’optimisation.