2017-04-27 1 views
0

저는 WPF 응용 프로그램에서 Prism Unity를 사용하며 공유 서비스의 올바른 구현을 이해하는 데 몇 가지 문제가 있습니다.모듈화 공유 서비스 인터페이스 아키텍처 및 Interfaceversiondescription

DLL 프로젝트를 만들고 인터페이스를 추가했습니다.

인터페이스 (DLL) :

public interface IMyservice 
{ 
     string Version { get; } 
     int DoSomething(int x, int y); 
} 

인터페이스 구현 (클래스) 모듈의 내부에서 수행하고 모듈이 호스트 응용 프로그램 시작에로드 물론, 나는 나의 인터페이스 DLL을 추가 내 호스트 응용 프로그램에서 참조하십시오.

ModuleA는 :

public class Myservice : IMyservice 
{ 
    public string Version => "V1.00"; 
    public int DoSomething(int x, int y) 
     { 
      return x + y; 
     } 
} 

나는 나의 호스트 응용 프로그램의 부트 스트 래퍼의 IMyservice을 등록했다. ModuleB Project에 인터페이스 DLL을 참조로 추가 한 다음, 단일 컨테이너에서 해결하여 Myservice의 인스턴스를 사용할 수 있습니다.

container.Resolve<MyService>.DoSomething(1,1); 

질문 :

  1. 이 아키텍처가 유효 또는 내 interface.dll로 인터페이스의 구현을 넣어해야? 나는 다른 사람과 공유하고 싶기 때문에 모듈에서 인터페이스 구현을했다. 내 interface.dll이 아니라 구현. 모듈화하고 싶기 때문에 구현을 moduleA에 넣었습니다.

  2. 이 아키텍처가 유효한 디자인이라면 런타임 중에 moduleA 버전 설명이 아닌 내 interface.dll의 버전 설명을 어떻게 처리 할 수 ​​있는지 알고 싶습니다.

+0

_implementation_ 또는 _interface_ 버전을 사용 하시겠습니까? 현재 구현 버전을 버전 화하고 'AdvancedServcie'는'Version'에 대해'V2.00'를 반환하지만 모두 동일한 인터페이스를 구현합니다. 이 관련 질문에 대한 내 대답을 살펴보십시오. https://stackoverflow.com/questions/40827080/c-sharp-prism-for-wpf-common-modules-libraries-upgrading-strategy/40827662#40827662 – Haukinger

+0

인터페이스와 구현 모두 버전이지만 서로 독립적입니다. – Shazter

답변

0

난 그냥 인터페이스의 새 버전을 추가, 그럼 당신은 올바른 궤도에있어 서로

에서 버전 인터페이스와 구현하지만, 독립적 인 모두 싶습니다. 알다시피, 다른 인터페이스는 다른 인터페이스가 있습니다. 아무리 진화했는지 여부에 관계없이 ... IMyService, IMyService2, IMyAdvancedService 등으로 끝날 것이며 서비스 소비자는 다음을 수행해야합니다. 그들 중 어느 쪽이 구현을 가지고 있는지 살펴보고 상호 작용할 구현 중 하나를 선택하십시오.

어쨌든 유니티에는 물론 프리즘에도 마법이 없습니다.

관련 문제