При использовании веб-служб (в частности, asmx и WCF) с ASP.NET, как лучше всего установить соединение SQL? Прямо сейчас я устанавливаю новое соединение для каждого вызова веб-службы, но я не уверен, что это будет слишком эффективно, когда будут подключаться тысячи пользователей. Любое понимание этой темы будет высоко оценено.
Получение SQL-соединения наиболее эффективно при использовании ASP.NET и веб-сервисов.
Ответы (4)
То, что вы делаете, довольно стандартно.
Предполагая, что вы используете такую же строку соединения, соединения будут исходить из пула соединений, что уже является наиболее эффективным способом получения соединений.
Хорошей практикой является выполнение только необходимой работы и закрытие соединения при каждом вызове.
Одна вещь, которую вы можете сделать, — это кэшировать результаты и возвращать кэшированные результаты для вызовов, которые вряд ли приведут к изменению данных в течение срока службы элемента кэша. Это уменьшит количество обращений к базе данных.
Настоятельно рекомендуется всегда закрывать соединение после завершения его использования, чтобы соединение возвращалось в пул. Это можно сделать с помощью методов Close или Dispose объекта Connection или путем открытия всех соединений внутри оператора using в C#. Соединения, которые не закрыты явно, не могут быть добавлены или возвращены в пул.
Вы должны добавить «Pooling = true» (и добавить ненулевой «Min Pool Size») в строку подключения.
Позвольте провайдеру обрабатывать пул соединений для вас; не пытайтесь сделать лучше, чем это - вы потерпите неудачу.
С настройками соединения по умолчанию провайдер будет поддерживать пул соединений. Когда вы закрываете/распоряжаетесь, соединение фактически просто высвобождается в пул. это не обязательно действительно закрыто.
По умолчанию SqlConnections использует пул соединений, что позволяет системе управлять повторным использованием объектов предыдущих соединений, а не создавать «новые» соединения для каждого запроса — вплоть до максимального значения пула. . И он встроен, поэтому вам не нужно ничего делать, чтобы использовать его.
Написание собственного менеджера пула/соединений чревато опасностью и ведет ко всевозможным злам, поэтому мне кажется, что лучше всего разрешить системе управлять вашими соединениями из пула.