Share via


Transaktionen in XML-Webdiensten von ASP.NET

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

Die Transaktionsunterstützung für Webdienste nutzt die Unterstützung der Common Language Runtime, die auf dem gleichen verteilten Transaktionsmodell von Microsoft Transaction Server (MTS)- und COM+-Diensten basiert. Das Modell basiert auf der deklarativen Entscheidung, ob ein Objekt an einer Transaktion teilnimmt, und nicht auf dem Schreiben von bestimmtem Code, der den Commit und Rollback einer Transaktion handhabt. Sie können das Transaktionsverhalten für einen mit ASP.NET erstellten Webdienst deklarieren, indem Sie die TransactionOption-Eigenschaft des WebMethod-Attributs festlegen, das auf eine Webdienstmethode angewendet wird. Ein Beispiel finden Sie unter Vorgehensweise: Teilnehmen an Transaktionen in Webdiensten, die mit ASP.NET erstellt wurden.

Wenn beim Ausführen einer Webdienstmethode eine Ausnahme ausgelöst wird, wird die Transaktion automatisch abgebrochen. Umgekehrt wird automatisch ein Commit der Transaktion ausgeführt, wenn keine Ausnahme ausgelöst wird.

Die TransactionOption-Eigenschaft des WebMethodAttribute-Attributs gibt an, wie eine Webdienstmethode an einer Transaktion teilnimmt. Obwohl diese deklarative Ebene die Logik einer Transaktion darstellt, ist sie einen Schritt von der physikalischen Transaktion entfernt. Eine physikalische Transaktion findet statt, wenn ein Transaktionsobjekt auf eine Datenressource (z. B. eine Datenbank oder eine Meldungswarteschlange) zugreift. Die dem Objekt zugeordnete Transaktion wird automatisch an den entsprechenden Ressourcen-Manager übertragen. Ein .NET Framework-Datenanbieter, wie .NET Framework Data Provider for SQL Server oder .NET Framework Data Provider for OLE DB, sucht die Transaktion im Kontext des Objekts und trägt sich über den Distributed Transaction Coordinator (DTC) in die Transaktion ein. Die ganze Transaktion läuft automatisch ab.

Webdienstmethoden können an einer Transaktion nur als Stamm einer neuen Transaktion teilnehmen. Als Stamm einer neuen Transaktion behalten alle Interaktionen mit Ressourcen-Managern, wie Server, die Microsoft SQL Server, Microsoft Message Queuing (auch als MSMQ bekannt) und Microsoft Host Integration Server ausführen, die ACID-Eigenschaften bei, die zum Ausführen von robusten verteilten Anwendungen erforderlich sind. Webdienstmethoden, die andere Webdienstmethoden aufrufen, nehmen an anderen Transaktionen teil, weil Transaktionen nicht über Webdienstmethoden übergeben werden.

85f292h1.note(de-de,VS.100).gifHinweis:
Wenn die Methode, die die Webdienstmethode implementiert, nicht aufgrund einer Internetanforderung für die Datei mit einer ASMX-Erweiterung aufgerufen wird, in der sie sich befindet oder der sie zugeordnet ist, hat der Wert der TransactionOption-Eigenschaft keine Wirkung. Dies kann passieren, wenn die Klasse, in der sich die Methode befindet, Member eines Projekts innerhalb von Visual Studio .NET ist und der Webdienst nicht mit einer Proxyklasse aufgerufen wird. In Visual Studio .NET wird eine Proxyklasse generiert, wenn ein Webverweis hinzugefügt wird.

Siehe auch

Aufgaben

Vorgehensweise: Teilnehmen an Transaktionen in Webdiensten, die mit ASP.NET erstellt wurden

Verweis

TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property

Weitere Ressourcen

Transaction Processing
XML-Webdienste, die ASP.NET verwenden