Če citiram vodič nekoga drugega: Pri dejanskem razvojnem delu izvedete dogodek in nato pokličete drug vmesnik za vstavljanje podatkov; če je v logiki obdelave izjema, bodo prej vstavljeni podatki postali odpadni podatki, Želimo, da lahko celotno metodo definiramo kot transakcijo, razred TransactionScope pa ponuja preprosto metodo, ki vam omogoča, da ne morate interagirati s samo transakcijo. označiti blok kode kot sodelovanje v transakciji. Objekt TransactionScope ustvari transakcijo in nastavi transakcijo na lastnost Current razreda Transaction.
1. Prednosti TransactionScope 1. Uporaba je bolj priročna. TransactionScope lahko implementira implicitne transakcije, tako da lahko napišete kodo za dostop do podatkov brez upoštevanja transakcij, vendar nadzorujete transakcije na poslovni plasti. 2. Mogoče je implementirati distribuirane transakcije, kot so medbazne baze ali MSMQ.
2. Slabosti TransactionScope 1. Stroškovna učinkovitost ni visoka. Na primer, transakcije knjižnice nadzorujete samo v "Scope". Uporaba "TransactionScope" je nekoliko potrata. 2. V običajnih okoliščinah, dokler uporabljate "TransactionScope", morate konfigurirati MSDTC, namestiti požarni zid in odpreti port 139. Tega priključka ni mogoče spremeniti
3. Če morate uporabljati distribuirane transakcije, morate o tem razmisliti 1. Ali mora biti ta operacija vključena v transakcijo? Če ta korak ni zaključen ali ne uspe, ali se splača razveljaviti celotno transakcijo? Ali ni nobenih elegantnih kompenzacij ali ukrepov za odpornost na napake? 2. Koliko točk vključujejo distribuirane transakcije? Mora imeti veliko verigo operacij v realnem času? Ali ne moreš poenostaviti nekaterih točk z obveščanjem? 3. Po začetku distribuirane transakcije, ste izvajali transakcijsko neodvisne operacije, čeprav te niso bile povezane s transakcijami? (npr. branje podatkov, računanje, čakanje, da uporabnik vrne sporočilo, čakanje na klic drugih modulov itd.) 4. Nisi upošteval nekaterih bralnih operacij v transakciji, kajne? To je enostavna napaka, ki jo lahko naredite, ko v transakcijo vključite operacijo select. 5. Nekateri koraki vaše operacije se lahko izvedejo šele po zaključku vseh operacij. Ta vrsta operacije ima očitne značilnosti obveščanja. Obveščanje pravi: Dajem vam obvestilo in zagotavljam, da vas bo obvestilo doseglo; To obvestilo morate sprejeti in zagotoviti, da bo obravnava, vendar se s tem ne ukvarjate takoj, ko vas obvestim. To operacijo je seveda mogoče opraviti z drugo nalogo.
4. Pri uporabi distribuiranih transakcij bodite pozorni na naslednje točke 1: Prepričajte se, da je stroj, ki sodeluje v transakciji, omogočil podporo za distribuirane transakcije. 2: Če ima računalnik vklopljen požarni zid, morate kot izjemo nastaviti proces msdtc. 3: Stroj, ki sodeluje v transakciji, ne more prečkati domene (če je transakcija med domenami, Microsoft trenutno nima natančne rešitve); 4: Porazdeljene transakcije uporabljajte le, če imate več baz podatkov, če gre za isto bazo, je najbolje uporabiti SqlTransaction. 1. Najprej dodajte referenco System.Transactions (morate dodati Net assembly)
Koda klica C# je naslednja:
Naslov blogov, ki pojasnjuje ta razred distribuiranih transakcij, je zelo jasen:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Nastavite konfiguracijo spletnega strežnika in SQL strežniškega okolja
Nadzorna plošča - > Sistemi in varnost - Orodja za upravljanje > - > Komponente (To je zahtevano tako za WEB kot SQL strežnike)
Nadzorna plošča - > Sistemi in varnost - Orodja za upravljanje > - > Storitve
(To je zahtevano tako za WEB kot SQL strežnike)
Nadzorna plošča - > Sistem in varnost - > Windows požarni zid
(To je zahtevano tako za WEB kot SQL strežnike)
3. Konfiguracija MSSQL
Za povezave s strežnikom desni klik - > lastnosti
4. Konfigurirajte gostitelje (konfigurirajte samo spletni strežnik, če ne, ga konfigurirajte tudi na SQL strežniku)
C:\Windows\System32\drivers\etc datoteko hosts, ki se odpre s Notepadom (Informacije o SQL strežniku je treba konfigurirati v datoteki Hosts na WEB strežniku) (Če test ne uspe, konfigurirajte podatke o spletnem strežniku v datoteki Hosts na SQL strežniku)
|