Condividi tramite


Funzionalità offerte da System.Transactions

Questa sezione descrive come utilizzare le funzionalità fornite dallo spazio dei nomi System.Transactions per scrivere applicazioni transazionali e gestori di risorse personalizzati. In particolare, questa sezione descrive come creare una transazione (locale o distribuita) e come integrarvi una o più risorse.

Panoramica su System.Transactions

Grazie al supporto delle transazioni create in SQL Server, ADO.NET, MSMQ e Microsoft Distributed Transaction Coordinator (MSDTC), l'infrastruttura fornita dalle classi dello spazio dei nomi System.Transactions rende la programmazione transazionale semplice ed efficiente. Lo spazio dei nomi System.Transactions fornisce sia un modello di programmazione esplicito basato sulla classe Transaction sia un modello di programmazione implicito che utilizza la classe TransactionScope, in cui le transazioni vengono gestite automaticamente dall'infrastruttura. Per altre informazioni su come creare un'applicazione transazionale usando questi due modelli, vedere Scrittura di un'applicazione transazionale.

Lo spazio dei nomi System.Transactions fornisce inoltre i tipi per implementare un gestore di risorse, ovvero un'applicazione che gestisce i dati permanenti o volatili utilizzati in una transazione e che collabora con la gestione transazioni per garantire atomicità e isolamento all'applicazione che utilizza tale transazione. La gestione transazioni fornita dall'infrastruttura System.Transactions supporta le transazioni che coinvolgono più risorse volatili o una sola risorsa durevole. Per altre informazioni sull'implementazione di un gestore di risorse, vedere Implementazione di un gestore di risorse.

Inoltre, quando un gestore di risorse durevole aggiuntivo si integra in una transazione, la gestione transazioni collabora con una gestione transazioni basata su disco quale DTC allo scopo di eseguire in modo trasparente l'escalation delle transazioni da locali a distribuite. Di base l'infrastruttura System.Transactions utilizza due meccanismi per ottimizzare le prestazioni:

  • Escalation dinamica, che garantisce che l'infrastruttura System.Transactions ricorra al gestore MSDTC solo quando una transazione coinvolge più risorse distribuite. Per ulteriori informazioni sull'escalation dinamica, vedere l'argomento Escalation della gestione delle transazioni.

  • PSPE, che consente a una risorsa, ad esempio un database, di assumere la proprietà della transazione se è l'unica entità a parteciparvi. In seguito, se necessario, l'infrastruttura System.Transactions può comunque eseguire l'escalation della gestione della transazione a MSDTC. Ciò consente di ridurre ulteriormente le probabilità di utilizzo del gestore MSDTC. Il meccanismo PSPE è descritto nell'argomento Ottimizzazione mediante commit monofase e notifica monofase promuovibile.

Lo spazio dei nomi System.Transactions definisce tre livelli di attendibilità per restringere l'accesso ai tipi di risorse che espone: AllowPartiallyTrustedCallers, DistributedTransactionPermission e FullTrust. Per altre informazioni sui vari livelli di attendibilità, vedere Restrizioni di accesso alle risorse in base ai livelli di attendibilità di sicurezza.

In questa sezione

Scrittura di un'applicazione transazionale

Lo spazio dei nomi System.Transactions offre due modelli per creare le applicazioni di transazione. Implementazione di una transazione implicita utilizzando l'ambito di transazione descrive il modo in cui lo spazio dei nomi System.Transactions supporta la creazione di transazioni implicite tramite la classe TransactionScope.

Implementazione di una transazione esplicita utilizzando CommittableTransaction descrive il modo in cui lo spazio dei nomi System.Transactions supporta la creazione di transazioni esplicite tramite la classe CommittableTransaction.

Per altri argomenti relativi alla scrittura di un'applicazione transazionale, vedere Scrittura di un'applicazione transazionale.

Implementazione di un gestore di risorse

Per implementare un gestore di risorse che può partecipare a una transazione, vedere Implementazione di un gestore di risorse. Questa sezione descrive l'integrazione di una risorsa, il commit di una transazione, il ripristino in caso di errore e i metodi di ottimizzazione.