답변:
논리 계층 은 코드를 구성하는 방법 일뿐입니다. 일반적인 계층에는 기존 3 계층 모델과 동일한 프레젠테이션, 비즈니스 및 데이터가 포함됩니다. 그러나 계층에 대해 이야기 할 때 논리적 인 코드 구성에 대해서만 이야기합니다. 이러한 계층이 단일 컴퓨터의 다른 컴퓨터 나 다른 프로세스에서 실행되거나 단일 컴퓨터의 단일 프로세스에서 실행될 수 있음을 의미하지는 않습니다. 우리가하고있는 일은 코드를 특정 기능으로 정의 된 일련의 계층으로 구성하는 방법을 논의하는 것입니다.
그러나 물리적 계층 은 코드가 실행되는 위치에 관한 것입니다. 특히 계층은 계층이 배포되고 계층이 실행되는 위치입니다. 즉, 계층은 계층의 물리적 배포입니다.
출처 : Rockford Lhotka, 모든 앱이 n 계층이어야합니까?
이 문제에 관한 Scott Hanselman의 게시물을 읽으십시오 : http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx
그러나 "Scott World"(당신의 세계이기도하다 :)에서 "Tier"는 배치 단위이고 "Layer"는 코드 내에서 책임의 논리적 분리입니다. "3 계층"시스템이 있지만 하나의 랩톱에서 실행 중이라고 말할 수 있습니다. "3 계층"시스템이지만 데이터베이스와 통신하는 ASP.NET 페이지 만 있다고 말할 수 있습니다. 친구에게는 정밀함이 있습니다.
레이어는 코드의 논리적 분리를 나타냅니다. 논리 레이어는 코드를보다 잘 구성하는 데 도움이됩니다. 예를 들어 응용 프로그램은 다음과 같은 계층을 가질 수 있습니다.
1) 프레젠테이션 레이어 또는 UI 레이어 2) 비즈니스 레이어 또는 비즈니스 로직 레이어 3) 데이터 액세스 레이어 또는 데이터 레이어
aboove 3 개의 레이어는 자체 프로젝트에 있으며 3 개 이상의 프로젝트 일 수 있습니다. 프로젝트를 컴파일 할 때 각 레이어 DLL을 얻습니다. 이제 3 개의 DLL이 있습니다.
애플리케이션 배포 방식에 따라 1 ~ 3 개의 계층이있을 수 있습니다. 이제 3 개의 DLL이 있으므로 모든 DLL을 동일한 컴퓨터에 배포하면 1 개의 물리적 계층 만 있고 3 개의 논리적 계층이 있습니다.
각 DLL을 별도의 컴퓨터에 배포하기로 선택한 경우 3 개의 계층과 3 개의 계층이 있습니다.
따라서 계층은 논리적 분리이며 계층은 물리적 분리입니다. 계층은 계층의 물리적 배포라고도 말할 수 있습니다.
왜 항상 복잡한 단어를 사용하려고합니까?
층 = 코드의 일부 응용 프로그램이 케이크 인 경우,이 조각입니다.
계층은 = 실제 머신 , 서버를.
계층은 하나 이상의 계층을 호스팅합니다.
레이어의 예 :
층:
코드가 서버에서 호스팅 됨 = 코드가 계층에서 호스팅 됨
코드는 2 대의 서버에서 호스팅됩니다 = 코드는 2 개의 계층에서 호스팅됩니다.
예를 들어 웹 사이트 자체 (프레젠테이션 계층)를 호스팅하는 한 시스템과 보안에 민감한 모든 코드 (실제 비즈니스 코드-비즈니스 계층, 데이터베이스 액세스 계층 등)를 호스팅하는 시스템이 더 안전합니다.
계층 구조를 구현하면 많은 이점이 있습니다. 이는 까다 롭고 계층화 된 응용 프로그램을 올바르게 구현하는 데 시간이 걸립니다. 일부가있는 경우 Microsoft 의이 게시물을 살펴보십시오. http://msdn.microsoft.com/en-gb/library/ee658109.aspx
평상 영어로, Tier
"각각의 다른 층 위에 배치 된 일련의 행 또는 레벨의 구조"를 Layer
의미하는 반면, "표면 또는 몸체를 덮는 재료의 시트, 양 또는 두께, 전형적으로 몇 가지 중 하나" ".
Tier는 코드 / 프로세스가 실행 되는 물리적 단위 입니다. 예 : 클라이언트, 애플리케이션 서버, 데이터베이스 서버;
Layer는 코드를 구성 하는 논리적 단위 입니다. 예 : 프리젠 테이션 (보기), 컨트롤러, 모델, 리포지토리, 데이터 액세스
계층은 별도의 컴퓨터와 시스템에서 디자인의 프레젠테이션, 비즈니스, 서비스 및 데이터 기능을 물리적으로 분리 한 것을 나타냅니다.
계층은 응용 프로그램이나 서비스를 구성하는 소프트웨어 구성 요소의 논리적 그룹입니다. 구성 요소가 수행하는 여러 종류의 작업을 구분하여 구성 요소의 재사용 성을 지원하는 디자인을보다 쉽게 만들 수 있습니다. 각 논리 계층에는 하위 계층으로 그룹화 된 여러 개별 구성 요소 유형이 포함되어 있으며 각 하위 계층은 특정 유형의 작업을 수행합니다.
2 계층 패턴은 클라이언트와 서버를 나타냅니다.
이 시나리오에서 클라이언트와 서버는 동일한 시스템에 있거나 두 개의 다른 시스템에있을 수 있습니다. 아래 그림은 클라이언트가 클라이언트 계층에있는 웹 서버와 상호 작용하는 일반적인 웹 응용 프로그램 시나리오를 보여줍니다. 이 계층에는 프리젠 테이션 계층 논리 및 필요한 비즈니스 계층 논리가 포함됩니다. 웹 응용 프로그램은 데이터 계층 논리가 포함 된 데이터베이스 계층을 호스팅하는 별도의 컴퓨터와 통신합니다.
레이어 및 계층의 장점 :
계층화를 사용하면 코드의 유지 관리 성을 최대화하고 다른 방식으로 배포 할 때 응용 프로그램의 작동 방식을 최적화하며 특정 기술 또는 설계 결정을 내려야하는 위치를 명확하게 설명 할 수 있습니다.
계층을 별도의 물리적 계층에 배치하면 여러 서버에로드를 분산시켜 성능을 향상시킬 수 있습니다. 또한보다 민감한 구성 요소와 계층을 다른 네트워크 나 인터넷 또는 인트라넷으로 분리하여 보안에 도움을 줄 수 있습니다.
1 계층 응용 프로그램은 3 계층 응용 프로그램 일 수 있습니다.
예, 친애하는 친구들이 올바르게 말했습니다. 계층은 응용 프로그램의 논리적 파티션이지만 계층은 시스템의 물리적 파티션입니다. 계층 파티션은 계층 파티션에 따라 다릅니다. 응용 프로그램이 단일 컴퓨터에서 실행되는 것처럼 3 계층 구조를 따르므로 계층 구조에 계층 구조가 존재할 수 있다고 말할 수 있습니다. 간단히 말해서 3 계층 아키텍처는 단일 머신으로 구현할 수 있으며 1 계층 아키텍처라고 말할 수 있습니다. 각 계층을 별도의 시스템에 구현하면 3 계층 아키텍처라고합니다. 계층은 여러 계층을 실행할 수도 있습니다. 계층 구조에서 관련 구성 요소는 서로 쉽게 통신 할 수 있습니다.
우리가 아래에 주어진 아키텍처를 따르는 것처럼
클라이언트는 "프레젠테이션 계층"과 상호 작용할 수 있지만 보안상의 이유로 비즈니스 로직 계층의 공용 구성 요소와 같은 아래 계층의 공용 구성 요소에 "비즈니스 로직 계층"에 액세스합니다.
Q * 왜 계층 아키텍처를 사용합니까? 레이어 아키텍처를 구현하면 다음과 같이 애플리케이션 효율성이 향상되기 때문입니다.
==> 보안
==> 관리 성
==> 확장 성
응용 프로그램을 개발 한 후 dbms를 변경하거나 비즈니스 논리 등을 수정 해야하는 등 다른 필요가 있습니다. 그런 다음 모두에게 필요합니다.
Q * 계층 구조를 사용하는 이유는 무엇입니까?
각 계층의 물리적 구현은 계층 아키텍처없이 더 나은 효율성을 제공하기 때문에 계층 아키텍처를 구현할 수 없습니다. 별도의 계층을 구현하는 별도의 시스템과 별도의 계층은 하나 이상의 계층을 구현하므로이를 사용합니다.
내결함성을 위해 사용합니다. ==> 쉬운 유지.
간단한 예
약실에서 은행을 개설하는 것처럼 직원은 다음과 같습니다.
그것들은 모두 시스템의 관련 구성 요소입니다.
우리가 대출 목적으로 은행에 가면 먼저 게이트 키퍼가 미소로 문을 연 다음 관리자 오두막에 가서 대출을 통과 한 후 모든 대출 계획을 소개하는 사람 근처에 간다. 그 후 우리는 계산원의 카운터 테이크 대출에 간다. 이들은 은행의 계층 구조입니다.
계층은 어떻습니까? 은행 지점은 한 도시에서, 그 후 다른 도시에서, 그 후에 다른 지점에서 열리지 만 각 지점의 기본 요구 사항은 무엇입니까?
레이어와 티어의 개념이 동일합니다.
계층 은 related-functionality[code]
응용 프로그램 내에서 논리적으로 분리되어 있으며 계층 간 통신은 명시적이고 느슨하게 결합되어 있습니다. [발표 논리, 응용 논리, 데이터 액세스 논리]
계층 은 layers
개별 컴퓨터 (프로세스)에서 [개별 서버에서 호스팅되는] 물리적 분리입니다 .
다이어그램에 표시된대로 :
1-Tier & 3-Layers « App Logic with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer « Browser View[php], App Logic[jsp], DataStorage
n- 계층 이점 :
보안
확장 성 향상 : 조직이 성장함에 따라 다른 계층을 건드리지 않고 DB-Clustering을 사용하여 DB-Tier를 확장 할 수 있습니다.
유지 관리 성 : 웹 디자이너는 다른 계층의 다른 레이어를 건드리지 않고 View 코드를 변경할 수 있습니다.
쉽게 업그레이드 또는 향상 [예 : 모바일, 태블릿, PC와 같은 별도 장치에 대한 추가 응용 프로그램 코드, 업그레이드 저장 영역을 추가하거나 여러 프레젠테이션 레이어를 추가 할 수 있음]
Microsoft Application Architecture Guide 2 의 아래 설명이 마음에 듭니다.
계층은 응용 프로그램에서 기능 및 구성 요소의 논리적 그룹을 설명합니다. 계층은 별도의 서버, 컴퓨터, 네트워크 또는 원격 위치에 기능 및 구성 요소의 물리적 분포를 설명합니다. 계층과 계층 모두 동일한 이름 세트 (표시, 비즈니스, 서비스 및 데이터)를 사용하지만 계층 만 물리적 분리를 의미합니다.
기술적으로 Tier는 코드를 실행하는 데 필요한 일종의 최소 환경 일 수 있습니다.
예를 들어 3 계층 앱은
OS가없는 3 개의 가상 머신이있는 1 개의 물리적 머신.
(3 단계 (하드웨어) 계층 앱이었습니다)
3 개의 다른 / 동일 OS가있는 3 개의 가상 머신이있는 1 개의 물리적 머신
(이것은 3- (OS) 계층 앱이었습니다)
1 개의 OS가 있지만 3 개의 AppServer가있는 1 개의 가상 시스템이있는 1 개의 물리적 시스템
(그것은 3- (AppServer) 계층 앱이었습니다)
1 개의 가상 머신이있는 1 개의 물리적 머신, 1 개의 OS가 있고 1 개의 AppServer, 3 개의 DBMS
(이것은 3- (DBMS) 계층 앱이었습니다)
1 개의 가상 머신이 있고 1 개의 OS가 있고 1 개의 AppServer가 있고 1 개의 DBMS가 있지만 3 개의 Excel 통합 문서가있는 1 개의 실제 머신.
(그것은 3- (AppServer) 계층 앱이었습니다)
Excel 통합 문서는 VBA 코드를 실행하는 데 필요한 최소 환경입니다.
이 3 개의 통합 문서는 단일 실제 컴퓨터 또는 여러 컴퓨터에있을 수 있습니다.
앱 설명 컨텍스트에서 사람들이 "티어"라고 말하면 실제로 "OS 계층"을 의미한다는 것을 알았습니다.
앱이 3 개의 별도 OS에서 실행되고 3 계층 앱에서 실행되는 경우입니다.
따라서 앱을 설명하는 올바른 방법은
"1 ~ 3 계층 지원, 2 계층에서 실행"앱.
:)
레이어는 앱과의 기능 분리 (예 : 프리젠 테이션, 데이터, 보안 등)와 관련하여 코드 유형에 불과합니다.
프레젠테이션, 서비스, 데이터, 네트워크 계층에 대해 이야기 할 때 계층에 대해 이야기하고 있습니다. "별도로 배포"할 때 계층에 대해 이야기합니다.
계층은 배포에 관한 것입니다. 이 방법으로 가져 가십시오 : 우리는 Angular로 작성된 프론트 엔드가있는 응용 프로그램을 가지고 있으며 MongoDB와 같은 백엔드와 프론트 엔드와 백엔드 사이에서 상호 작용하는 중간 계층이 있습니다. 따라서이 프런트 엔드 응용 프로그램, 데이터베이스 응용 프로그램 및 중간 계층이 모두 개별적으로 배포되면 3 계층 응용 프로그램이라고합니다.
이점 : 향후 백엔드를 확장해야하는 경우 백엔드를 독립적으로 확장하면되므로 프런트 엔드를 확장 할 필요가 없습니다.