Когато използвате уеб услуги (използваме специално asmx и WCF) с ASP.NET, кой е най-добрият начин за установяване на SQL връзка? Точно сега установявам нова връзка за всяко повикване на уеб услуга, но не съм убеден, че това ще бъде твърде ефективно, когато ще има хиляди потребители, които се свързват. Всяко прозрение по тази тема ще бъде много оценено.
Получаване на SQL връзка най-ефективно при използване на ASP.NET и уеб услуги
Отговори (4)
Това, което правите, е доста стандартно.
Ако приемем, че използвате същия низ за връзка, връзките ще идват от пула за връзки, което е най-ефективният начин вече да получите връзки.
Добра практика е да вършите само необходимата работа и да затваряте връзката при всяко повикване.
Едно нещо, което можете да направите, е да кеширате резултатите и да върнете кешираните резултати за повиквания, които няма вероятност да доведат до промяна на данните през живота на кеширания елемент. Това ще намали извикванията на базата данни.
Силно се препоръчва винаги да затваряте връзката, когато приключите с използването й, така че връзката да бъде върната към пула. Можете да направите това, като използвате методите Close или Dispose на обекта Connection или като отворите всички връзки в израз за използване в C#. Връзки, които не са изрично затворени, може да не бъдат добавени или върнати в пула.
Трябва да добавите „Pooling = true“ (и да добавите ненулев „Min Pool Size“) към низа за връзка.
Оставете доставчика да управлява групирането на връзки вместо вас; не се опитвайте да се справите по-добре от него - ще се провалите.
С настройките за връзка по подразбиране доставчикът ще поддържа набор от връзки. Когато затворите/изхвърлите, връзката всъщност просто се освобождава към пула. не е непременно наистина затворено.
По подразбиране SqlConnections използва обединяване на връзката, което ще позволи на системата да управлява повторното използване на предишни обекти на връзка, вместо наистина да създава „нови“ връзки за всяка заявка – до максимална стойност на пула . И е вграден, така че всъщност не е нужно да правите нищо, за да го използвате.
Писането на ваш собствен пул/мениджър на връзките е изпълнено с опасности и води до всякакви злини, така че ми се струва, че позволяването на системата да управлява вашите връзки от пула вероятно е най-добрият ви залог.