Nozioni fondamentali sulle transazioniTransaction Fundamentals

Le transazioni consentono di associare più attività fra loro.Transactions bind multiple tasks together. Ad esempio, si supponga che un'applicazione esegua due attività.For example, imagine that an application performs two tasks. La prima consiste nel creare una nuova tabella in un database.First, it creates a new table in a database. La seconda consiste nel chiamare un oggetto specifico per raccogliere, formattare e inserire dati nella nuova tabella.Next, it calls a specialized object to collect, format, and insert data into the new table. Queste due attività sono correlate e persino interdipendenti, nel senso che la creazione di una tabella deve avvenire esclusivamente quando sono disponibili dei dati con cui riempirla.These two tasks are related and even interdependent, such that you want to avoid creating a new table unless you can fill it with data. L'esecuzione di entrambe le attività nell'ambito di un'unica transazione ne garantisce la correlazione.Executing both tasks within the scope of a single transaction enforces the connection between them. Se si verifica un errore nella seconda attività, il sistema esegue il rollback della prima attività a un punto precedente alla creazione della nuova tabella.If the second task fails, the first task is rolled back to a point before the new table was created.

Affinché presentino un comportamento prevedibile, tutte le transazioni devono possedere le proprietà ACID, ovvero atomicità, coerenza, isolamento e durata.To ensure predictable behavior, all transactions must possess the basic ACID properties (atomic, consistent, isolated, and durable). Queste proprietà garantiscono il ruolo delle transazioni di importanza critica come proposte di coerenza completa.These properties reinforce the role of mission-critical transactions as all-or-none propositions. Per ulteriori informazioni su ACID, vedere proprietà ACID.For more information on ACID, please see ACID Properties. In breve, le proprietà ACID garantiscono che più attività correlate abbiano tutte lo stesso esito, sia esso negativo o positivo.In summary, ACID guarantees that a set of related tasks either succeed or fail as a unit. Ovvero, nella terminologia dell'elaborazione delle transazioni, la transazione viene interrotta o ne viene eseguito il commit.In transaction processing terminology, the transaction either commits or aborts. Affinché venga eseguito il commit di una transazione, tutte le attività componenti devono garantire che qualsiasi modifica ai dati sia definitiva.For a transaction to commit, all participants must guarantee that any change to data will be permanent. Le modifiche devono essere definitive anche in caso di arresti anomali del sistema o altri eventi imprevisti.Changes must persist despite system crashes or other unforeseen events. Se anche una sola delle attività componenti non è in grado di fornire questa garanzia, l'intera transazione ha esito negativo.If even a single participant fails to make this guarantee, the entire transaction fails. In tal caso, per tutte le modifiche apportate ai dati nell'ambito della transazione viene eseguito il rollback a un punto impostato specifico.All changes to data within the scope of the transaction are rolled back to a specific set point.

Una transazione può riguardare esclusivamente un'unica risorsa di dati, ad esempio un database o una coda di messaggi.A transaction can be confined to a single data resource, such as a database or message queue. In questo scenario la transazione locale viene gestita dalla gestione transazioni fornita dallo spazio dei nomi System.Transactions che comporta un miglioramento delle prestazioni.In this scenario, the local transaction is managed by the Transaction Manager provided by System.Transactions , which generates performance gain. Queste transazioni, controllate dalla risorsa di dati, sono efficienti e facili da gestire.Controlled by the data resource, these transactions are efficient and easy to manage.

Le transazioni possono riguardare anche più risorse di dati.Transactions can also span multiple data resources. Le transazioni distribuite consentono di incorporare varie operazioni distinte in esecuzione su più sistemi in un'unica azione con esito positivo o negativo.Distributed transactions give you the ability to incorporate several distinct operations occurring on different systems into a single pass or fail action. In questo scenario, le transazioni vengono coordinate dallo strumento MSDTC (Microsoft Distributed Transaction Coordinator) presente in ogni sistema.In this scenario, the transactions are coordinated by the Microsoft Distributed Transaction Coordinator (MSDTC) that resides in each system.

Quando si sviluppa un'applicazione transazionale utilizzando le classi fornite dallo spazio dei nomi System.Transactions non è necessario gestire manualmente i tipi di transazione da utilizzare o determinare la gestione transazioni coinvolta,When you develop a transactional application using the classes provided by System.Transactions, you do not need to worry about what kind of transactions you need, or the transaction manager involved. in quanto queste problematiche vengono gestite automaticamente dall'infrastruttura System.Transactions.The System.Transactions infrastructure automatically manages these for you.

Quando si crea una transazione è possibile specificarne il livello di isolamento.When you create a transaction, you can specify the isolation level that applies to the transaction. Il livello di isolamento, definito dal IsolationLevel enum, determina il livello di accesso che altre transazioni avranno sui dati interessati dalla transazione.The isolation level, defined by the IsolationLevel enum, determines what level of access other transactions will have to the data affected by your transaction.

È possibile creare transazioni utilizzando ADO.NET, System.EnterpriseServiceso il modello di programmazione transazionale fornito dallo spazio dei nomi System.Transactions.You can create transactions using ADO.NET, System.EnterpriseServices, or the transactional programming model provided by the System.Transactions namespace. Nell'argomento funzionalità fornite da System. Transactions vengono illustrate le funzionalità che è possibile utilizzare per scrivere un'applicazione transazionale utilizzando lo spazio dei nomi System.Transactions.The Features Provided by System.Transactions topic discusses the features that you can use to write a transactional application using the System.Transactions namespace.

Vedere ancheSee also