Possiamo usare la transazione su oggetti C#.Possiamo implementare Transaction su oggetti C#?
Tutte le transazioni sono solo per database relazionali come MSSQL, ORACLE, ecc ... ??
Grazie.
Possiamo usare la transazione su oggetti C#.Possiamo implementare Transaction su oggetti C#?
Tutte le transazioni sono solo per database relazionali come MSSQL, ORACLE, ecc ... ??
Grazie.
quello che chiedete è chiamato Software Transactional Memory. Dal momento che questo è attualmente uno spazio aperto di ricerca e non v'è alcun supporto linguaggio C# nativa in questo momento, si potrebbe essere meglio utilizzare il existing synchronization options for C#, come ad esempio la parola chiave lock
, monitor, attendere maniglie, ecc
Se davvero sono necessarie funzionalità transazionali avanzate, ci sono un sacco di library implementations, ad esempio, < modifica>
SXM di Microsoft Research
STM.NET </modifica>.
So che questa è una vecchia risposta (e una domanda), ma mi stavo solo chiedendo delle transazioni C# per le operazioni in memoria, e ho trovato questo. Tuttavia, i collegamenti a STM.NET sembrano essere morti. Il progetto è stato interrotto? C'è un'alternativa? – Shaamaan
@Shaamaan: il link di Wikipedia ha anche un elenco di implementazioni: https: // en.wikipedia.org/wiki/Software_transactional_memory#C.23 – Heinzi
Non c'è transactioning SQL-like per C# oggetti, ma se questo a causa di problemi di threading, è necessario utilizzare lock
:
lock (myList)
{
if (myList.Count > 0)
myList.Clear();
}
Questo cancella semplicemente un elenco, ma assicura che non può essere modificato da un altro thread allo stesso tempo.
Per una bella discussione su come implementare la transazione in OOP, dai un'occhiata a questo discussion. Lì il memento e lo schema di stato sono evidenziati per ottenere un comportamento transazionale (tra gli altri metodi).
Potresti essere interessato a Software Transactional Memory. Esiste un'implementazione nel mondo .NET, denominata STM.NET.
Software Transactional Memory (STM.NET) è un meccanismo per un efficiente isolamento di stato condiviso. Il programmatore demarca una regione del codice come operante all'interno di una transazione che è "atomica" e "isolata" da altro codice transazionale in esecuzione contemporaneamente.
Ecco il blog del team di Microsoft STM.NET: http://blogs.msdn.com/stmteam/
Hai ragione su STM, ma non dimenticare di notare che STM è ancora in ricerca, sviluppo e non vorrei usare nel software di produzione. – Steven
Dai un'occhiata alla memoria transazionale del software (STM.NET).
Non ce l'ha fatta in .Net 4, ma è disponibile come download separato
C'è stato un Interesting article sul blog di Joe Duffy circa il tentativo di fare memoria transazionale a MS. Se dovessi riassumerlo, direi: fallo da solo se è per divertimento.
È possibile utilizzare TransactionScope Class
.
Duplicato: http://stackoverflow.com/questions/2020660/transactions-in-c –