2012-03-26 1 views
0

공통 데이터베이스를 공유하는 두 개의 개별 응용 프로그램 (동일한 시스템의 일부)이 있습니다. 하나의 응용 프로그램은 외부와의 통신을 담당하는 "게이트웨이"이고 다른 하나는 LAN의 로컬 사용자가 로컬 데이터베이스의 데이터를 읽거나 수정하거나 업데이트하는 데 사용하는 데스크톱 클라이언트입니다.디버깅/테스트 중에 응용 프로그램이 외부 세계와 통신하지 못하게하는 방법은 무엇입니까?

특정 간격으로 게이트웨이 응용 프로그램은 다양한 웹 서비스에서 로컬 데이터베이스로 새 데이터를 다운로드합니다. 마찬가지로 게이트웨이 응용 프로그램은 로컬 데이터베이스 (데스크톱 클라이언트를 통해 사용자가 변경 한 사항)에 대한 변경 사항을 검색하여 해당 변경 사항을 해당 웹 서비스에 업로드합니다.

두 개의 데이터베이스가 실제 사용 용이고 하나는 테스트/디버그 용입니다. 게이트웨이는 app.config에서 연결 문자열을 변경하여이 둘 사이를 전환합니다.

게이트웨이 응용 프로그램을 테스트 할 때 읽기 전용으로 작동하고 싶습니다. 즉, 새로운 데이터를 (테스트/디버그) 데이터베이스에 다운로드 할 수 있지만 이 아니기 때문에은 웹 서비스에 변경 사항을 다시 업로드 할 수 있습니다.

나는이 이제 응용 프로그램과 같이 데이터를 업로드 할 경우 장소에서 #IF의 DEBUG 지시문을 사용하는 것입니다 달성하는 방법 :이 방법은 의존

public void DetectAndUploadChanges() 
{ 
    Uploader Up = new Uploader(); 
    Up.DetectChanges(); 

    #IF !DEBUG 
     Up.UploadChanges(); 
    #END IF 
} 

을 사방 코드를 디버그 지시어를 사용하는 기억 나 일부 유형의 변경 사항을 업로드 할 수 있습니다.

이 유형의 작업을 수행하는 더 나은/다른 방법이 있습니까?

답변

1

DI (Dependency Injection)는 런타임 인스턴스에 삽입 할 때 사용할 수 있습니다.

+0

UploadChanges 메소드에 아무것도 수행하지 않는 업 로더를 삽입 하시겠습니까? –

+0

예 Uploader와 인터페이스가 동일한 DebugUploader와 비슷하지만 UploadChanges 메서드는 아무 작업도 수행하지 않습니다. 컨테이너에서 한 번만 구성하고 프로덕션 환경을 변경해야합니다. –

+0

IoC 컨테이너를 사용하지 않는다고 언급해야합니다. DI를 사용하여 업 로더를 주입 할 수는 있지만 DetectAndUploadChanges의 발신자가 어떤 업 로더를 주입해야하는지 여전히 알아야하므로 도움이 될지 잘 모르겠습니다. 호출자가 어떤 업 로더를 주입할지 결정하는 데 #IF 디버그 체크와 동일한 유형이 필요합니다. –

관련 문제