ASP.Net의 3 계층 아키텍처와 MVC (모델, 뷰 컨트롤러)의 차이점


9

동일한 아키텍처가 적용되는 것처럼 ASP.Net의 3-Tier 아키텍처가 MVC (Model, View Controller)와 어떻게 다른지 알고 싶습니다.

3 층에서 우리는이 User Services Layer, BusinessLayer그리고 DataAccessLayer, 우리가 가지고있는 반면에 Model, View하고 Controller. 이것은 나에게 동일한 아키텍처로 보입니다.

두 아키텍처의 차이점이 무엇인지, 각 레이어가 어떻게 다른지 누구나 설명 할 수 있습니까?



2
MVC는 UI 아키텍처로 볼 수 있습니다. 다른 예는 예를 들어 각도이다. ASP.net MVC 프로젝트에서 3 계층 아키텍처를 구현하면 MVC의 모델 (M)이 3 계층으로 분할됩니다.
devfric


@gnat 내가 본 것, 나는 그 이전의 것을 보지 못했다. 그러나 그것은 당신이 말한 것처럼 멍청한 것처럼 보인다. 유일한 것은 오래된 것에 대한 대답이 잘 설명되어 있지 않다는 것, 어떻게 생각 하는가? :)
japzdivino

답변:


18

이것은 사과와 사과 코어의 차이점이 무엇인지 묻는 것과 같습니다. 이 두 아키텍처는 서로를 대체하지 않습니다. 나는 더 정확한보기는 3 계층 아키텍처가 있다고 생각 증대 MVC를.

MVC 아키텍처

  • 모델 : 응용 프로그램에서 "재료"를 나타냅니다. 이 레이어는 나중에 설명 하겠지만 최근 몇 년 동안 약간 퍼지되었습니다.

  • 보기 : 사용자 인터페이스. 사용자가 상호 작용하는 것.

  • 컨트롤러 : 사용자와 모델 계층의 변경에 응답하는 프로그래밍 코드

3 계층 아키텍처

3 계층 아키텍처에서는 서로 다른 책임을 가진 계층이 있습니다.

  • 사용자 서비스 : (또는 일반적으로 "서비스")이 계층은 "모델"계층의 검색 및 수정 조정에 관한 것입니다. 여기에서 복잡한 다단계 작업이 수행됩니다.

  • 비즈니스 계층 : 프로그래밍 코드에 새겨진 비즈니스 규칙을 나타냅니다. 이 계층에는 "비즈니스"가 원하는 것이 시행됩니다.

  • 데이터 액세스 계층 : 영구 데이터 저장소에 액세스하는 하나 이상의 클래스.

MVC와 교차하는 3 계층 아키텍처의 유일한 부분은 "비즈니스 계층"입니다. MVC의 "모델"과 3 계층 아키텍처의 "비즈니스 계층"도 동일한 목표를 달성하려고합니다.

MVC의 "M"이 퍼지되었습니다.

최근 MVC의 "모델"계층이 확장되었습니다. 내가 본 것에서 두 가지, 세 가지 종류의 모델이 있습니다.

  1. 도메인 모델 : "비즈니스"가 관심을 갖는 "사물", 즉 비즈니스 도메인을 나타냅니다. 이 클래스는 비즈니스 규칙을 시행하기 위해 해당 데이터에서 작동하는 데이터 및 모든 절차를 보유합니다. 종종 도메인 모델은 데이터베이스의 테이블에 연결됩니다. 이것은 3 계층 아키텍처의 "비즈니스 계층"에 맞는 것 같습니다.

  2. 뷰 모델 : 도메인 모델의 데이터를 뷰에보다 적합한 것으로 마사지하는 데 사용되는 클래스입니다. 뷰 모델은 비즈니스 로직을 구현하지 않으며 어떠한 종류의 서비스 나 데이터 액세스도 제공하지 않기 때문에 3 계층 아키텍처의 어느 곳에도 적합하지 않습니다.

  3. 비즈니스 모델 : 복잡한 응용 프로그램에서는 비즈니스 로직에서 도메인 모델을 분리해야합니다. 비즈니스 모델에는 비즈니스 규칙을 구현하기 위해 해당 데이터에서 작동하는 데이터 및 절차가 포함되며 도메인 모델은 데이터 만 보유하고 동작은 포함하지 않는 "속성 백"으로 위임됩니다. 도메인 모델은 데이터베이스와 응용 프로그램간에 다른 형태의 데이터 전송 개체가됩니다.

MVC에서 데이터 액세스가 언급 된 곳은 없습니다. 경우에 따라 데이터 액세스가 MVC의 "모델"레이어에 속한다는 것을 알 수 있습니다. 실제로 전체 응용 프로그램을 만들기 위해 3 계층 아키텍처가 MVC와 이루고 있습니다. 하나는 다른 하나를 향상 시키거나 향상시킵니다.

  • 모형
    • 도메인 모델 (MVC / 3 계층)
    • 모델보기 (MVC)
    • (선택 사항) 비즈니스 모델 (MVC / 3 계층)
  • 조회수 (MVC)
  • 컨트롤러 (MVC)
  • 데이터 액세스 (3 계층)
  • 서비스 (3 계층)

교차점이 있지만 크게 분리되어 있으며 더 큰 시스템의 다양한 구성 요소를 분리하고 분리하는 데 함께 사용됩니다.


3

아니요, 동일하지 않습니다.

MVC는 사용자 인터페이스 코드를 구성하기위한 디자인 패턴입니다. 3 계층 아키텍처에서 사용될 수 있으며,이 경우 패턴은 사용자 서비스 계층에 속합니다. 그러나 3 계층이 아닌 응용 프로그램 (예 : 기본 지속성이없고 따라서 데이터 액세스 계층이없는 계산기)의 UI에도 사용할 수 있습니다.

MVC 프런트 엔드가 포함 된 3 계층 아키텍처에서 모델로 사용 된 도메인 개체는 비즈니스 계층의 개체가되지만 MVC 패턴은 실제로 모델이 어떤 종류의 개체인지, 패턴의 역할 만 지정하지는 않습니다. 입니다. 예를 들어 MVVM 변형에서 모델은 도메인 개체 위에 UI 별 어댑터입니다. 이 경우 모델조차도 사용자 서비스 계층에 속합니다.


우선, MVC는 아키텍처 패턴 developer.mozilla.org/en-US/Apps/Fundamentals/… 입니다. 둘째, UI 전용이 아니며 UI에서 널리 사용되지만 매우 결정적인 진술은 잘못되어 오도됩니다.
Daniel Dubovski

2

나는 많은 다른 대답이있을 것이라는 것을 알고 있지만, 이것에 대한 나의 견해를 줄 것이다.

소프트웨어 엔지니어링에서 가장 유명한 답변입니다.

본질적으로 살펴보면 다양한 구현 및 이론적 차이점 외에도 유사한 흐름을 가진 매우 유사한 패턴입니다.

그것이 의존하는 곳은 당신이 구축하고있는 응용 프로그램입니다. 간단한 웹 응용 프로그램은 ORM을 통해 DB와 통신하는 MVC 계층 만 가질 수 있습니다. 더 복잡한 것은 사용자 계층에서 프론트 엔드를 처리하는 MVC를 가질 수 있으며, 데이터 계층은 여러 소스로 구성된 BL 계층에서보다 복잡한 비 사용자 노출 작업이 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.