Czy możemy użyć transakcji na obiektach C#.Czy możemy zaimplementować transakcję na obiektach C#?
Czy wszystkie transakcje są tylko dla relacyjnej bazy danych, takiej jak MSSQL, ORACLE, itd ...?
Dzięki.
Czy możemy użyć transakcji na obiektach C#.Czy możemy zaimplementować transakcję na obiektach C#?
Czy wszystkie transakcje są tylko dla relacyjnej bazy danych, takiej jak MSSQL, ORACLE, itd ...?
Dzięki.
co prosicie nazywa Software Transactional Memory. Ponieważ obecnie jest to otwarty obszar badań i nie ma obecnie natywnej obsługi języka C#, lepiej użyć parametru existing synchronization options for C#, na przykład słowa kluczowego lock
, monitorów, uchwytów oczekiwania itp.
Jeśli naprawdę potrzebujesz zaawansowanych funkcji transakcyjnych, jest dużo library implementations, na przykład < edycja>
SXM firmy Microsoft Research
STM.NET </edycja>.
Wiem, że jest to stara odpowiedź (i pytanie), ale właśnie zastanawiałem się nad transakcjami C# dla operacji w pamięci i znalazłem to. Jednak linki do STM.NET wydają się być martwe. Czy projekt został przerwany? Czy istnieje alternatywa? – Shaamaan
@Shaamaan: Link do Wikipedii ma również listę implementacji: https: // en.wikipedia.org/wiki/Software_transactional_memory#C.23 – Heinzi
Nie ma SQL-like transactioning dla C# obiektów, ale czy to dlatego, że masz gwintowania problemy, należy użyć lock
:
lock (myList)
{
if (myList.Count > 0)
myList.Clear();
}
To po prostu czyści listę, ale zapewnia, że nie może być modyfikowana przez kolejny wątek w tym samym czasie.
Dla miłej dyskusji, jak zrealizować transakcję w OOP, spójrz na tę discussion. Tam podświetlony jest wzorzec memento i stan w celu osiągnięcia zachowania transakcyjnego (wśród innych metod).
Możesz być zainteresowany Software Transactional Memory. Istnieje jedna implementacja w świecie .NET o nazwie STM.NET.
Software transakcyjna pamięci (STM.NET) jest mechanizmem do efektywnego izolacji wspólnego państwa. Programator wyznacza region kodu jako działający w ramach transakcji, która jest "atomowa" i "izolowana" od innego kodowanego kodu działającego równolegle.
Oto blog zespołu Microsoft STM.NET: http://blogs.msdn.com/stmteam/
Masz rację co do STM, ale nie zapominaj, że STM jest nadal w fazie badań, rozwoju i nie użyłbym to w oprogramowaniu produkcyjnym. – Steven
Zobacz Software Software Transactional Memory (STM.NET).
Nie udało się do .NET 4, ale jest dostępny jako osobny plik do pobrania
Wystąpił Interesting article na blogu Joe Duffy o próbie zrobienia transakcyjne pamięci w MS. Gdybym to podsumował, powiedziałbym: Zrób to sam, jeśli jest to dla zabawy.
Możesz użyć TransactionScope Class
.
Duplikat: http://stackoverflow.com/questions/2020660/transactions-in-c –