Nota: questo spazio dei nomi è stato introdotto con .NET Framework versione 2.0.
Lo spazio dei nomi
System.Transactions contiene le classi che consentono di scrivere un gestore di risorse e applicazioni transazionali personalizzato. In particolare, è possibile creare e partecipare a una transazione locale o distribuita con uno o più partecipanti.
Importante: |
|---|
| Utilizzando questo spazio dei nomi è possibile creare applicazioni soltanto sulle piattaforme Windows 2000, Windows XP e Windows 2003. Se viene creata una transazione sulle piattaforme Windows 98 e Windows ME viene generata l'eccezione PlatformNotSupportedException. |
L'infrastruttura System.Transactions rende la programmazione transazionale semplice ed efficiente sull'intera piattaforma in quanto supporta transazioni iniziate in SQL Server, ADO.NET, MSMQ e Microsoft Distributed Transaction Coordinator (MSDTC). Oltre a un modello di programmazione esplicito basato sulla classe Transaction, essa fornisce anche un modello di programmazione implicito che utilizza la classe TransactionScope in cui le transazioni vengono gestite automaticamente dall'infrastruttura. Per l'attività di sviluppo è indubbiamente consigliabile utilizzare il modello implicito più semplice. Per informazioni introduttive, vedere l'argomento Implementazione di una transazione implicita mediante TransactionScope. Per ulteriori informazioni sulla scrittura di un'applicazione transazionale, vedere Writing a Transactional Application.
Lo spazio dei nomi System.Transactions fornisce inoltre i tipi per l'implementazione di un gestore di risorse. Il gestore delle transazioni nativo dell'infrastruttura System.Transactions consente di eseguire in modo efficiente il commit o il rollback di risorse volatili o di un singolo elenco di risorse durature. Per ulteriori informazioni sull'implementazione di un gestore di risorse, vedere Implementazione di un gestore di risorse.
Il gestore delle transazioni innalza inoltre in modo trasparente il livello delle transazioni locali rendendole transazioni distribuite mediante il coordinamento attraverso un gestore delle transazioni basato su disco come DTC quando un gestore di risorse durature aggiuntive si inserisce in una transazione. L'infrastruttura System.Transactions fornisce prestazioni ottimizzate principalmente in due modi:
-
mediante escalation dinamica; in questo caso l'infrastruttura System.Transactions impegna MSDTC soltanto quando è effettivamente richiesto per una transazione. Per informazioni dettagliate a questo proposito, vedere l'argomento Innalzamento di livello della gestione di una transazione.
-
mediante gli elenchi promuovibili; questo metodo prevede che una risorsa, ad esempio un database, assuma la proprietà della transazione se è la sola entità che partecipa alla transazione. In seguito, se necessario, l'infrastruttura System.Transactions può comunque innalzare il livello di gestione della transazione fino a MSDTC. Questo metodo riduce ulteriormente le occasioni di utilizzo di MSDTC. Per informazioni dettagliate a questo proposito, vedere l'argomento Ottimizzazione tramite commit a fase singola e notifica a fase singola promuovibile.
Lo spazio dei nomi System.Transactions definisce tre livelli di attendibilità che limitano l'accesso al tipo di risorse che espone. In particolare, l'assembly System.Transactions può essere chiamato da codice parzialmente attendibile in quanto è stato contrassegnato con l'attributo AllowPartiallyTrustedCallers (APTCA). Questo attributo sostanzialmente rimuove il flag LinkDemand implicito dal set di autorizzazioni FullTrust che viene altrimenti automaticamente assegnato a ogni metodo accessibile pubblicamente per ciascun tipo. Alcuni tipi e membri richiedono tuttavia autorizzazioni più sicure.
Di seguito viene fornito un elenco di tipi e membri che non possono essere chiamati da codice parzialmente attendibile in quanto sono contrassegnati con l'attributo di protezione dichiarativa seguente:
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
System.Transactions.Transaction.EnlistDurable
System.Transactions.Transaction.EnlistPromotableSinglePhase
System.Transactions.TransactionInterop
System.Transactions.TransactionManager.DistributedTransactionStarted
System.Transactions.TransactionManager.HostCurrentTransactionCallback
System.Transactions.TransactionManager.Reenlist
System.Transactions.TransactionManager.RecoveryComplete
System.Transactions.TransactionScope.TransactionScope (System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption)
M:System.Transactions.TransactionScope.TransactionScope(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions,System.Transactions.EnterpriseServicesInteropOption)
Per ulteriori informazioni sui vari livelli di attendibilità, vedere Livelli di attendibilità della protezione per l'accesso alle risorse.
Tecnologie di sviluppo di base\Accesso ai dati\Elaborazione delle transazioni\
Per ulteriori informazioni sull'utilizzo dello spazio dei nomi System.Transactions, è possibile consultare la documentazione concettuale Elaborazione delle transazioni, reperibile nella sezione "Tecnologie di sviluppo di base\Accesso ai dati\Elaborazione delle transazioni\". Vedere in particolare gli argomenti seguenti.
Funzionalità fornite da System.Transactions
Writing a Transactional Application
Implementazione di un gestore di risorse

Strutture
| | Struttura | Descrizione |
|---|
.png) | TransactionOptions | Contiene informazioni aggiuntive che specificano i comportamenti di una transazione. |

Delegati

Enumerazioni