client validation
이 완료되면 언제 domain level validation
을 수행해야합니까?모델 유효성 검증 vs 도메인 모델 유효성 확인
저는 웹 응용 프로그램에 ASP.NET MVC
을 사용합니다. 내 domain models
과 view models
을 구분하고 싶습니다. 내 도메인 모델에는 내 데이터베이스에서 가져온 데이터가 포함되어 있고 내 뷰 모델에는 내 뷰/페이지의 데이터가 들어 있습니다.
내가 고객 데이터로 작업하고 있다고 가정 해 보겠습니다.
데이터베이스에 Customers
이라는 테이블이 있습니다.
I는 다음과 같이 볼 수있는 고객 클래스해야합니다 :
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
을 그리고 나는 내보기에있는 데이터 만 표현하기 위해 고객 뷰 모델을 만들 것입니다 :
[Validator(typeof(CustomerCreateViewModelValidator))]
public class CustomerCreateViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
을
내 CustomerCreateViewModel
을 허용하고 내 입력 필드를 내보기 모델에 바인딩하는보기를 만들 것입니다 :
@model MyProject.ViewModels.Customers.CustomerCreateViewModel
@using (Html.BeginForm())
{
<table>
<tr>
<td>
@Html.TextBoxFor(x => x.FirstName)
@Html.ValidationMessageFor(x => x.FirstName)
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(x => x.LastName)
@Html.ValidationMessageFor(x => x.LastName)
</td>
</tr>
</table>
<button id="SaveButton" type="submit">Save</button>
}
알 수 있듯이 유효성 검사 규칙이 포함 된 CustomerCreateViewModelValidator
이 있습니다. 사용자가 텍스트 상자에 데이터를 입력하면 제출 버튼을 클릭합니다. 일부 필드가 비어 있으면 유효성 검증이 실패합니다. 모든 필수 필드가 입력되면 유효성 검사가 성공합니다. 내가 가지고
Customer customer = Mapper.Map<Customer>(viewModel);
이 고객의 도메인 모델을 내 저장소 층에 그것을 통과하고 내 테이블에 데이터를 추가 : 나는 다음과 같이 내 도메인 모델을 내보기 모델의 데이터를 매핑합니다.
도메인 모델에서 유효성 검사를 수행해야하는시기는 언제입니까? 내 모든 뷰 모델에 대한 유효성 검사를 수행합니다. 도메인 모델에서 데이터를 데이터베이스에 추가하기 직전에 데이터를 검증 할 수 있지만 뷰 모델에서 유효성이 검증 된 것이 클라이언트 측에서 동일한 유효성 검사를 복제하는 것만은 아닐까요?
누군가이 인증 문제에 대해 의견을 나누시겠습니까?
레이어 사이에 별도의 유효성 검사 규칙이 있습니까? 그 말은, UI에서 유효한 무언가를 도메인에서 유효하지 않은 것으로 간주 할 수 있습니까? –
현재 둘 다 동일해야합니다. 저는 프로젝트에만 국한되지 않는 검증에 대해 일반화하고 있습니다. –
DDD가 유효성을 검사하는 모든 도메인 객체에 대해'Validate()'인스턴스 메소드쪽으로 기울어 졌을지라도 나는 가질 것입니다. 나는 DDD 전문가로부터 멀리 떨어져있다. +1 흥미로운 질문입니다. –