0

개발할 대규모 응용 프로그램의 경우 유효성 검사 프레임 워크를 선택하는 중입니다. 워크 플로 규칙 엔진은 엄격하게 유효성 검사 프레임 워크가 아니지만 워크 플로 기반을 사용하지 않고 단독으로 사용할 수 있습니다. 런타임시 사용되는 데이터베이스에서 규칙을 지정하는 유연성을 제공하는 것으로 보입니다. 그러나 코드에서 규칙을 지정할 수없는 것으로 보입니다.MS 유효성 검사 차단 또는 워크 플로 규칙 엔진?

더 큰 유연성이 요구 사항 중 하나라면 (비즈니스 분석가가 규칙을 편집해야하는 것은 아닙니다) 두 가지 중에서 어느 것을 선호합니까? 그 이유는 무엇입니까?

답변

2

귀하의 정확한 요구 사항은 매우 중요합니다. '유연함'은 측정 할 수 없기 때문에 그 자체로 좋은 요구 사항은 아닙니다. 융통성이 있다면 아주 주관적입니다.

저는 Microsoft Business Rules Engine에 익숙하지 않으므로 이에 대해 언급 할 수 없습니다. 그러나 Microsoft 엔터프라이즈 라이브러리 유효성 검사 응용 프로그램 차단 (VAB)에 매우 익숙하며 작년에 잘 서비스했습니다.

  • 선언적 (속성 사용) 선언과 외부 구성 파일 사용 (엔티티 생성시 매우 유용함)을 모두 허용합니다. .
  • 이 파일에는 사용할 수있는 기본 유효성 검사기 집합이 들어 있으며 사용자 지정 유효성 검사기를 작성할 수 있습니다.
  • 단일 속성의 유효성을 검사하고 여러 속성을 그룹으로 비교할 수 있습니다 (자체 유효성 검사 또는 사용자 지정 유효성 검사기 사용).
  • 개체 그래프뿐만 아니라 격리 된 개체의 유효성을 검사 할 수 있습니다.
  • 여러 개의 '규칙 집합'을 정의 할 수 있습니다. 예를 들어 하드 오류 집합과 경고 집합을 정의 할 수 있습니다.

VAB (또는 전체 엔터프라이즈 라이브러리)를 사용하면 원하는 위치에 비즈니스 규칙을 정의 할 수있는 사용자 지정 구성 소스 (IConfigurationSource)를 작성할 수 있습니다. 따라서 이론적으로 데이터베이스에 저장할 수는 있지만 직접 구성 소스를 작성해야합니다. 그러면 상당한 작업이 될 것입니다. 특히 비즈니스 분석가가 유효성을 정의하고 일종의 편집 도구를 사용하여 데이터베이스를 업데이트 할 수있게하려는 경우 VAB로 수행하는 것이 매우 지옥적 일 것이라고 생각합니다.

비즈니스 사용자가 이러한 규칙을 직접 작성해야한다는 요구 사항이있는 경우이 요구 사항을 지원하는 프로세스가 있어야합니다. 예를 들어 변경 사항이 올바른지 테스트하려면 어떻게해야합니까? 비즈니스 분석가는 프로덕션 데이터베이스를 직접 변경하지 않아도됩니다.

하지만 생각해 보시기 바랍니다. 규칙을 테스트 할 예정이라면 프로덕션 데이터베이스에서 이러한 규칙을 직접 변경하지 않아야합니다. 그렇지 않으면 사실을 테스트 할 것입니다. 따라서 분석가는 자신의 환경에서 규칙을 변경하고이 환경에서 테스트 환경으로, 나중에는 수용 환경으로, 결국 생산 환경으로 새 규칙을 게시 할 것입니다. 그리고 이러한 단계를 밟고 있다면 여전히 비즈니스 규칙을 저장하기 위해 데이터베이스를 사용해야합니까? 구성 파일을 사용하면 데이터베이스를 사용하는 것보다 훨씬 쉬워집니다. 배포는 단순히 여러 테이블의 내용을 데이터베이스에서 데이터베이스로 복사하는 대신 파일 복사본 일뿐입니다.

다른 사람들이 잘 알고있는 유효성 확인 프레임 워크에 대해 어떤 의견을 갖고 싶은지 관심이 있습니다.

+1

@Steven - 규칙 엔진에는 VAB에서 지원하지 않는 규칙의 우선 순위 지정 및 전달과 같은 몇 가지 기능이 있습니다. 기능이 풍부한 프레임 워크를 찾고 있는데 VF가 WF 규칙에 의해 지원되지 않는 것을 지원하지 않는다는 것을 확신하지 못합니다. – Nick

+0

@Steven - VAB를 사용하면 "이 ID가 데이터베이스에없는 경우 유효성 검사 그렇지 않으면 성공하지 못합니다. " DB 액세스 논리가 클래스의 일부로 이동합니까 (SelfValidation 메서드에서)? – Nick

+0

@ User102533 :이 주석 필드는 너무 짧아 "복잡한 DB 특정 유효성 검사 로직이있는 곳"에 대한 질문에 대답 할 수 없지만 여기에있는 다른 스레드의 글에 대해서는 썼습니다. 나는 그것이 당신의 질문에 대답하기를 바랍니다 : http://stackoverflow.com/questions/2258513/validation-framework-in-net-that-can-do-edits-between-fields/2259062#2259062 – Steven

관련 문제