2009-04-21 3 views
1

나는 많은 정적 유틸리티 클래스를 가진 C# dll을 가지고있다. 그들은 모두 데이터베이스 액세스가 필요하며, 현재 각 클래스는 자체 연결을 가지고 있습니다. 이것은 번거 로움이되어 가고 있고 하나의 연결 제공자를 원합니다. 그래서 클래스는 ConnProvider와 같은 것을 할 수 있습니다 .Query (...) ConnProvider는 모든 유틸리티 클래스가 액세스 할 수있는 정적 클래스입니다. 나는 ConnProvider가 일종의 연결 풀을 관리해야한다고 생각하지만,이 방법을 구현하는 것이 올바른지, 내부적으로 어떻게 보이는지에 대해서는 확실하지 않습니다. 나는 올바른 길을 가고 있는가? 이것은 웹 기반이 아니며 thread-safety는 필수적이지는 않지만 (미래에는 좋을 것입니다.)이 DLL을 사용하는 앱/기계는 소수에 불과하므로 단순화하는 데 도움이됩니다.정적 클래스에서 데이터베이스 연결을 공유하는 적절한 설계?

답변

0

상황에 따라 모든 도우미 클래스가 연결되어있는 ConnectionBase의 하위 클래스로 만들 수 있습니까?

+0

예, 좋은 지적입니다. 나는 그것도 할 것이라고 생각합니다. –

0

"ConnProvider"가 각 쿼리에 대해 새 연결을 만들고 ADO.NET 및 RDBMS에서 연결 풀링을 관리하도록하십시오. 귀하를 대신하여 이미 설정되고 최적화되어 있습니다.

2

자신 만의 연결 풀을 작성하면 안됩니다. 프레임 워크의 것이 충분히 좋습니다.

작성한 모든 연결 제공 업체 유틸리티는 실제로 가지고있는 구성 정보를 사용하여 연결을 작성해야합니다. 기본적으로 쿼리 문자열을 캡슐화합니다.

쿼리를 수행 할 때마다 공급자에게 전화를 걸어 연결을 만들고 작업을 수행 한 다음 연결을 닫습니다. 프레임 워크가 실제 연결 풀링을 처리하도록하십시오.

+0

명확히하기 위해 내장 된 연결 풀링을 사용하기 위해 특별히해야 할 일이 있습니까? 또는 내 conn 문자열이 동일하면 자동입니까? 문제는 몇 가지 도우미 함수를 구현하는 SqlConnection에 대한 래퍼가 있다는 것입니다. 따라서이 권한을 얻는 방법을 모르겠습니다. –

+0

자동입니다. 래퍼 유형이 정말로 필요합니까? 어떤 주를 추가합니까? 그렇지 않으면 C# 3을 사용하는 경우 확장 메서드를 사용하는 것이 좋습니다. –

0

연결 풀링을 직접 처리하지 마십시오. 닷넷은 당신보다 더 나아질 것입니다. 연결을위한 일종의 싱글 - 톤 (singleton-pattern) db- 클래스로 이것을 처리 할 수 ​​있습니다.