0

나는 일반적인 개발 전략을 배우고 있지만 그들에 대한 내 마음 속에는 많은 질문이 있습니다. 그 중 하나는 종속성 프리젠 테이션 레이어가 없어야하는 응용 프로그램 계층을 만드는 것입니다. 예를 들어, MVC 응용 프로그램에서는 응용 프로그램 서비스가 있다고 가정 할 수 있지만이 응용 프로그램 서비스는 프레젠테이션 계층에서 들어오는 데이터 모델에 대한 유효성 검사를 확인하지 않습니다. ASP.NET MVC 유효성 검사를 통해서만 컨트롤러에서 검사됩니다. 서비스 계층에는 권한 부여 내용이 안에 들어 있지 않습니다. 모든 작업은 프리젠 테이션 레이어에서 수행됩니다. 그것이 올바른 아키텍처라고 생각합니까? 서비스 계층 내에 모든 유효성 검사와 권한을 다시 포함해야합니까? 네가 그렇다고 말하는데 어떻게?프리젠 테이션 계층에 종속되지 않는 응용 프로그램 계층을 개발 하시겠습니까?

서비스 계층에 권한을 어떻게 포함시킬 수 있습니까? 서비스 레이어 내에서 auhthorizations를 제어하는 ​​방법을 알지 못합니다. 또한 서비스 레이어에서 유효성 검사를 복제해도 괜찮습니까?

프리젠 테이션 레이어가 절대로 바뀌지 않는다면 디자인과 같은 것을 만들 가치가 있습니까?

답변

1

유효성 검사는 도메인 계층에 있어야합니다. DDD 응용 프로그램에서 도메인 (비즈니스) 계층은 자체에 대해 가장 잘 알고 있으므로 유효성 검사를 소유해야합니다. 서비스 계층은 도메인에서 작동하며 도메인 계층에서 발생하는 유효성 검사 오류를 포함한 오류를 처리해야합니다. 이 경우 오류를 처리한다는 것은 서비스 계층 예외에서이를 래핑하고 오류 코드를 반환하고 오류를 로깅하는 것을 의미 할 수 있습니다. 또한 권한 부여는 서비스 계층의 책임이어야합니다. 이는 프레젠테이션 계층 (ASP.NET MVC)이 유효성 검사 또는 권한 부여 검증을 수행해서는 안된다고 말하는 것은 아닙니다. 프레젠테이션 계층의 유효성 검사는 일반적으로 도메인 및 서비스 계층의 유효성 검사보다 가벼우 며 사용자 환경을 개선하기 위해 수행됩니다. 결국 대부분의 유효성 검사가 클라이언트 측에서 수행 될 수 있다면 왜 그렇게하지 않고 서비스 계층에 대한 여행을 저장하지 않을까요? 동일한 논리가 승인에 적용됩니다.

유효성 검사 논리의 중복과 관련하여 모든 경우를 충족시킬 솔루션이 없으며 전반적인 복잡성을 줄이고 유지 관리 능력을 향상시키기 위해 약간의 중복을 허용해야하는 경우가 있습니다. 가장 간단한 방법은 표준 가드를 사용하고 ArgumentException 인스턴스를 던지는 도메인 계층의 유효성 검사를 수행하는 것입니다. ASP.NET MVC에서 유효성 검사를 수행하는 가장 간단한 방법은 데이터 주석 특성을 사용하는 것입니다. 종종 포괄적 인 유효성 검사 시스템을 구현하는 것보다 어느 정도 유효성 검사 논리를 복제하는 것이 더 쉽습니다. 또한 도메인 계층에서만 수행 할 수있는 유효성 검사가있을 수 있으며 이는 별도로 유지하는 또 다른 인수입니다.

서비스 계층의 인증은 다양한 방법으로 수행 할 수 있으며 사용되는 기본 기술에 따라 다릅니다. WCF를 사용하는 경우 승인을 위해 많은 guidelines이 있습니다.

관련 문제