středa 27. července 2011
WCF Transakce
Info:
http://msdn.microsoft.com/en-us/magazine/cc163688.aspx#S3
V každé literatuře o .NET se dočtete o podpoře transakcí uvniřt .NETu. A všechny příklady zabívající se touto problematikou jsou ukazovány na databázích. Nebudu zde popisovat jednotlivé programovací konstrukce, kterých se na netu v příkladech vyskytuje hodně. Zmíním jen konstrukci tzv. ambientní transakce, což je blok, uvnitř kterého probíhá automaticky transakce. Tato transakce se sama zahájí a na konci voláním metody Complete() se potvrdí.
using (TransactionScope sc = new TransactionScope)
http://msdn.microsoft.com/en-us/magazine/cc163688.aspx#S3
V každé literatuře o .NET se dočtete o podpoře transakcí uvniřt .NETu. A všechny příklady zabívající se touto problematikou jsou ukazovány na databázích. Nebudu zde popisovat jednotlivé programovací konstrukce, kterých se na netu v příkladech vyskytuje hodně. Zmíním jen konstrukci tzv. ambientní transakce, což je blok, uvnitř kterého probíhá automaticky transakce. Tato transakce se sama zahájí a na konci voláním metody Complete() se potvrdí.
using (TransactionScope sc = new TransactionScope)
{
sc.Complete();
}
Ale nyní přichází požadavek. Potřeboval bych naprogramovat pole objektů, které spravuji v paměti a potřebuji aby nad tímto polem fungovalo transakční zpracování. Je to možné? Funguje to?
Odpověď zní ANO i NE.
Samozřejmě je o možné naprogramovat, ale nefunguje to automaticky. Nelze deklarovat před blokem proměnou, pak uvnitř bloku nastavit nějakou hodnotu této proměnné. Nakonec transakci nepotvrdit. Hodnota se nevrátí do původního stavu.
Proč?
Transakce můžeme využívat pouze transakčním zdrojem dat, nad transakčním modelem. Takovým transakčním zdrojem je například nějaké databázové připojení - SqlConnection. Pokud chceme transakce využívat pro jednoduché datové typy nebo objekty, musíme pro ně naprogramovat transakční zdroj. Na internetu lze stáhnout již naprogramované transakční zdroje:
sc.Complete();
}
Ale nyní přichází požadavek. Potřeboval bych naprogramovat pole objektů, které spravuji v paměti a potřebuji aby nad tímto polem fungovalo transakční zpracování. Je to možné? Funguje to?
Odpověď zní ANO i NE.
Samozřejmě je o možné naprogramovat, ale nefunguje to automaticky. Nelze deklarovat před blokem proměnou, pak uvnitř bloku nastavit nějakou hodnotu této proměnné. Nakonec transakci nepotvrdit. Hodnota se nevrátí do původního stavu.
Proč?
Transakce můžeme využívat pouze transakčním zdrojem dat, nad transakčním modelem. Takovým transakčním zdrojem je například nějaké databázové připojení - SqlConnection. Pokud chceme transakce využívat pro jednoduché datové typy nebo objekty, musíme pro ně naprogramovat transakční zdroj. Na internetu lze stáhnout již naprogramované transakční zdroje:
středa 9. února 2011
Už je únor ...
Už je únor a já v novém roce nenapsal ani řádku do blogu. Těžce se mi píše, protože se mi rozpíjí inkoust na stářím zašlém html blogovém papíře. Tak alespoň sfouknu prach .... ah, už je to dobré
středa 5. ledna 2011
Přihlásit se k odběru:
Příspěvky (Atom)