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: 63300|Răspunde: 7

[.NET Core] ADO.NET Crearea unui pool de conexiuni SqlConnection prin ObjectPool

[Copiază linkul]
Postat pe 2020-4-19 18:51:31 | | | |
ObjectPool este o funcționalitate nouă de la Microsoft, Microsoft ne ajută să menținem unele obiecte care pot fi reutilizate.

Pe scurt, similar cu bicicletele comune, când îl folosești, scanezi codul pentru a-l debloca, vehiculul înseamnă că este ocupat, când îl folosești, când încuii mașina, vehiculul va elibera ocuparea. Aceste ocupații și eliberări sunt toate întreținute de platformă pentru noi.

Unele obiecte nu sunt sigure pentru thread-uri, dar de fiecare dată când instanțiem obiectul, trebuie să consumăm unele resurse.

Explicație detaliată a Object Pool în .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Sursa: Architect_Programmer)
În primul rând, creăm o nouă clasă SqlConnectionPooledObjectPolicy care moștenește interfața IPooledObjectPolicy <T>și trebuie să implementeze cele două metode ale sale.

Cum să instanțiezi obiectul în metoda Create,Return indică dacă obiectul poate fi reutilizat, iar când fals este returnat, obiectul va fi șters din pool-ul de obiecte.

Codul sursă de test este următorul:

Rezultatele testelor sunt următoarele:



Se poate observa că pool-ul de conexiuni este puțin mai lent la primele 10 interogări, iar după aceea este mai rapid decât fiecare instanție a SqlConnection.

Atașat este codul sursă

Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rogRăspunde






Precedent:Programele C# rulează clase de testare consumatoare de timp
Următor:Configurația Trusted_Connection MSSQL
Postat la 2020-4-19 21:58:46 |
Asta e ceva nou
Postat la 2020-4-30 13:05:18 |
Vino să vezi, susține, canapeaua
 Proprietarul| Postat la 2021-03-22 15:31:43 |
Codul sursă DefaultObjectPoolProvider
Mediul implicit MaximumRetained * 2;





 Proprietarul| Postat la 2021-03-2021 15:34:51 |
 Proprietarul| Postat la 2021-03-23 09:50:57 |
Cod de test:

maximumRetained este setat la 5, iar testul este instanțiat o singură dată când este returnat de fiecare dată când este folosit, așa cum se arată în figura de mai jos:



În cazul în care nu se întoarce, Testul este instanțiat de 10 ori, deși depășește setarea maximăRetained de 5 și nu va arunca o excepție, este posibil ca, după finalizarea utilizării, să-l recicleze treptat, iar apoi doar 5 instanțe vor fi păstrate:


 Proprietarul| Postat la 2021-3-24 18:23:44 |
SQL Server Connection Pool (ADO.NET)

Ori de câte ori un utilizator apelează Open pe o conexiune, procesul pool-ului caută conexiunile disponibile în pool. Dacă există o conexiune de pool, aceasta este returnată apelantului în loc să se deschidă o nouă conexiune. Când aplicația apelează Close pe acea conexiune, procesul pool-ului returnează conexiunea către setul activ de conexiuni în loc să închidă conexiunea.

https://docs.microsoft.com/zh-cn ... -connection-pooling

Postat la 2021-8-17 10:13:07 |
Învață să înveți
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