Aby som citoval niekoho iného návod: Pri skutočnej vývojovej práci sa vykoná udalosť a potom sa zavolá iné rozhranie na vloženie dát; ak je v logike spracovania výnimka, predtým vložené dáta sa stanú odpadovými dátami, Chceme vedieť definovať celú metódu ako transakciu a trieda TransactionScope poskytuje jednoduchú metódu, ktorá vám umožní neinteragovať priamo s transakciou. na označenie bloku kódu ako účastníka transakcie. Objekt TransactionScope vytvorí transakciu a nastaví transakciu na vlastnosť Current triedy Transaction.
1. Výhody TransactionScope 1. Je to pohodlnejšie na používanie. TransactionScope dokáže implementovať implicitné transakcie, takže môžete písať kód na vrstve prístupu k dátam bez zohľadnenia transakcií, ale kontrolovať transakcie na obchodnej vrstve. 2. Distribuované transakcie môžu byť implementované, napríklad cross-databázové alebo MSMQ.
2. Nevýhody TransactionScope 1. Nákladová výkonnosť nie je vysoká. Napríklad v "Scope" ovládate iba transakcie knižnice. Používanie "TransactionScope" je trochu plytvanie. 2. Za normálnych okolností, pokiaľ používate "TransactionScope", musíte nakonfigurovať MSDTC, nainštalovať firewall a otvoriť port 139. Tento port nie je možné zmeniť
3. Ak musíte použiť distribuované transakcie, musíte o tom premýšľať 1. Musí byť táto operácia súčasťou transakcie? Ak tento krok nie je dokončený alebo zlyhá, oplatí sa vrátiť celú transakciu späť? Neexistujú žiadne elegantné kompenzačné alebo odolné opatrenia voči chybám? 2. Koľko bodov zahŕňajú distribuované transakcie? Musíte mať veľký reťazec operácií v reálnom čase? Nemôžete niektoré body zjednodušiť cez notifikačné operácie? 3. Po iniciovaní distribuovanej transakcie ste vykonávali transakčne nezávislé operácie, aj keď tieto operácie nesúviseli s transakciou? (napr. čítanie dát, výpočty, čakanie na odpoveď používateľa, čakanie na návrat hovoru iných modulov a pod.) 4. Nezapočítali ste do transakcie nejaké čítacie operácie, však? Toto je ľahká chyba, ktorú môžete urobiť, keď do transakcie zadáte operáciu select. 5. Niektoré kroky vašej operácie môžu byť vykonané po dokončení všetkých operácií. Tento typ operácie má zrejmé charakteristiky oznamovania. Upozorňovacie operácie hovoria: Dám vám oznámenie a garantujem, že oznámenie k vám dorazí; Musíte toto oznámenie prijať a zabezpečiť, aby bolo spracované, ale nemusíte sa tým zaoberať hneď, ako vás o tom informujem. Táto operácia sa samozrejme dá vykonať aj inou úlohou.
4. Pri používaní distribuovaných transakcií venujte pozornosť nasledujúcim bodom 1: Uistite sa, že stroj, ktorý sa zúčastňuje transakcie, má povolenú podporu distribuovaných transakcií. 2: Ak má počítač firewall zapnutý, musíte nastaviť proces msdtc ako výnimku. 3: Stroj, ktorý sa zúčastňuje transakcie, nemôže prejsť cez doménu (ak ide o cross-domain, Microsoft momentálne nemá presné riešenie); 4: Distribuované transakcie používajte len vtedy, keď máte viacero databáz, ak ide o tú istú databázu, je najlepšie použiť SqlTransaction. 1. Najskôr pridajte referenciu System.Transactions (musíte pridať Net assembly)
Kód na volaní C# je nasledovný:
Adresa blogov, ktorá vysvetľuje túto triedu distribuovaných transakcií, je veľmi jasná:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Nastavte konfiguráciu webového servera a prostredia SQL servera
Ovládací panel - > Systémy a bezpečnosť - > Nástroje na správu - > Komponenty (Toto je potrebné pre WEB aj SQL servery)
Ovládací panel - > Systémy a bezpečnosť - > Nástroje na správu - > služby
(Toto je potrebné pre WEB aj SQL servery)
Ovládací panel - > Systém a bezpečnosť - > Windows firewall
(Toto je potrebné pre WEB aj SQL servery)
3. Konfigurácia MSSQL
Pre pripojenie k serveru kliknite pravým tlačidlom - > vlastnosti
4. Konfigurovať hostiteľov (nakonfigurovať len WEB server, ak nie, nakonfigurovať ho aj na SQL serveri)
C:\Windows\System32\drivers\etc súbor hosts, ktorý sa otvára pomocou Notepadu (Informácie o SQL serveri je potrebné nakonfigurovať v súbore Hosts na WEB serveri) (Ak test zlyhá, nakonfigurujte informácie o webovom serveri v súbore Hosts na SQL serveri)
|