Ca să citez ghidul altcuiva: În munca efectivă de dezvoltare, se execută un eveniment, apoi apelează o altă interfață pentru a introduce datele; dacă există o excepție în logica de procesare, datele introduse anterior vor deveni date inutile, Ceea ce vrem este să putem defini întreaga metodă ca o tranzacție, iar clasa TransactionScope oferă o metodă simplă care să nu fie nevoie să interacționezi cu tranzacția în sine. pentru a marca un bloc de cod ca participant la o tranzacție. Obiectul TransactionScope creează o tranzacție și setează tranzacția la proprietatea Current a clasei Transaction.
1. Avantajele TransactionScope 1. Este mai convenabil de folosit. TransactionScope poate implementa tranzacții implicite, astfel încât să poți scrie cod la nivelul de acces la date fără a lua în considerare tranzacțiile, dar să controlezi tranzacțiile la nivelul de business. 2. Tranzacțiile distribuite pot fi implementate, cum ar fi cross-database sau MSMQ.
2. Dezavantaje ale TransactionScope 1. Cost-performanța nu este ridicată. De exemplu, controlezi tranzacțiile unei biblioteci doar în "Scope". Folosirea "TransactionScope" este puțin risipitor. 2. În condiții normale, atâta timp cât folosești "TransactionScope", trebuie să configurezi MSDTC, să instalezi un firewall și să deschizi portul 139. Acest port nu poate fi schimbat
3. Dacă trebuie să folosești tranzacții distribuite, trebuie să te gândești la asta 1. Trebuie ca această operațiune să fie inclusă în tranzacție? Dacă acest pas nu este finalizat sau eșuează, merită să anuleze întreaga tranzacție? Nu există compensații elegante sau măsuri de toleranță la greșeli? 2. Câte puncte implică tranzacțiile distribuite? Trebuie să ai o serie mare de operații în timp real? Nu poți simplifica unele puncte prin operațiuni de notificare? 3. După inițierea unei tranzacții distribuite, ați efectuat operații independente de tranzacție, chiar dacă aceste operații nu erau legate de tranzacție? (de exemplu, citirea datelor, calcularea, așteptarea returnării unui mesaj de către utilizator, așteptarea returnării apelului altor module etc.) 4. Nu ai luat în calcul niște operațiuni de citire în tranzacție, nu-i așa? Aceasta este o greșeală ușor de făcut când înscrii o operațiune select în tranzacție. 5. Unele etape ale operațiunii pot fi executate după finalizarea tuturor operațiilor. Acest tip de operațiune are caracteristici evidente de notificare. Operațiunile de notificare spun: îți dau o notificare și garantez că aceasta va ajunge la tine; Trebuie să iei această notificare și să te asiguri că este procesată, dar nu trebuie să te ocupi de ea imediat ce te anunț. Această operație poate fi realizată evident cu o altă sarcină.
4. Acordați atenție următoarelor puncte atunci când folosiți tranzacții distribuite 1: Asigură-te că mașina care participă la tranzacție a activat suportul distribuit pentru tranzacții. 2: Dacă mașina are firewall-ul activat, trebuie să setezi procesul msdtc ca excepție. 3: Mașina care participă la tranzacție nu poate traversa domeniul (dacă este cross-domain, Microsoft nu are în prezent o soluție exactă); 4: Folosește tranzacțiile distribuite doar când ai mai multe baze de date; dacă este aceeași bază de date, cel mai bine este să folosești SqlTransaction. 1. Adaugă mai întâi referința System.Transactions (trebuie să adaugi asamblarea Net)
Codul de pe apelul C# este următorul:
Adresa blogurilor care explică această clasă de tranzacții distribuite este foarte clară:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Setarea configurației serverului web și a mediului SQL Server
Panoul de Control - > Sisteme și Securitate - Instrumente de Management > - > Servicii Componente (Acest lucru este necesar atât pentru serverele WEB, cât și pentru cele SQL)
Panoul de Control - Sisteme > și Securitate - Instrumente de Management > - > Services
(Acest lucru este necesar atât pentru serverele WEB, cât și pentru cele SQL)
Panoul de control - > Sistem & Securitate - > Windows Firewall
(Acest lucru este necesar atât pentru serverele WEB, cât și pentru cele SQL)
3. Configurația MSSQL
Pentru conexiunile serverului, click dreapta - > proprietăți
4. Configurează gazdele (configurează doar serverul WEB, dacă nu, configurează-l și pe serverul SQL)
C:\Windows\System32\drivers\etc hosts, care se deschide cu Notepad (Informațiile despre serverul SQL trebuie configurate în fișierul Hosts de pe serverul WEB) (Dacă testul eșuează, configurați informațiile serverului web în fișierul Hosts de pe serverul SQL)
|