Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET Framework-Klassen und ASP.NET-Seiten können über einen Commit oder Abbruch ihrer aktuellen Transaktion abstimmen. Beim Fehlen einer expliziten Abstimmung im Code wird als Standard eine Commitabstimmung ausgegeben. Durch einen Standardcommit wird jedoch möglicherweise die Leistung der Anwendung verringert, da wertvolle Ressourcen erst nach einem längeren Zeitraum von den einzelnen Transaktionen freigegeben werden.
Durch eine explizite Abstimmung ist die Klasse oder Seite außerdem in der Lage, eine Transaktion bei Auftreten eines Fehlers abzubrechen. Hierdurch lässt sich wiederum die Leistung der Anwendung verbessern, indem ein schwerer Fehler bereits zu einem frühen Zeitpunkt in der Transaktion abgefangen und die Transaktion beendet wird, um so die verwendeten Ressourcen freizugeben.
Verwenden von AutoVervollständigen
Das System.EnterpriseServices.AutoCompleteAttribute veranlasst ein Objekt, das an einer Transaktion beteiligt ist, bei fehlerfreiem Beenden der Methode für einen Abschluss der Transaktion zu stimmen. Wenn der Methodenaufruf eine Ausnahme auslöst, wird die Transaktion abgebrochen. Sie können dieses Attribut nur Klassen zuweisen, die von der ServicedComponent-Klasse abgeleitet sind.
Fügen Sie das Attribut vor der Klassenmethode ein, wenn Sie dieses Feature verwenden möchten. Wenn Sie das Attribut einer Schnittstellenmethode zuweisen, wird es von der Common Language Runtime ignoriert. Der folgende Codeausschnitt zeigt die Anordnung eines Attributs für eine Transaktionen verarbeitende Klasse.
<Transaction(TransactionOption.Supported)> Public Class Account
Inherits ServicedComponent
<AutoComplete()> Public Sub Debit(amount As Integer)
' Do some database work. Any exception thrown here aborts the
' transaction; otherwise, transaction commits.
End Sub
End Class
[C#]
[Transaction(TransactionOption.Supported)]
public class Account : ServicedComponent {
[AutoComplete]
public void Debit(int amount) {
// Do some database work. Any exception thrown here aborts the transaction;
// otherwise, transaction commits.
}
}
Verwenden von SetAbort und SetComplete
Verwenden Sie die System.EnterpriseServices.ContextUtil-Klasse, um mit deren SetComplete-Methode oder SetAbort-Methode ein explizites Commit oder einen Abbruch der Transaktion auszuführen. SetComplete gibt an, dass das Objekt für einen Commit für seine Vorgänge stimmt. SetAbort gibt an, dass das Objekt einen Fehler festgestellt hat und für einen Abbruch der aktuellen Transaktion stimmt. Ein Commit oder Abbruch für eine Transaktion ist erst dann vollständig durchgeführt, wenn das Stammobjekt der Transaktion deaktiviert ist. Des Weiteren führt eine einzelne Abbruchabstimmung eines beliebigen an der Transaktion beteiligten Objekts dazu, dass die gesamte Transaktion fehlschlägt.
Der folgende Codeausschnitt veranschaulicht die Verwendung der SetAbort-Methode und der SetComplete-Methode.
'Try to do something crucial to the transaction in progress.
If Not DoSomeWork() Then
'Something goes wrong.
ContextUtil.SetAbort()
Else
'All goes well.
ContextUtil.SetComplete()
End If
[C#]
//Try to do something crucial to the transaction in progress.
if( !DoSomeWork() )
{
//Something goes wrong.
ContextUtil.SetAbort();
}
else
{
//All goes well.
ContextUtil.SetComplete();
}