Können wir die Transaktion für C# -Objekte verwenden?Können wir Transaktionen für C# -Objekte implementieren?
Sind alle Transaktionen nur für relationale Datenbanken wie MSSQL, ORACLE usw.?
Danke.
Können wir die Transaktion für C# -Objekte verwenden?Können wir Transaktionen für C# -Objekte implementieren?
Sind alle Transaktionen nur für relationale Datenbanken wie MSSQL, ORACLE usw.?
Danke.
Was Sie fordern ist Software Transactional Memory genannt. Da dies derzeit ein offener Bereich der Forschung ist und es derzeit keinen nativen C# -Sprachen-Support gibt, könnten Sie besser die existing synchronization options for C#, wie das lock
Schlüsselwort, Monitore, Wait-Handles usw. verwenden.
Wenn Sie wirklich benötigen erweiterte Transaktionsfunktionen, gibt es viele library implementations, zum Beispiel < edit>
SXM von Microsoft Research
STM.NET </edit>.
Ich weiß, das ist eine alte Antwort (und eine Frage), aber ich habe mich gerade über C# -Transaktionen für In-Memory-Operationen gewundert, und das gefunden. Die Links zu STM.NET scheinen jedoch tot zu sein. Wurde das Projekt eingestellt? Gibt es eine Alternative? – Shaamaan
@Shaamaan: Die Wikipedia-Link hat auch eine Liste von Implementierungen: https: // en.wikipedia.org/wiki/Software_transactional_memory#C.23 – Heinzi
Es gibt keine SQL-ähnliche transactioning für C# Objekte, aber wenn dies, weil Sie threading Probleme haben, sollten Sie lock
verwenden:
lock (myList)
{
if (myList.Count > 0)
myList.Clear();
}
Dieses einfach löscht eine Liste, sondern sorgt dafür, es nicht modifiziert werden kann ein weiterer Thread zur gleichen Zeit.
Für eine nette Diskussion, wie Sie die Transaktion in OOP implementieren, werfen Sie einen Blick auf diese discussion. Dort werden das Memento und das Zustandsmuster hervorgehoben, um (unter anderen Methoden) Transaktionsverhalten zu erreichen.
Das könnte Sie interessieren: Software Transactional Memory. Es existiert eine Implementierung in der .NET-Welt mit dem Namen STM.NET.
Software Transactional Memory (STM.NET) ist ein Mechanismus für die effiziente Isolierung des gemeinsamen Staates. Der Programmierer grenzt eine Region des Codes als innerhalb einer Transaktion, die ist "atomaren" und "isoliert" von anderen transacted Code gleichzeitig ausgeführt wird ab. Hier
ist der Blog des Microsoft STM.NET Team: http://blogs.msdn.com/stmteam/
Sie haben Recht mit STM, aber vergessen Sie nicht zu beachten, dass STM noch in Forschung, Entwicklung ist und ich nicht verwenden würde es in der Produktionssoftware. – Steven
Werfen Sie einen Blick auf Software Transactional Memory (STM.NET).
Es hat es nicht in .Net 4 machen, sondern ist als separater Download
Es gab eine Interesting article auf Joe Duffy Blog über den Versuch der MS Transactional Memory zu tun. Wenn ich es zusammenfassen würde, würde ich sagen: Mach es nur, wenn es zum Spaß ist.
Sie können die TransactionScope Class
verwenden.
Duplizieren: http://stackoverflow.com/questions/2020660/transactions-in-c –