Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 63300|Отговор: 7

[.NET Core] ADO.NET Създаване на SqlConnection пул за връзки чрез ObjectPool

[Копирай линк]
Публикувано на 2020-4-19 18:51:31 | | | |
ObjectPool е нова функция на Microsoft, Microsoft ни помага да поддържаме някои обекти, които могат да се използват повторно.

Просто казано, подобно на споделените велосипеди, когато го използваш, сканирай кода, за да го отключиш – превозното средство означава, че е заето, когато го използваш, когато заключиш колата, превозното средство освобождава обитателя. Тези професии и освобождавания се поддържат от платформата за нас.

Някои обекти не са нишково-безопасни, но всеки път, когато инстанцираме обекта, трябва да изразходваме някои ресурси.

Подробно обяснение на Object Pool в .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Източник: Architect_Programmer)
Първо, създаваме нов клас SqlConnectionPooledObjectPolicy, който наследява <T>интерфейса IPooledObjectPolicy и трябва да реализира двата му метода.

Как да инстанцираме обекта в метода Create,Return показва дали обектът все още може да се използва повторно, а когато false бъде върнат, обектът ще бъде изтрит от обектния пул.

Изходният код на теста е следният:

Резултатите от теста са следните:



Вижда се, че пулът от връзки е малко по-бавен при първите 10 заявки, а след това е по-бърз от всяка инстанция на SqlConnection.

Приложен е изходният код

Туристи, ако искате да видите скритото съдържание на този пост, моляОтговор






Предишен:C# програмите изпълняват времеемки тестови класове
Следващ:MSSQL Trusted_Connection конфигурация
Публикувано на 2020-4-19 21:58:46 |
Това е нещо ново
Публикувано на 2020-4-30 13:05:18 |
Ела да видиш, опора, диван
 Хазяин| Публикувано на 22.03.2021 15:31:43 |
Source-код на DefaultObjectPoolProvider
МаксималноЗапазена Среда по подразбиране.ProcessorCount * 2;





 Хазяин| Публикувано на 22.03.2021 15:34:51 |
Може да бъде написан и директно


 Хазяин| Публикувано на 23.03.2021 09:50:57 |
Тестов код:

maxumRetained се задава на 5, а тестът се инстанцира само веднъж, когато се връща всеки път, когато се използва, както е показано на фигурата по-долу:



В случай че не се връща, тестът се инстанцира 10 пъти, въпреки че надвишава максималната настройка 5 и няма да направи изключение, може след като употребата приключи, ще се рециклира бавно и тогава ще се запазят само 5 инстанции:


 Хазяин| Публикувано на 24.03.2021 18:23:44 |
SQL Server Connection Pool (ADO.NET)

Винаги когато потребител извика Open на връзка, процесът на пула търси наличните връзки в пула. Ако пулова връзка е налична, тя се връща на обаждащия се, вместо да се отваря нова връзка. Когато приложението извика Close на тази връзка, пуловият процес връща връзката към активния набор от връзки, вместо да затваря връзката.

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

Публикувано на 2021-8-17 10:13:07 |
Научи се да учиш
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com