Share via


Transazioni nei servizi Web XML di ASP.NET

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Il supporto delle transazioni per i servizi Web si basa sul supporto contenuto nel Common Language Runtime, il quale deriva dallo stesso modello di transazioni distribuite di Microsoft Transaction Server (MTS) e dei servizi COM+. Il modello è basato su decisioni dichiarative riguardo alla partecipazione di un oggetto in una transazione, piuttosto che sulla creazione di codice specifico per la gestione dell’esecuzione e del rollback di una transazione. Per un servizio Web creato utilizzando ASP.NET, è possibile dichiarare il comportamento transazionale impostando la proprietà TransactionOption dell'attributo WebMethod applicato a un metodo del servizio Web. Per un esempio, vedere Procedura: partecipare alle transazioni nei servizi Web creati mediante ASP.NET.

Se viene generata un'eccezione durante l’esecuzione di un metodo del servizio Web, la transazione viene automaticamente annullata; in caso contrario, se non si verifica alcuna eccezione, la transazione viene automaticamente eseguita.

La proprietà TransactionOption dell'attributo WebMethodAttribute specifica la modalità di partecipazione di un metodo del servizio Web in una transazione. Anche se questo livello dichiarativo rappresenta la logica di una transazione, si tratta di un passaggio rimosso dalla transazione fisica. Si verifica una transazione fisica quando un oggetto transazionale accede a una risorsa dei dati, ad esempio un database o una coda di messaggi. La transazione associata all'oggetto arriva automaticamente al gestore di risorse corrispondente. Un provider di dati .NET Framework, ad esempio per SQL Server o per OLE DB, ricerca la transazione nel contesto dell'oggetto e viene integrato nella transazione tramite Distributed Transaction Coordinator (DTC). L’intera transazione avviene in modo automatico.

I metodi del servizio Web possono partecipare a una transazione solo in qualità di radice di una nuova transazione. Come radice di una nuova transazione, tutte le interazioni con i gestori di risorse, ad esempio server che eseguono Microsoft SQL Server, Microsoft Message Queuing (anche noto come MSMQ) e Microsoft Host Integration Server, mantengono le proprietà ACID necessarie per eseguire applicazioni distribuite affidabili. I metodi del servizio Web che chiamano altri metodi del servizio Web partecipano a diverse transazioni dal momento che queste non passano attraverso i metodi del servizio Web.

85f292h1.note(it-it,VS.100).gifNota:
Quando il metodo che implementa il metodo del servizio Web non viene chiamato a causa di una richiesta Internet del file con estensione .asmx nel quale risiede o a cui è associato, il valore della proprietà TransactionOption non ha alcuna efficacia. Questa situazione può verificarsi quando la classe in cui risiede il metodo è un membro di un progetto all'interno di Visual Studio .NET e il servizio Web non è chiamato utilizzando una classe proxy. In Visual Studio .NET, una classe proxy viene generata quando si aggiunge un riferimento Web.

Vedere anche

Attività

Procedura: partecipare alle transazioni nei servizi Web creati mediante ASP.NET

Riferimento

TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property

Altre risorse

Transaction Processing
Creare servizi Web XML mediante ASP.NET