저는 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);
질문 :
이 아키텍처가 유효 또는 내 interface.dll로 인터페이스의 구현을 넣어해야? 나는 다른 사람과 공유하고 싶기 때문에 모듈에서 인터페이스 구현을했다. 내 interface.dll이 아니라 구현. 모듈화하고 싶기 때문에 구현을 moduleA에 넣었습니다.
이 아키텍처가 유효한 디자인이라면 런타임 중에 moduleA 버전 설명이 아닌 내 interface.dll의 버전 설명을 어떻게 처리 할 수 있는지 알고 싶습니다.
_implementation_ 또는 _interface_ 버전을 사용 하시겠습니까? 현재 구현 버전을 버전 화하고 'AdvancedServcie'는'Version'에 대해'V2.00'를 반환하지만 모두 동일한 인터페이스를 구현합니다. 이 관련 질문에 대한 내 대답을 살펴보십시오. https://stackoverflow.com/questions/40827080/c-sharp-prism-for-wpf-common-modules-libraries-upgrading-strategy/40827662#40827662 – Haukinger
인터페이스와 구현 모두 버전이지만 서로 독립적입니다. – Shazter