문제

우리는 설치베이스가 약 50 인 제품을 보유하고 있으며,이 설치의 50% 이상이 비즈니스 로직 코드에 사용자 정의가 있으며 현재는 Muge IF 및 Switch 문으로 수행됩니다.

우리는 현재 코드를 .NET 3.5로 업데이트하고 있으며보다 관리 가능한 방식으로 사용자 정의를 처리하려고합니다. 현재 우리가 생각할 수있는 유일한 방법은 큰 IF 및 스위치 명령문을 고수하거나 각 클라이언트의 소스 코드 제어 내에 분리 된 파일을 갖는 것입니다.

코드베이스에서 많은 수의 사용자 정의를 처리하는 방법이 있습니까?

도움이 되었습니까?

해결책

사용자 정의가 텍스트 형식 (XML 가능성이 있지만 유일한 옵션이 아님)이되도록 사물을 정리하고 싶은 유혹을 받고 있으며, 기본 응용 프로그램은 일반적인 것이며 해당 구성 파일을 구문 분석하여 고객 특정 기능을 가져옵니다.

그런 다음 구성 파일 (및 로고 및/또는 사용자 정의 스크립트와 같은 리소스) 및 기본 응용 프로그램의 저장소가 포함 된 각 고객에 대한 저장소를 가질 수 있습니다.

주어진 고객 버전의 경우 빌드 시스템은 응용 프로그램과 고객의 저장소를 자동으로 수집하고 사용자 정의 버전을 빌드합니다.

나는 그러한 시스템에 대한 경험이 있으며, 당신은 그런 식으로 매우 광범위한 사용자 정의를 얻을 수 있습니다. 구문 분석 기능을 추가해야하기 때문에 처음에는 애플리케이션 측면에서 조금 더 복잡하게 만듭니다. 그러나 다양한 고객 버전의 관리를 훨씬 간단하고 오류가 발생하기 쉽습니다.

다른 팁

이것은 호출되지 않습니다 계승? 사용자 정의 기능을 추가하여 클래스가 기본 클래스에서 확장되도록합니다. 많은 if 또는 case가있을 때마다 여러 클래스에 리팩토링 해야하는지 의문을 제기합니다.

상속과 조합 된 DI 프레임 워크는 시스템을 개방/폐쇄 원칙에 따라 유지하고 모듈화되며 특정 고객을 위해 확장 된 기본 라이브러리를 배포해야 할 때와 같이 수명주기 및 배포 문제를 해결할 수 있습니다.

예를 들어, Baselibrary에서 클래스 전송을 가질 수 있으며 기본 기능을 사용자 정의하는 코드 만 포함 된 CustomerX 라이브러리에서 Class LoggingTransfer가 전송을 확장 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top