문제

모든 사람이 MVC에 대해 이야기하고 있으므로 비즈니스 규칙이 해결되지 않는다는 것을 알았습니다. 3 계층 아키텍처의 예전에는 비즈니스 규칙이 중간 계층에있었습니다. 그들은 새로운 MVC에서 어디에 떨어 집니까?

도움이 되었습니까?

해결책

처음에는 브러시가 모델에 속한다고 말하고 싶습니다. 그만큼 Wikipedia의 MVC 항목 "MVC에서 모델은 응용 프로그램의 정보 (데이터)와 데이터를 조작하는 데 사용되는 비즈니스 규칙을 나타냅니다." 결국, '비즈니스 규칙'에 의해 우리는 입력/출력 관련 논리와 달리 응용 프로그램이 관련된 도메인을 인코딩하는 기능적 알고리즘과 논리를 의미합니다. 이러한 핵심 비즈니스 관련 논리는 사용자에게 표시되는 내용 (뷰의 도메인) 또는 사용자 입력 (주로 컨트롤러가 수신 함)에 따라 변경되지 않아야합니다.

내 경험상, 이런 종류의 질문을하는 것은 소프트웨어 개발 과정에서 매우 드러났습니다. 우리는 일부 사람들이 '비즈니스 규칙'으로 간주되었지만 다른 것으로 판명 된 많은 것들을 발견했습니다. 그것이 진정한 비즈니스 규칙이 아닌 경우 모델에 속하지 않을 수 있습니다.

다른 팁

MVC 주소 "비즈니스 규칙"을 보지 못하는 이유는 MVC가 전반적으로 프레젠테이션 패턴이기 때문입니다. 응용 프로그램을 구성하는 방법에 중점을 둡니다. 예를 들어, 모델은 프레젠테이션 모델로 생각할 수 있습니다. 뷰가 렌더링되는 응용 프로그램 모델.

그러나 프레젠테이션 모델을 만들려면 일반적으로 모든 비즈니스 로직이 살고있는 도메인 모델로 이동해야합니다. 이 시점에서 MVC는 해당 코드가 물리적으로 사는 곳을 지시하지 않습니다. 다른 계층에 있습니까? MVC는 신경 쓰지 않습니다.

비즈니스 규칙은 항상 모델에 살고 있습니다. 이 모델은 완전히 다른 UI로 실현할 수있는 비트입니다. 보기는 분명히 UI 선택에 완전히 의존하며 컨트롤러는 모델에서 데이터를 가져 와서보기를 알려야합니다.

비즈니스 로직을 시야에 넣는 것은 구조를 프레젠테이션에 연결하기 때문에 나쁘다.

비즈니스 로직을 컨트롤러에 넣는 것은 모델에서 지속 된 데이터와 컨트롤러의 규칙간에 비즈니스 도메인을 분할하기 때문에 나쁩니다.

위키 백과의 인용문 기사:

MVC는 종종보기가 실제 HTML 페이지 인 웹 애플리케이션에서 볼 수 있으며 컨트롤러는 동적 데이터를 수집하고 HTML 내에서 컨텐츠를 생성하는 코드입니다. 마지막으로, 모델 실제 컨텐츠로 표시되며 일반적으로 데이터베이스 또는 XML 노드에 저장됩니다. 그리고 비즈니스 규칙 이는 사용자 작업에 따라 해당 내용을 변형시킵니다.

MVC와 NTIER를 혼합 할 수없는 이유가 있습니까? 우리의 응용 프로그램은 바로 그렇게합니다. 당사의 컨트롤러는 데이터 검증에 사용되며 어떤 비즈니스 계층 호출을 결정합니다.

ourapp.web -asp.net mvc 프로젝트
ourapp.business- 비즈니스 계층 라이브러리
ourapp.dataaccess- 데이터 계층 라이브러리
ourApp.entities- 기본적으로 모든 레이어가 공유하는 모든 '모델'

비즈니스 규칙은 컨트롤러가 아닌 모델에 있어야합니다. 컨트롤러와보기는 프레젠테이션 계층의 일부입니다.

모델은 도메인의 엔티티 및 기능을 나타냅니다 ..

컨트롤러는 단지 사용자 입력 및 요청을 취하는 관리자 일뿐입니다. 모델 내에서/작업을 수행하고 프레젠테이션 계층에서보기에 매핑합니다. 컨트롤러는 중재자 일뿐 아니라보기 또는 컨트롤러가 모델에 작용할 수 있습니다.

이것은 고대에 게시 된 질문이지만, 규칙 저장소가 응용 프로그램의 일부와 완전히 독립적 인 것을 좋아합니다. 비즈니스 계층의 여러 구현, 비즈니스 규칙 저장소의 정적 렌더링에 액세스 할 수 있어야합니다. 이와 같은 간단한 분리 결정은 예를 들어 데스크탑 -> 웹에서 마이그레이션됩니다.

내 아키텍처,보기 -> 모델 -> 컨트롤러 -> 비즈니스 계층 -> 규칙 저장소에서, 즉 컨트롤러는 비즈니스 계층/계층에 의해 제시된 거친 데이터에 액세스하여이를 제시 가능한 형태로 마사지하는 모델에 공급됩니다. 수동적으로 표시됩니다. 프레젠테이션 형식에서 재사용 할 수있는 비즈니스 계층에는 명시 적 규칙이 있으며 암시 적 규칙이있는 하위 시스템에 액세스 할 수 있습니다. 설계에 의해, 각 구성 요소는 그 위의 구성 요소의 세부 사항을 무지합니다.

문제는 정의의 문제라고 생각합니다. 필요한 순서대로 화면을 제시하기위한 논리는 컨트롤러 문제이며 규칙 엔진을 사용하여 주문을 결정하고 사용자에게 필요한 입력이 필요한 프로젝트를 보았습니다. 이것은 비즈니스 규칙 IMHO와 동일하지 않습니다.

너희들은 틀렸다. 비즈니스 규칙은 모델이 아닌 컨트롤러 내에 살고있다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top