Получаване на SQL връзка най-ефективно при използване на ASP.NET и уеб услуги

Когато използвате уеб услуги (използваме специално asmx и WCF) с ASP.NET, кой е най-добрият начин за установяване на SQL връзка? Точно сега установявам нова връзка за всяко повикване на уеб услуга, но не съм убеден, че това ще бъде твърде ефективно, когато ще има хиляди потребители, които се свързват. Всяко прозрение по тази тема ще бъде много оценено.


person MacGyver    schedule 14.09.2012    source източник
comment
+1 Това е валиден въпрос. Ако сте гласували против, моля, посочете причината.   -  person Win    schedule 14.09.2012


Отговори (4)


Това, което правите, е доста стандартно.

Ако приемем, че използвате същия низ за връзка, връзките ще идват от пула за връзки, което е най-ефективният начин вече да получите връзки.

Добра практика е да вършите само необходимата работа и да затваряте връзката при всяко повикване.

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

person Oded    schedule 14.09.2012

Силно се препоръчва винаги да затваряте връзката, когато приключите с използването й, така че връзката да бъде върната към пула. Можете да направите това, като използвате методите Close или Dispose на обекта Connection или като отворите всички връзки в израз за използване в C#. Връзки, които не са изрично затворени, може да не бъдат добавени или върнати в пула.

Трябва да добавите „Pooling = true“ (и да добавите ненулев „Min Pool Size“) към низа за връзка.

person Nitesh Kumar    schedule 14.09.2012

Оставете доставчика да управлява групирането на връзки вместо вас; не се опитвайте да се справите по-добре от него - ще се провалите.

С настройките за връзка по подразбиране доставчикът ще поддържа набор от връзки. Когато затворите/изхвърлите, връзката всъщност просто се освобождава към пула. не е непременно наистина затворено.

person Andrew Barber    schedule 14.09.2012

По подразбиране SqlConnections използва обединяване на връзката, което ще позволи на системата да управлява повторното използване на предишни обекти на връзка, вместо наистина да създава „нови“ връзки за всяка заявка – до максимална стойност на пула . И е вграден, така че всъщност не е нужно да правите нищо, за да го използвате.

Писането на ваш собствен пул/мениджър на връзките е изпълнено с опасности и води до всякакви злини, така че ми се струва, че позволяването на системата да управлява вашите връзки от пула вероятно е най-добрият ви залог.

person David W    schedule 14.09.2012