Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 25464|Răspunde: 0

[Sursă] .net/C# Distributed TransactionScope

[Copiază linkul]
Postat pe 05.05.2018 10:53:17 | | | |
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)






Precedent:Linkuri externe către postările forumului Discuz X adaugă atributul nofollow
Următor:Funcții care păstrează două zecimale după punctul zecimal în C# și cum să le folosești
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com