저는 깨끗하게 공부하고 있으며 결과적으로 소프트웨어를 디자인하고 작성하는 방법을 상당히 많이 재고하고 있습니다.
그래도 여전히 씨름하고있는 것은 "일부 항목에 대한 업데이트 저장시 먼저로드 /보기 / 수정 권한이있는 모든 항목 목록 등의 비즈니스 규칙에 대한 것입니다.이 항목이 목록에 있는지 확인하십시오. 항목 카테고리가 현재 사용 (및 기타 규칙 등)에서 잠기지 않았습니다. ".. 왜냐하면 (복잡하지만 비정형적인) 비즈니스 규칙이기 때문에 비즈니스 로직을 적용하기보다는 애플리케이션 도메인에서 처리해야합니다. db / persistence 레이어
그러나 이러한 조건을 효율적으로 확인하려면 모든 데이터를 응용 프로그램 도메인에로드하는 대신 잘 만들어진 db 쿼리로 처리하는 것이 가장 좋습니다 ...
조기에 최적화하지 않으면이 질문을 다루는 권장되는 접근 방식이나 Bob의 아저씨 기사가 무엇입니까? 또는 "문제가 될 때까지 도메인에서 확인"이라고 말합니까?
가장 기본적인 사용 사례 이외의 다른 좋은 예제 / 샘플을 찾기 위해 고심하고 있습니다.
최신 정보:
안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 더 명확해야했고, 오랫동안 (대부분 웹 응용 프로그램) 소프트웨어를 작성해 왔으며, 이미 포괄적으로 설명하는 모든 주제에 대해 이미 경험하고 동의했습니다 (백엔드로 확인, 클라이언트 데이터를 신뢰하지 않음, 일반적으로 말하기 필요할 때만 원시 효율성을 추구하지만, 사용 가능한 경우 db 툴의 장점을 인정하는 등) "모두 함께 던져"라는 개발자 학습 라이프 사이클을 거쳐 "N- 계층 애플리케이션으로 거대한 지방 컨트롤러 구축"코드 추세 , 그리고 최근에는 프로젝트가 발전하고 고객의 요구 사항이 더욱 밝아짐에 따라 최근에 상당히 어수선하고 널리 분산 된 비즈니스 규칙으로 발전한 몇 가지 프로젝트의 결과로 청정 / 단독 책임 스타일 등을 실제로 좋아하고 조사하고 있습니다.
특히, 클라이언트와 내부 사용 기능을위한 REST API를 구축하는 맥락에서 Clean 스타일 아키텍처를 살펴보고 있습니다. 여기서 많은 비즈니스 규칙은 기본적으로 인터넷에서 보는 모든 예제보다 훨씬 더 복잡 할 수 있습니다. (Clean / Hex 아키텍처 사용자들조차도).
따라서 Clean과 REST API가 함께 앉아있는 방법에 대해 실제로 묻고 있었으며 명확하게 설명하지 못했습니다. 요즘 대부분의 MVC 항목에는 들어오는 요청 유효성 검사기 (예 : .NET의 FluentValidation 라이브러리)가 있지만 내 "유효성 검사"규칙은 "이것은 50 자 미만의 문자열입니까?"가 아니라 "이 사용자 사례 / 인터랙 터를 호출하는이 사용자가 일부 관련 오브젝트가 현재 팀 X에 의해 잠겨있는 경우이 데이터 콜렉션에서이 조작을 수행 할 수 있습니까?" 비즈니스 도메인 객체의 LOTS 및 도메인 규칙이 적용되는 종류의 깊이있는 검증.
FluentValidator 프로젝트에서 영감을 얻었지만 더 많은 비즈니스 로직과 데이터 액세스가 포함 된 각 유스 케이스 인터랙 터와 함께 특정 규칙의 Validator-object 유형으로 규칙을 분리해야하는 경우 게이트웨이와 같은 유효성 검사를 처리해야합니까? 그 유효성 검사를 게이트웨이에 넣으십시오 (잘못 생각합니다) 등
참고로, 내가 좋아하는 몇 가지 기사 떨어져 가고 이 있지만, 마티아는 많은 검증을 설명하지 않습니다.
그러나 내 질문에 대한 짧은 대답은 내가 받아 들인 대답과 매우 비슷하다고 생각합니다.