우리는 서로 다른 버전의 소프트웨어 서비스 레이어를 실행하는 다른 클라이언트를 보유하고 있습니다. 최신 서비스 구성 요소에는 이전 서비스 구성 요소에는없는 일부 기능이 있습니다. 우리는 우리의 모든 고객에게 제공하고자하는 새로운 프리젠 테이션 레이어를 만들기 위해 노력하고 있습니다. 이전 서비스를 사용하는 클라이언트는 작동하지만 클라이언트가 최신 서비스 계층을 실행하는 경우 최신 기능에 액세스 할 수 있어야합니다.서비스 레이어 버전 간의 기능 차이점 처리
가능한 모든 기능상의 차이점에 대해 if 문으로 코드를 낭비하지 말고, 특히 서비스 계층에 새로운 기능을 추가하고 지원할 예정입니다. 그렇다면이 기능의 차이를 가장 깨끗하게 처리하기 위해 디자인 패턴을 제안 하시겠습니까?
멋진 제안을위한 Upvoting. 뷰와 컨트롤러가 버전 번호에 대해 전혀 알지 못하는 솔루션을 원하고 있습니다. 저장소 기능 만 다릅니다. 우리는 저장소에 의존성을 컨트롤러에 주입하기 때문에 우리는 DI 프레임 워크에 맡겨서 우리가 어느 버전을 사용하는지 알 수 있습니다. – traffichazard
동일한 접근 방식은 버전 번호 대신 필수 인터페이스 또는 속성 이름을 사용하여 작동합니다. 여러 기능을 확인해야하는 경우 필터 속성 방법을 사용해야합니다. 뷰의 경우 RenderAction과 RenderPartial 사이에 무언가를 설정할 수 있습니다. 필터 메소드는 필터 속성을 확인할 수 있도록 액션 메소드를 호출하지만 모델은 액션에 의해 생성되는 것이 아니라 매개 변수로 전달됩니다. –