MVC vs n- 계층 아키텍처
MVC (아키텍처 패턴)와 응용 프로그램의 n 계층 아키텍처의 차이점이 정확히 무엇인지 궁금합니다. 나는 그것을 찾았지만 간단한 설명을 찾을 수 없었다. MVC 개념에 대해 약간 순진 할 수 있으므로 누구나 차이점을 설명 할 수 있다면 좋을 것입니다.
건배
N 계층 아키텍처는 일반적으로 네트워크에 의해 분리 된 각 계층을 갖습니다. IE 프레젠테이션 계층은 일부 웹 서버에 있으며 비즈니스 로직을 위해 네트워크를 통해 백엔드 응용 프로그램 서버와 통신 한 다음 다시 네트워크를 통해 데이터베이스 서버와 통신하며 응용 프로그램 서버도 일부 원격 서비스를 호출합니다 ( 결제 처리에 대해서는 Authorize.net이라고 말하십시오).
MVC는 코드의 다른 부분이 일부 응용 프로그램에서 모델, 뷰 및 컨트롤러를 나타내는 책임이있는 프로그래밍 디자인 패턴입니다. 예를 들어 Model 레이어에는 데이터를 저장하고 검색하기 위해 데이터베이스를 호출하는 내부 구현이있을 수 있기 때문에이 두 가지가 관련됩니다. 컨트롤러는 웹 서버에 상주하고 원격으로 앱 서버를 호출하여 데이터를 검색 할 수 있습니다. MVC는 앱 아키텍처가 구현되는 방법에 대한 세부 정보를 추상화합니다.
N 계층은 단지 구현의 물리적 구조를 나타냅니다. MVC 디자인은 종종 N- 계층 아키텍처를 사용하여 구현되기 때문에이 두 가지가 혼동되기도합니다.
3 계층 디자인이 다음과 같은 경우 :
Client <-> Middle <-> Data
MVC 후두둑은 다음과 같습니다.
Middle
^ |
| v
Client <- Data
의미하는 것은 :
- 3 계층에서 계층 간 통신은 양방향 이며 항상 중간 계층을 통과합니다.
- MVC 등가에서 통신은 단방향이다 ; 우리는 각 "계층"이 왼쪽에있는 계층에 의해 업데이트되고 오른쪽에있는 계층을 업데이트 한다고 말할 수 있습니다. "왼쪽"과 "오른쪽"은 단지 예시 일뿐입니다.
PS 클라이언트 것 보기 및 중동 컨트롤러
이것은 무엇 에 대해 말할 n 계층 아키텍처
언뜻보기에 세 가지 계층은 MVC (Model View Controller) 개념과 유사하게 보일 수 있습니다. 그러나 위상 적으로는 다릅니다. 3 계층 아키텍처의 기본 규칙은 클라이언트 계층이 데이터 계층과 직접 통신하지 않는 것입니다. 3 계층 모델에서는 모든 통신이 미들웨어 계층을 통과해야합니다. 개념적으로 3 계층 아키텍처는 선형입니다. 그러나 MVC 아키텍처는 삼각형입니다.보기는 컨트롤러에 업데이트를 보내고 컨트롤러는 모델을 업데이트하며보기는 모델에서 직접 업데이트됩니다.
유일한 유사점은 두 패턴에 다이어그램에 세 개의 상자가 있다는 것입니다. 근본적으로 그들은 그들의 사용에서 완전히 다릅니다. 사실, 일반적으로 사용할 패턴 중에서 선택하는 것이 아니라 두 패턴을 조화롭게 사용할 수 있습니다. 다음은 두 가지를 잘 비교 한 것입니다. http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
3 계층 아키텍처의 기본 규칙은 클라이언트 계층이 데이터 계층과 직접 통신하지 않는 것입니다. 3 계층 모델에서는 모든 통신이 미들웨어 계층을 통과해야합니다.
라이너 아키텍처입니다. 이것은 사용자와 데이터베이스간에 정보를 전달하는 방법에 대한 문제를 해결합니다. MVC가 삼각 구조 인 경우, View는 컨트롤러에 업데이트를 보내고 컨트롤러는 모델을 업데이트하고 뷰는 모델에서 직접 업데이트됩니다. 사용자 인터페이스가 화면에서 구성 요소를 관리하는 방법에 대한 질문을 다룹니다.
@Cherry Middle ware는 MVC 패턴의 요청 핸들러 또는 리디렉터와 더 유사하게 작동합니다.
저에 따르면 Model View Controller가 이와 같이 작동한다고 MVC에 대해 조금 설명하고 싶습니다.
- 클라이언트는 서비스를 요청하여 세션을 시작합니다.
- 이 요청은 컨트롤러 (요청 처리기, 리디렉터 등)에 의해 수신 및 처리됩니다.
- 컨트롤러는 요청에 대한 기본 정보를 처리하고 데이터 요청을 채울 수있는 관련 모델로 리디렉션합니다.
- 컨트롤러가 전달한 매개 변수에 따라 요청을 모델로 채우고 결과를 컨트롤러로 다시 보냅니다. (참고 : 여기서는 진정한 MVC 아키텍처에서 데이터가 클라이언트로 직접 반환되지 않고 채워져 컨트롤러로 반환된다는 것을 분명히하고 싶습니다.)
- 해당 데이터를 View (Client)로 보내는 것보다 컨트롤러.
- 고객이 요청한 서비스를 제공합니다.
그것이 내가 아는 MVC에 관한 모든 것입니다.
휴식을 취하십시오. 실제 문제를 해결할 때 특정 패턴으로 제한하지 마십시오. 몇 가지 일반적인 원칙을 기억하십시오. 그 중 하나는 문제 분리 입니다.
여기서 강조되지 않은 또 다른 주요 차이점은 선형이기 때문에 N 계층 모델에서 N이 반드시 3 계층 일 필요는 없다는 것입니다! 중간 계층이 두 개의 하위 계층 (비즈니스 논리 및 데이터 액세스)을 갖는 3 개의 계층 (프레젠테이션, 앱, 데이터)으로 가장 자주 구현됩니다. 또한 MVC의 모델에는 데이터 조작을위한 데이터 및 비즈니스 로직이 모두 포함될 수 있지만 n- 계층의 별도 계층에 있습니다.
N-Tier 아키텍처는 배포 다이어그램을 사용하여 가장 잘 정의됩니다.
MVC 아키텍처는 시퀀스 다이어그램을 사용하여 가장 잘 정의됩니다.
2는 동일하지 않으며 관련이 없으며 두 아키텍처를 함께 결합 할 수 있습니다. 많은 회사들이 배포 및 확장 성뿐만 아니라 코드 재사용을 위해 N Tier 아키텍처를 만드는 단계를 밟았습니다.
예를 들어 Business Entity 개체는 데스크톱 앱, 클라이언트에 노출 된 웹 서비스, 웹 앱 또는 모바일 앱에서 사용해야 할 수 있습니다. 단순히 MVC 접근 방식을 사용하면 아무것도 재사용하는 데 도움이되지 않습니다.
결론 : N-tier는 아키텍처, MVC는 디자인 패턴입니다. 그들은 두 개의 다른 분야에 적용되는 동일한 은유입니다.
Jerry : 두 사람의 관계를 보여주는 간단한 예가 있습니다 :
Tier 1- 입력 검증, 계산 및 뷰와 관련된 기타 사항을 처리하기 위해 일종의 네트워크 서비스 또는 이와 유사한 컨트롤러를 통해 Tier 2와 통신하는 모델로 구성됩니다. 그리고 여기에는 뷰 자체가 포함되어 있습니다. 물론 데스크톱 응용 프로그램의 GUI 또는 웹 응용 프로그램의 웹 인터페이스 일 수 있습니다.
Tier 2 - Contains some sort of service or other way of recieving messages from Tier 1. Does not/should not know about Tier 1, so can only answer to calls from above - never ask for things by itself. Also contains all business-logic.
Tier 3 - Contains the domain model, object representation of the database and all logic to communicate and update database-entries.
In a three-tier model all communication must pass through the middle tier. Conceptually the three-tier architecture is linear. However, the [model-view-controller] MVC architecture is triangular: the view sends updates to the controller, the controller updates the model, and the view gets updated directly from the model.
참고URL : https://stackoverflow.com/questions/698220/mvc-vs-n-tier-architecture
'Programming' 카테고리의 다른 글
Java에서 .class는 무엇을 의미합니까? (0) | 2020.06.21 |
---|---|
jQuery`click`,`bind`,`live`,`delegate`,`trigger` 및`on` 함수의 차이점은 무엇입니까? (0) | 2020.06.21 |
Xcode는 현재 소프트웨어 업데이트 서버에서 사용할 수 없습니다 (0) | 2020.06.21 |
SQL Server 데이터베이스에서 단일 행 구성 테이블 사용 (0) | 2020.06.21 |
동일한 프로젝트에서 C # 및 VB 혼합 (0) | 2020.06.21 |