Объект доступа к данным: Singleton или много маленьких? - PullRequest
1 голос
/ 26 ноября 2009

При разработке приложения (web, win, что угодно), которое обеспечивает много доступа к данным, лучше оставить объект доступа к данным открытым для длины запроса (т.е. делать много вещей подряд, а затем закрыть его, когда Вы заканчиваете), или продолжаете открывать и закрывать новые?

protected aDataContext dc = new aDataContext();

против

private aObject GetInfo(...) {...}

Я думаю, что первое будет лучше для производительности; но это кажется плохой практикой.

Ответы [ 2 ]

3 голосов
/ 26 ноября 2009

Лучше использовать пул соединений. Держите ограниченное количество открытых соединений, насколько это возможно. Открытие соединения - это дорого, но миллион открытых соединений может убить ваш сервер. Вы должны сравнить свой сценарий для достижения наилучших результатов ....

2 голосов
/ 27 ноября 2009

Как правило, вы должны открыть новое соединение для каждой единицы работы, использовать его, а затем закрыть как можно скорее. Внутренне .NET (или ADO, или ODBC, или что-то еще) будет пул соединений для вас, при условии, что строка подключения одинакова, поэтому это на самом деле очень эффективно. Есть и другие вопросы, которые необходимо учитывать, особенно транзакции, но в целом лучше следовать этой схеме open-do-close и позволить .NET управлять пулом соединений.

...