Cituji průvodce někoho jiného: Při skutečné vývojové práci se spustí událost a poté se zavolá další rozhraní pro vložení dat; pokud je v logice zpracování výjimka, pak se dříve vložená data stanou odpadními daty, Chceme být schopni definovat celou metodu jako transakci a třída TransactionScope poskytuje jednoduchou metodu, která vám umožní nemuset interagovat přímo s transakcí. označit blok kódu jako účast na transakci. Objekt TransactionScope vytváří transakci a nastavuje transakci na vlastnost Current třídy Transaction.
1. Výhody TransactionScope 1. Je pohodlnější na používání. TransactionScope dokáže implementovat implicitní transakce, takže můžete psát kód na úrovni přístupu k datům bez ohledu na transakce, ale řídit transakce na obchodní vrstvě. 2. Lze implementovat distribuované transakce, například cross-database nebo MSMQ.
2. Nevýhody TransactionScope 1. Nákladová výkonnost není vysoká. Například v "Scope" ovládáte pouze transakce knihovny. Používání "TransactionScope" je trochu plýtvání. 2. Za normálních okolností, pokud používáte "TransactionScope", musíte nastavit MSDTC, nainstalovat firewall a otevřít port 139. Tento port nelze změnit
3. Pokud musíte používat distribuované transakce, musíte o tom přemýšlet 1. Musí tato operace být součástí transakce? Pokud tento krok nebude dokončen nebo selže, stojí za to celou transakci vrátit zpět? Neexistuje žádná elegantní kompenzace nebo odolnost vůči chybám? 2. Kolik bodů zahrnují distribuované transakce? Musí mít dlouhý řetězec operací v reálném čase? Nemůžete některé body zjednodušit přes notifikační operace? 3. Po zahájení distribuované transakce jste provedli transakční nezávislé operace, i když tyto operace nebyly s transakcí spojeny? (např. čtení dat, výpočty, čekání na vrácení zprávy uživatelem, čekání na návrat hovoru ostatních modulů atd.) 4. Nepočítal jste do transakce nějaké čtenářské operace, že? To je snadná chyba, kterou lze udělat, když do transakce zadáte operaci select. 5. Některé kroky vaší operace lze provést až po dokončení všech operací. Tento typ provozu má zřetelné charakteristiky pro upozornění. Informační operace říkají: Dávám vám oznámení a zaručuji, že oznámení k vám dorazí; Musíte toto oznámení přijmout a zajistit, aby bylo zpracováno, ale nemusíte se s ním zabývat hned, jakmile vás o tom informuji. Tuto operaci lze samozřejmě provést i jiným úkolem.
4. Při používání distribuovaných transakcí věnujte pozornost následujícím bodům 1: Ujistěte se, že stroj zapojený do transakce má povolenou podporu distribuovaných transakcí. 2: Pokud má počítač firewall zapnutý, musíte nastavit proces msdtc jako výjimku. 3: Stroj účastnící se transakce nemůže překročit doménu (pokud je trans doména, Microsoft momentálně nemá přesné řešení); 4: Používejte distribuované transakce pouze tehdy, když máte více databází, pokud jde o stejnou databázi, je nejlepší použít SqlTransaction. 1. Nejprve přidejte odkaz na System.Transactions (musíte přidat Net assembly)
Kód volacího signálu C# je následující:
Adresa blogů, která vysvětluje tuto třídu distribuovaných transakcí, je velmi jasná:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Nastavte konfiguraci webového serveru a prostředí SQL serveru
Ovládací panel - > Systémy a bezpečnost - > Nástroje pro správu - > Component Services (Toto je vyžadováno jak pro web, tak SQL servery)
Ovládací panel - > Systémy a bezpečnost - > Nástroje pro správu - > služby
(Toto je vyžadováno jak pro web, tak SQL servery)
Ovládací panel - > Systém a bezpečnost - > Windows Firewall
(Toto je vyžadováno jak pro web, tak SQL servery)
3. Konfigurace MSSQL
Pro připojení k serveru klikněte pravým tlačítkem - > vlastnosti
4. Konfigurujte hostitele (konfigurujte pouze WEB server, pokud ne, konfigurujte ho také na SQL serveru)
C:\Windows\System32\drivers\etc hosts, který se otevírá pomocí Notepadu (Informace o SQL serveru je třeba nastavit v souboru Hosts na WEB serveru) (Pokud test selže, nakonfigurujte informace o webovém serveru v souboru Hosts na SQL serveru)
|