Transactions MTS
Une transaction est une opération ou un ensemble d'opérations qui réussit ou échoue en tant qu'unité logique. Un bon exemple de transaction est le transfert de fonds d'un compte bancaire à un autre. Dans ce cas, les fonds doivent être débités du premier compte et crédités sur le second avant que l'opération puisse être considérée comme réussie. Si les fonds sont correctement débités, mais pas crédités, le débit du premier compte doit être annulé pour maintenir la cohérence et l'exactitude du solde des comptes.
Les transactions sont normalement gérées en déclarant des limites autour d'un ensemble d'opérations. Les opérations qui s'exécutent dans le contexte de la limite de transaction réussissent ou échouent en tant qu'unité. Pour ASP.NET, la limite de transaction est le lancement d'une demande unique à une page pouvant contenir les composants imbriqués qui participent à la même transaction. En cas d'échec d'une opération portant sur la page proprement dite ou un composant imbriqué dans la même transaction, ContextUtil.SetAbort peut être appelé pendant l'exécution de la page. Cette valeur est ensuite reprise par le contexte de transaction en cours, la totalité de la transaction échoue et les opérations déjà terminées sont annulées. Si aucun élément n'échoue, la transaction est validée.
La prise en charge des transactions par ASP.NET permet aux pages de participer aux transactions Microsoft .NET Framework en cours. La prise en charge des transactions est exposée par l'intermédiaire d'une directive @Transaction qui indique le niveau de prise en charge souhaité :
<%@ Transaction="Required" %>
Le tableau suivant définit les attributs de transaction pris en charge.
L'absence de directive de transaction a le même effet qu'une directive explicite ayant la valeur « Disabled ». Contrairement à ASP, ASP.NET ne possède aucune directive explicite (telle que Transaction="None").
| Attribut | Description |
|
Required
|
La page nécessite une transaction. Elle s'exécute dans le contexte d'une transaction existante, s'il en existe. Sinon, la page en démarre une.
|
|
RequiresNew
|
La page nécessite une transaction et une nouvelle transaction est lancée pour chaque demande.
|
|
Supported
|
La page s'exécute dans le contexte d'une transaction existante, s'il en existe. Sinon, elle s'exécute sans transaction.
|
|
NotSupported
|
La page ne s'exécute pas dans la portée de transactions. Lorsqu'une demande est traitée, son contexte d'objet est créé sans transaction, peu importe s'il existe une transaction active.
|
Une transaction peut être validée de manière explicite ou annulée à l'aide de méthodes statiques de la classe System.EnterpriseServices.ContextUtil. Vous pouvez appeler explicitement la méthode SetComplete ou SetAbort pour valider ou annuler une transaction en cours.
Remarque : Une transaction est validée ou annulée au terme de la durée de vie d'une page selon que SetComplete ou SetAbort a été appelé en dernier, et à condition qu'aucun autre objet ne se joigne à la même transaction.
// Try to do something crucial to transaction completing.
if (!DoSomeWork()) {
ContextUtil.SetAbort();
}
' Try to do something crucial to transaction completing.
If (Not DoSomeWork())
ContextUtil.SetAbort()
End If
// Try to do something crucial to transaction completing.
if (!DoSomeWork()) {
ContextUtil.SetAbort();
}
|
|
C#
|
VB
|
JScript
|
|
- Une transaction est une opération ou un ensemble d'opérations qui réussit ou échoue en tant qu'unité logique.
- La prise en charge des transactions par ASP.NET permet aux pages de participer aux transactions Microsoft .NET Framework en cours. La prise en charge des transactions est exposée par l'intermédiaire d'une directive @Transaction qui indique le niveau de prise en charge souhaité.
- Une transaction peut être validée de manière explicite ou annulée à l'aide de méthodes statiques de la classe System.EnterpriseServices.ContextUtil. Les développeurs peuvent appeler explicitement la méthode SetComplete ou SetAbort pour valider ou annuler une transaction en cours.
|