Questa documentazione è stata archiviata e non viene gestita.

Spazio dei nomi System.Transactions

Aggiornamento: novembre 2007

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.

Nota 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 utilizzando l'ambito di transazione. 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 Escalation della gestione delle transazioni.

  • 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 mediante commit monofase e notifica monofase 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 Restrizioni di accesso alle risorse in base ai livelli di attendibilità di protezione.

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à offerte da System.Transactions

Writing A Transactional Application

Implementazione di un gestore di risorse

  ClasseDescrizione
CommittableTransactionDescrive una transazione di cui è possibile eseguire il commit.
DependentTransactionDescrive un duplicato di una transazione che garantisce che non può essere eseguito il commit della transazione fino a quando nell'applicazione non si completano le operazioni relative alla transazione. Questa classe non può essere ereditata.
DistributedTransactionPermissionAutorizzazione richiesta da System.Transactions durante l'escalation del livello di gestione di una transazione a MSDTC. Questa classe non può essere ereditata.
DistributedTransactionPermissionAttributeConsente di applicare al codice azioni di protezione per la classe DistributedTransactionPermission utilizzando la protezione dichiarativa. Questa classe non può essere ereditata.
EnlistmentFacilita la comunicazione tra un partecipante alla transazione inserito nell'elenco e il gestore delle transazioni durante la fase finale della transazione.
PreparingEnlistmentFacilita la comunicazione tra un partecipante alla transazione inserito nell'elenco e il gestore delle transazioni durante la fase di preparazione della transazione.
SinglePhaseEnlistmentFornisce un insieme di callback che facilitano la comunicazione tra un partecipante inserito nell'elenco per il commit a una fase e il gestore delle transazioni quando viene ricevuta la notifica di SinglePhaseCommit.
SubordinateTransactionRappresenta una transazione che non contiene una radice che può essere delegata. Questa classe non può essere ereditata.
TransactionRappresenta una transazione.
TransactionAbortedExceptionEccezione generata quando si è tentato di eseguire un'operazione in una transazione in cui è già stato eseguito il rollback oppure si è tentato di eseguire il commit della transazione e la transazione si interrompe.
TransactionEventArgsFornisce i dati per i seguenti eventi di transazione: DistributedTransactionStarted e TransactionCompleted.
TransactionExceptionEccezione generata quando si tenta di operare in una transazione in cui non è possibile accettare nuove operazioni.
TransactionInDoubtExceptionEccezione generata quando viene tentata un'operazione su una transazione in dubbio oppure quando si tenta di eseguire il commit della transazione e questa diventa InDoubt.
TransactionInformationFornisce informazioni aggiuntive su una transazione.
TransactionInterop Facilita l'interazione tra System.Transactions e i componenti che sono stati precedentemente scritti per interagire con MSDTC, COM+ o System.EnterpriseServices. Questa classe non può essere ereditata.
TransactionManagerContiene i metodi utilizzati per la gestione delle transazioni. Questa classe non può essere ereditata.
TransactionManagerCommunicationExceptionEccezione generata quando un gestore delle risorse non riesce a comunicare con il gestore delle transazioni.
TransactionPromotionExceptionEccezione generata in caso di promozione non riuscita.
TransactionScopeRende transazionale un blocco di codice. Questa classe non può essere ereditata.

  StrutturaDescrizione
TransactionOptionsContiene informazioni aggiuntive che specificano i comportamenti di una transazione.

  InterfacciaDescrizione
IDtcTransactionDescrive una transazione DTC.
IEnlistmentNotificationDescrive l'interfaccia che deve essere implementata da un gestore delle risorse per fornire callback di notifica del commit a due fasi per il gestore delle transazioni in seguito all'inserimento nell'elenco per la partecipazione.
IPromotableSinglePhaseNotificationDescrive un oggetto che svolge la funzione di delegato di commit per una transazione non distribuita interna a un gestore delle risorse.
ISimpleTransactionSuperiorRappresenta una transazione non di primo livello, ma di cui è possibile eseguire l'escalation per consentirne la gestione mediante MSDTC.
ISinglePhaseNotificationDescrive un oggetto risorsa che supporta l'ottimizzazione del commit a una fase per la partecipazione a una transazione.
ITransactionPromoterDescrive una transazione delegata di una transazione esistente di cui è possibile eseguire l'escalation per consentirne la gestione mediante MSDTC, se necessario.

  DelegatoDescrizione
HostCurrentTransactionCallbackFornisce un meccanismo affinché l'ambiente di hosting specifichi una propria nozione predefinita di Current.
TransactionCompletedEventHandlerRappresenta il metodo che gestisce l'evento TransactionCompleted di una classe Transaction.
TransactionStartedEventHandlerRappresenta il metodo che gestirà l'evento DistributedTransactionStarted di una classe TransactionManager.

  EnumerazioneDescrizione
DependentCloneOptionDetermina il tipo di transazione dipendente da creare.
EnlistmentOptionsDetermina se l'oggetto deve essere inserito nell'elenco durante la fase di preparazione.
EnterpriseServicesInteropOptionSpecifica il modo in cui le transazioni distribuite interagiscono con le transazioni COM+.
IsolationLevelSpecifica il livello di isolamento di una transazione.
TransactionScopeOptionFornisce opzioni aggiuntive per la creazione dell'ambito di una transazione.
TransactionStatusDescrive lo stato corrente di una transazione distribuita.
Mostra: