0

3 가지 데이터베이스에 의존하는 일부 분석을 수행하는 Windows 양식 응용 프로그램을 작성하고 있습니다. 2 개는 실제로 지리 데이터베이스 (ESRI)이고 하나는 정보의 표준 CRUD 유형 저장소입니다. GeoRefDatabase, GeoResultDatabase 및 RulesDatabase로 각각 호출 해 보겠습니다. 3 가지 데이터베이스 모두에 액세스해야하는 다양한 유형의 분석 클래스가 있습니다 (결국 최대 10 개).내 데이터베이스 (아마도 DI/IoC)를 캡슐화하기 위해 아키텍처를 도와주세요

  • GeoRefDatabase는 중앙 집중식으로 이동하지 않습니다. 연결 문자열이 필요합니다.
  • GeoResultDatabase는 분석 결과가 저장되는 곳입니다. 그것은 "연결 문자열"이며 실제 위치는 런타임에 (분석이 호출 될 때마다) 다를 수 있습니다. 그 결과 여러 인스턴스가있게됩니다.
  • 규칙 데이터베이스는 중앙 집중화되어 있으며 이동하지 않습니다. 연결 문자열이 필요합니다. 질문에 대한 지금

    var dbRef = GetDbRef(); 
    var dbRules = GetDbRules(); 
    var dbResult = GetDbResult(myLocation); 
    
    var z = AnalysisTypeA(dbRef, dbResult, dbRules); 
    

    .....

    1. 어떻게 이러한 데이터베이스를 캡슐화 않습니다 :

그래서 예를 들어, 내가 좋아하는 수 호출 뭔가가되고 싶어? 나는 IoC/DI에 익숙해 져 왔고 그쪽으로 기울고 있지만 최선의 접근 방법이 무엇인지 잘 모릅니다.

  • 연결 문자열 및 유사한 정보를 저장하는 가장 좋은 방법은 무엇입니까? App.confg?
  • 답변

    0

    이동하지 않는 두 데이터베이스의 경우 DI가 후보가 될 수 있습니다. 자주 이동하지는 않지만 어느 시점에서는 가능할 수 있습니다.

    런타임시 다른 데이터베이스를 어떻게 결정합니까?

    미리 연결 문자열을 알고 문자열 배열에 넣은 다음 입력하면 배열에있는 3 개 또는 4 개의 연결 문자열 중에서 사용할 문자열을 선택할 수 있습니다. 두 개의 배열을 가질 수 있습니다. 하나는 연결 문자열이고 다른 하나는 데이터베이스 이름이므로 해시 맵에 넣을 수 있습니다.

    이러한 것들을 App.config에 넣는 것은 적어도 내 경험에 비추어 볼 때 후보가 될 수 있습니다.

    +0

    Q : 런타임에 다른 데이터베이스를 어떻게 결정합니까? A : 사용자가 기존 데이터베이스 목록에서 선택하거나 새 데이터베이스를 만듭니다. –

    +0

    해시 맵에 저장하는 것이 이치에 맞습니다. –