2009-04-15 8 views
7

주요 응용 프로그램에 대한 유효성 확인 프레임 워크 중 하나를 선택하려고 시도하고 있는데 두 옵션 모두 유혹적인 것처럼 보입니다. 하나 또는 다른 것을 선택하기 전에 알고 있어야하는 특정 장단점이 있는지 궁금합니다.선택할 유효성 검사 프레임 워크는 다음과 같습니다. 봄 유효성 검사 또는 유효성 검사 응용 프로그램 차단 (Enterprise LIbrary 4.0)?

+0

웹 또는 데스크톱? 다른 entlib 블록을 사용하고 있습니까? 아키텍처를 지정해 주시겠습니까? – boj

+0

웹 응용 프로그램 용입니다. 응용 프로그램에서 필요하므로 보안 및 로깅과 같은 다른 entlib 블록을 사용할 수 있습니다. Unity를 사용하지는 않겠지 만 Spring.NET에서 그 비트를 처리 할 것입니다. –

+1

저는 Spring.NET에 대한 경험이 없지만 EntLib 블록을 좋아합니다. http://weblogs.asp.net/ricardoperes/archive/2009/03/11/asp-net-validation-with-the-enterprise-library-validation-block.aspx 및 http : //www.davidhayden을 읽어야합니다. .com/blog/dave/archive/2007/02/28/PropertyProx – boj

답변

6

속성을 사용한 유효성 검사는 제 관점에서 가장 좋은 해결책은 아닙니다. 먼저 도메인 모델에서 인프라를 참조해야합니다. 둘째, 컴파일 된 클래스에 유효성 검사를 추가 할 기회가 없습니다. 마지막으로 속성을 사용하여 복잡한 논리를 검증 할 수 없으며 Validate 메소드를 엔티티로 만들어야 만합니다.

내 생각에 유효성 검사는 다른 객체로 분리되어야합니다. 예를 들어 유효성을 규칙으로 정의 할 수있는 IValidator입니다. xVal과 같은 프레임 워크를 사용하면 JavaScript로 프리젠 테이션 레이어에서 유효성 검사를 수행하는 데 도움이됩니다.

xValFluentValidation for .NET을 찾고 싶을 수 있습니다. NHibernate Validator 1.2 알파는 구문이 유창하며 xVal과 통합되어 있습니다 (알파는 모르지만 1.0이어야합니다).

엔터프라이즈 검증 블록에도 부정적인면이 거의 없습니다. 내 엔터티의 속성이 3 행의 특성을 갖게되어 가독성이 악화되었습니다. AND 또는 OR 연산자를 사용하여 유효성 검사를 추가하는 것은 상당히 고통 스럽습니다.

+1

유효성 검사 응용 프로그램 블록을 특성과 함께 사용할 필요가 없습니다. 여기에는 구성 기반 검증 방법이 포함됩니다. 이 기사를 읽으십시오 : http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=46 – Steven

+1

Marek이 설명하는 것과 같은 이유로 속성 기반 구성보다 구성 기반 유효성 검사를 선호하는 반면, VAB 5.0은 DataAnnotations에 의해 도입 된 버디 클래스 기술을 사용하여 유효성 검사를 정의합니다. – Steven

+0

xVal은 ASP.NET MVC 1.0과 함께 사용되었으며 현재는 더 이상 사용되지 않습니다. –

3

엔터프라이즈 라이브러리 블록에서 발견 한 한 가지 점은 사용자가 원하지 않거나 필요로하지 않는 다른 블록을 사용하도록 강요 할 수 있다는 것입니다. 예를 들어, 검증 블록은 로깅 블록을 사용할 수 있지만 자신의 로깅 시스템에 만족했습니다. 이제 앱이 여러 가지 방식으로 정보를 기록합니다. 즉, Ent Lib에서 유효성 검사 블록의 모양이 마음에 들었습니다. 나는 Spring.NET tho와 함께하지 않았다.

+0

유효성 검사 응용 프로그램 블록에이 문제가 없었습니다. VAB가 로깅 응용 프로그램 블록을 호출하는 코드 나 위치를 지적 할 수 있습니까? – Steven

+1

더 자세히 살펴 보았지만 엔터프라이즈 라이브러리의 유효성 검사 어셈블리에서 모든 로깅 어셈블리로의 직접 호출은 없습니다. 귀하의 응용 프로그램이 직접 로깅 파트를 사용했다고 생각합니다. 내 응용 프로그램에서는 VAB에만 해당하는 어셈블리 만 게시합니다. VAB 5.0을 사용하려면 Common, Validation, ServiceLocation, Unity, Unity.Configuration 및 Unity.Interception이 필요합니다. – Steven

+0

이것은 이전 버전 일 수 있습니다. 내가 이것을 보았을 때 엔터프라이즈 라이브러리 버전 2.0이었습니다. – SteveM

관련 문제