글쎄, 응용 프로그램 (UI) 로직의 주소 부분이나 도메인 요구 사항의 일부분을 확인하고 있습니까?
앱 기능이라면 앱 레이어에 들어갑니다. 핵심 도메인 기능인 경우 도메인 계층에 포함됩니다.
예를 들어 미래에 다른 주소 확인 서비스를 사용하기로 결정한 경우 커플 링이 우려된다면 그 위에 추상화를 적용하십시오. 인터페이스 및 래퍼 클래스를 만듭니다.
public interface IAddressValidator
{
bool ValidateAddress(Address address);
}
public class FooAddressValidator : IAddressValidator
{
private FooService service;
public FooAddressValidator(FooService service)
{
this.service = service;
}
public bool ValidateAddress(Address address)
{
return service.ValidateAddress(address.StreetLine1, address.City,
address.State, address.Country);
}
}
또는 논리가 무엇이든간에. 그런 다음 응용 프로그램 (또는 도메인 모델)을 서비스 자체 대신 IAddressValidator
에 종속시키고 최 외 계층의 콘크리트 IAddressValidator
인스턴스에 팬으로 만듭니다.
코어 모델 IAddressValidator
을 도메인 모델에 넣고 FooAddressValidator
을 실행 파일에서만 참조되는 외부 어셈블리에 보관할 수 있습니다. 이렇게하면 도메인이 실제로 웹 서비스에 종속되지는 않지만 도메인 논리의 일부로 주소 유효성 검사를 계속할 수 있습니다.
실제로 웹 서비스 호출을 할 필요가 없기 때문에 주소 유효성 검사 구성 요소를 사용하는 것이 훨씬 쉽습니다. 다른 MockAddressValidator
인스턴스를 사용할 수 있습니다.
의견을 보내 주셔서 감사합니다. 나는 이것이 핵심 도메인 기능이며 모든 애플리케이션이 주소의 유효성을 검사 할 수 있어야한다고 생각한다. 다시 한번 감사드립니다. –