2008-09-03 4 views
6

나는 보통 내 connectionstring을 web.config 또는 내 Visual Studio 프로젝트의 응용 프로그램 설정에 저장합니다. 현재 작업하고있는 응용 프로그램은 데이터베이스에 많은 시간을 보내며 매번 연결 문자열을 검색합니다. 캐시에 connectionstring을 두어야합니까, 아니면 항상 열고 닫을 필요를 없애기 위해 캐시에 전체 SqlConnection 개체를 저장해야합니까?데이터베이스 연결 문자열은 어디에 저장합니까?

업데이트는 : 합의가 구성 파일의 연결 문자열을 저장하고 구성 파일에 보관 ADO.NET

답변

4

내가 내장 된 연결 풀링 물리 칠 것입니다 연결 개체, 캐시하지 것이라고 말했다 무엇 - ADO.NET 연결을 처리하는 것 자체가 효율적으로 (당신이 인스턴스화을 닫습니다 가정) .

연결 문자열 자체에서 연결에서로드하는 경우 연결 문자열 자체를 캐시 할 필요가 없습니다. .NET 2.0 프레임 워크의 연결 관리자 개체는 처음 액세스 할 때 구성을 메모리에로드하므로 파일 시스템에 대한 반복적 인 이동은 없습니다.

0

의 신뢰 손에 캐싱을두고있는 것처럼 보인다. Hibernate 나 Linq to Sql과 같은 툴에서 제공하는 강력한 데이터 액세스 전략을 사용하십시오.

0

어쨌든 .config 파일의 내용이 메모리에 저장된다는 것을 알 수 있습니다. 다시 연락 드리겠습니다.

편집 : HE

1

저는 대개 응용 프로그램의 전역 구성 객체에 연결 문자열을 캐시합니다. 이 값은 프로그램 실행 시작시 파일, 암호화 된 파일, 구성 파일 등이 저장된 곳에서로드됩니다. ADO.NET은 데이터베이스에 연결 개체를 캐싱 할 때 매우 뛰어나므로 SqlConnection 개체를 캐시하지 않습니다 .

3

web.config가 캐시됩니다. 그러나 그렇지 않은 경우에도 ADO.net이 연결 풀을 유지한다는 사실을 잊지 마십시오. DB에 전화 할 때마다 새 연결을 열지 않습니다.

0

가능한 해결책 : 인증을 위해 하나의 저장 프로 시저 만 실행할 수있는 로그인에 대해 초기 암호화 된 연결 문자열 (Web.Config 또는 App.Config에 있음)을 저장합니다. DB의 config 테이블에 저장된 암호화 된 값에서 로그인을 동적으로 전환하십시오.

관련 문제