2011-01-09 6 views
2

웹에서 비즈니스 계층을 사용하고 일부 비즈니스 계층의 기능이 REST 웹 서비스로 공개되어 있다고 가정합니다.입력 유효성 검사를 수행 할 위치

프리젠 테이션 계층 (웹 또는 REST 웹 서비스) 또는 비즈니스 계층에서 비즈니스 논리에 대한 입력 유효성 검사를 수행하고 프리젠 테이션 계층에서 유효성 오류 (비즈니스 계층에서 발생)를 캡처합니까?

답변

3

의심,

  • 당신은 취급 할 수 있기 때문에 비즈니스 계층에서 비즈니스 로직 (포함 입력 유효성 검사 논리를) 넣어 일반적으로 더 나은 (특히 스프링 프레임 워크가 사용 중입니다) 여러 프리젠 테이션 매체 (예를 들어, 웹 GUI 및 API)는
  • 당신은 그 논리의 두 인스턴스를 코드를 반복하고 관리하지 않으려는

끈적 거리는 d 프레임 워크를 사용하면 일반적인 장소에서 그러한 논리를 정의하고 프리젠 테이션 레이어에서 일찍 잡는 문제를 지원할 수 있습니다. 즉,보다 직관적 인 (오류가 빠르며) 확장 성이 뛰어난 (프런트 엔드가 잡는) 솔루션입니다.

그러나 프레임 워크에서이 기능을 지원하지 않는 경우 일관성과 유지 관리 기능을 선호하고 로직을 비즈니스 계층에 배치해야합니다.

+0

이 켈리를 지적 해 주셔서 감사합니다. 나는이 문제에 동의하지만 문제는, 내가 생각하기에, 나는 비즈니스 레이어에서 유효하지 않은 입력 (검증 에러 등)을 거부 할 수있다. 그러나 프리젠 테이션 레이어에서 더 세밀한 검증 에러 (필드 a와 필드 b를 따로 따로 필요로한다.). 그렇게하기 위해, 모든 유효성 검사를 가능한 가장 좋은 그레인 단위로 비즈니스 계층에 넣은 다음 프레젠테이션 계층에서 적절하게 동작해야합니까? 그렇지 않습니다. 나는 봄의 관점에서 생각하고 있으며 나는 명확한 해결책을 찾지 못했습니다. 나는 봄이 새것으로 포인트를 놓칠 수 있습니다. 모든 설명을 환영합니다. – mete

1

모든 레이아웃에서 유효성 검사를 구현하는 것이 좋습니다. 나는 사용자 경험이 높고 즉각적인 피드백을 얻을 수 있도록 UI를 수행합니다. 하지만 UI에서 제공하는 데이터를 신뢰하지 않습니다 (JS를 비활성화하는 사용자를 생각하십시오). 이제 서버 측 유효성 검사가 얼마나 상세하게되는지는 당신에게 달려 있습니다. 그러나 가능한 경우 사용자가 서버로의 왕복 여행을 피해야합니다.

+0

+1 "UI가 제공 한 데이터를 신뢰하지 않습니다." –

1

비즈니스 규칙 위반은 항상 비즈니스 계층에서 발생해야합니다. 사전 점검을 허용하는지 여부는 디자인 결정이며, 왕복을 피하기 위해 클라이언트에서 열심히 검사 할 것인지 여부도 결정됩니다.

관련 문제