"계층"과 "계층"의 차이점은 무엇입니까?


215

"계층"과 "계층"의 차이점은 무엇입니까?


4
소프트웨어 분야에서 만난 거의 모든 사람들이이 두 용어를 마치 동일한 것으로 사용합니다.
RBT

답변:


260

논리 계층 은 코드를 구성하는 방법 일뿐입니다. 일반적인 계층에는 기존 3 계층 모델과 동일한 프레젠테이션, 비즈니스 및 데이터가 포함됩니다. 그러나 계층에 대해 이야기 할 때 논리적 인 코드 구성에 대해서만 이야기합니다. 이러한 계층이 단일 컴퓨터의 다른 컴퓨터 나 다른 프로세스에서 실행되거나 단일 컴퓨터의 단일 프로세스에서 실행될 수 있음을 의미하지는 않습니다. 우리가하고있는 일은 코드를 특정 기능으로 정의 된 일련의 계층으로 구성하는 방법을 논의하는 것입니다.

그러나 물리적 계층 은 코드가 실행되는 위치에 관한 것입니다. 특히 계층은 계층이 배포되고 계층이 실행되는 위치입니다. 즉, 계층은 계층의 물리적 배포입니다.

출처 : Rockford Lhotka, 모든 앱이 n 계층이어야합니까?


43

이 문제에 관한 Scott Hanselman의 게시물을 읽으십시오 : http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

그러나 "Scott World"(당신의 세계이기도하다 :)에서 "Tier"는 배치 단위이고 "Layer"는 코드 내에서 책임의 논리적 분리입니다. "3 계층"시스템이 있지만 하나의 랩톱에서 실행 중이라고 말할 수 있습니다. "3 계층"시스템이지만 데이터베이스와 통신하는 ASP.NET 페이지 만 있다고 말할 수 있습니다. 친구에게는 정밀함이 있습니다.


36

레이어는 코드의 논리적 분리를 나타냅니다. 논리 레이어는 코드를보다 잘 구성하는 데 도움이됩니다. 예를 들어 응용 프로그램은 다음과 같은 계층을 가질 수 있습니다.

1) 프레젠테이션 레이어 또는 UI 레이어 2) 비즈니스 레이어 또는 비즈니스 로직 레이어 3) 데이터 액세스 레이어 또는 데이터 레이어

aboove 3 개의 레이어는 자체 프로젝트에 있으며 3 개 이상의 프로젝트 일 수 있습니다. 프로젝트를 컴파일 할 때 각 레이어 DLL을 얻습니다. 이제 3 개의 DLL이 있습니다.

애플리케이션 배포 방식에 따라 1 ~ 3 개의 계층이있을 수 있습니다. 이제 3 개의 DLL이 있으므로 모든 DLL을 동일한 컴퓨터에 배포하면 1 개의 물리적 계층 만 있고 3 개의 논리적 계층이 있습니다.

각 DLL을 별도의 컴퓨터에 배포하기로 선택한 경우 3 개의 계층과 3 개의 계층이 있습니다.

따라서 계층은 논리적 분리이며 계층은 물리적 분리입니다. 계층은 계층의 물리적 배포라고도 말할 수 있습니다.


귀하의 답변에서 우리가 3 개의 다른 서버에 3 개의 레이어 (DLL)를 배포 할 수 있다는 것을 이해했습니다. 권리 ? 프리젠 테이션 레이어에서 Business Logic 레이어를 어떻게 참조 할 수 있습니까?
Mazhar Khan

당신은 프리젠 테이션 계층에 비즈니스 계층 기능을 노출하는 서비스를 사용 할 수 있습니다 @MazharKhan
아 미트 Saxena는

32

왜 항상 복잡한 단어를 사용하려고합니까?

= 코드의 일부 응용 프로그램이 케이크 인 경우,이 조각입니다.

계층은 = 실제 머신 , 서버를.

계층은 하나 이상의 계층을 호스팅합니다.


레이어의 예 :

  • 프리젠 테이션 레이어 = 일반적으로 사용자 인터페이스와 관련된 모든 코드
  • 데이터 액세스 계층 = 데이터베이스 액세스와 관련된 모든 코드

층:

코드가 서버에서 호스팅 됨 = 코드가 계층에서 호스팅 됨

코드는 2 대의 서버에서 호스팅됩니다 = 코드는 2 개의 계층에서 호스팅됩니다.

예를 들어 웹 사이트 자체 (프레젠테이션 계층)를 호스팅하는 한 시스템과 보안에 민감한 모든 코드 (실제 비즈니스 코드-비즈니스 계층, 데이터베이스 액세스 계층 등)를 호스팅하는 시스템이 더 안전합니다.


계층 구조를 구현하면 많은 이점이 있습니다. 이는 까다 롭고 계층화 된 응용 프로그램을 올바르게 구현하는 데 시간이 걸립니다. 일부가있는 경우 Microsoft 의이 게시물을 살펴보십시오. http://msdn.microsoft.com/en-gb/library/ee658109.aspx


13

레이어는 논리적 분리이고 계층은 물리적 분리라는 정의를 찾았습니다.


10
  1. 평상 영어로, Tier"각각의 다른 층 위에 배치 된 일련의 행 또는 레벨의 구조"를 Layer의미하는 반면, "표면 또는 몸체를 덮는 재료의 시트, 양 또는 두께, 전형적으로 몇 가지 중 하나" ".

  2. Tier는 코드 / 프로세스가 실행 되는 물리적 단위 입니다. 예 : 클라이언트, 애플리케이션 서버, 데이터베이스 서버;

    Layer는 코드를 구성 하는 논리적 단위 입니다. 예 : 프리젠 테이션 (보기), 컨트롤러, 모델, 리포지토리, 데이터 액세스

  3. 계층은 별도의 컴퓨터와 시스템에서 디자인의 프레젠테이션, 비즈니스, 서비스 및 데이터 기능을 물리적으로 분리 한 것을 나타냅니다.

    계층은 응용 프로그램이나 서비스를 구성하는 소프트웨어 구성 요소의 논리적 그룹입니다. 구성 요소가 수행하는 여러 종류의 작업을 구분하여 구성 요소의 재사용 성을 지원하는 디자인을보다 쉽게 ​​만들 수 있습니다. 각 논리 계층에는 하위 계층으로 그룹화 된 여러 개별 구성 요소 유형이 포함되어 있으며 각 하위 계층은 특정 유형의 작업을 수행합니다.

2 계층 패턴은 클라이언트와 서버를 나타냅니다.

이 시나리오에서 클라이언트와 서버는 동일한 시스템에 있거나 두 개의 다른 시스템에있을 수 있습니다. 아래 그림은 클라이언트가 클라이언트 계층에있는 웹 서버와 상호 작용하는 일반적인 웹 응용 프로그램 시나리오를 보여줍니다. 이 계층에는 프리젠 테이션 계층 논리 및 필요한 비즈니스 계층 논리가 포함됩니다. 웹 응용 프로그램은 데이터 계층 논리가 포함 된 데이터베이스 계층을 호스팅하는 별도의 컴퓨터와 통신합니다.

레이어와 티어

레이어 및 계층의 장점 :

  • 계층화를 사용하면 코드의 유지 관리 성을 최대화하고 다른 방식으로 배포 할 때 응용 프로그램의 작동 방식을 최적화하며 특정 기술 또는 설계 결정을 내려야하는 위치를 명확하게 설명 할 수 있습니다.

  • 계층을 별도의 물리적 계층에 배치하면 여러 서버에로드를 분산시켜 성능을 향상시킬 수 있습니다. 또한보다 민감한 구성 요소와 계층을 다른 네트워크 나 인터넷 또는 인트라넷으로 분리하여 보안에 도움을 줄 수 있습니다.

1 계층 응용 프로그램은 3 계층 응용 프로그램 일 수 있습니다.


6

예, 친애하는 친구들이 올바르게 말했습니다. 계층은 응용 프로그램의 논리적 파티션이지만 계층은 시스템의 물리적 파티션입니다. 계층 파티션은 계층 파티션에 따라 다릅니다. 응용 프로그램이 단일 컴퓨터에서 실행되는 것처럼 3 계층 구조를 따르므로 계층 구조에 계층 구조가 존재할 수 있다고 말할 수 있습니다. 간단히 말해서 3 계층 아키텍처는 단일 머신으로 구현할 수 있으며 1 계층 아키텍처라고 말할 수 있습니다. 각 계층을 별도의 시스템에 구현하면 3 계층 아키텍처라고합니다. 계층은 여러 계층을 실행할 수도 있습니다. 계층 구조에서 관련 구성 요소는 서로 쉽게 통신 할 수 있습니다.
우리가 아래에 주어진 아키텍처를 따르는 것처럼

  1. 프리젠 테이션 레이어
  2. 비즈니스 로직 계층
  3. 데이터 액세스 계층

클라이언트는 "프레젠테이션 계층"과 상호 작용할 수 있지만 보안상의 이유로 비즈니스 로직 계층의 공용 구성 요소와 같은 아래 계층의 공용 구성 요소에 "비즈니스 로직 계층"에 액세스합니다.
Q * 왜 계층 아키텍처를 사용합니까? 레이어 아키텍처를 구현하면 다음과 같이 애플리케이션 효율성이 향상되기 때문입니다.

==> 보안

==> 관리 성

==> 확장 성

응용 프로그램을 개발 한 후 dbms를 변경하거나 비즈니스 논리 등을 수정 해야하는 등 다른 필요가 있습니다. 그런 다음 모두에게 필요합니다.

Q * 계층 구조를 사용하는 이유는 무엇입니까?

각 계층의 물리적 구현은 계층 아키텍처없이 더 나은 효율성을 제공하기 때문에 계층 아키텍처를 구현할 수 없습니다. 별도의 계층을 구현하는 별도의 시스템과 별도의 계층은 하나 이상의 계층을 구현하므로이를 사용합니다.
내결함성을 위해 사용합니다. ==> 쉬운 유지.

간단한 예

약실에서 은행을 개설하는 것처럼 직원은 다음과 같습니다.

  1. 문지기
  2. 현금을 가진 사람
  3. 은행 제도를 도입 할 책임이있는 사람
  4. 매니저

그것들은 모두 시스템의 관련 구성 요소입니다.

우리가 대출 목적으로 은행에 가면 먼저 게이트 키퍼가 미소로 문을 연 다음 관리자 오두막에 가서 대출을 통과 한 후 모든 대출 계획을 소개하는 사람 근처에 간다. 그 후 우리는 계산원의 카운터 테이크 대출에 간다. 이들은 은행의 계층 구조입니다.

계층은 어떻습니까? 은행 지점은 한 도시에서, 그 후 다른 도시에서, 그 후에 다른 지점에서 열리지 만 각 지점의 기본 요구 사항은 무엇입니까?

  1. 문지기
  2. 현금을 가진 사람
  3. 은행 제도를 도입 할 책임이있는 사람
  4. 매니저

레이어와 티어의 개념이 동일합니다.


훌륭한 설명 친애하는
Dulaj Kulathunga

6

계층 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와 같은 별도 장치에 대한 추가 응용 프로그램 코드, 업그레이드 저장 영역을 추가하거나 여러 프레젠테이션 레이어를 추가 할 수 있음]


6

Microsoft Application Architecture Guide 2 의 아래 설명이 마음에 듭니다.

계층은 응용 프로그램에서 기능 및 구성 요소의 논리적 그룹을 설명합니다. 계층은 별도의 서버, 컴퓨터, 네트워크 또는 원격 위치에 기능 및 구성 요소의 물리적 분포를 설명합니다. 계층과 계층 모두 동일한 이름 세트 (표시, 비즈니스, 서비스 및 데이터)를 사용하지만 계층 만 물리적 분리를 의미합니다.


5

솔루션의 구성 요소 내에서 설계자 또는 기술 스택을 설명하기 위해 레이어를 사용합니다. 네트워크 또는 프로세스 간 통신이 관련된 경우 일반적으로 계층을 사용하여 해당 구성 요소를 논리적으로 그룹화합니다.


1

기술적으로 Tier는 코드를 실행하는 데 필요한 일종의 최소 환경 일 수 있습니다.

예를 들어 3 계층 앱은

  1. OS가없는 3 개의 물리적 머신.
  2. OS가없는 3 개의 가상 머신이있는 1 개의 물리적 머신.

    (3 단계 (하드웨어) 계층 앱이었습니다)

  3. 3 개의 다른 / 동일 OS가있는 3 개의 가상 머신이있는 1 개의 물리적 머신

    (이것은 3- (OS) 계층 앱이었습니다)

  4. 1 개의 OS가 있지만 3 개의 AppServer가있는 1 개의 가상 시스템이있는 1 개의 물리적 시스템

    (그것은 3- (AppServer) 계층 앱이었습니다)

  5. 1 개의 가상 머신이있는 1 개의 물리적 머신, 1 개의 OS가 있고 1 개의 AppServer, 3 개의 DBMS

    (이것은 3- (DBMS) 계층 앱이었습니다)

  6. 1 개의 가상 머신이 있고 1 개의 OS가 있고 1 개의 AppServer가 있고 1 개의 DBMS가 있지만 3 개의 Excel 통합 문서가있는 1 개의 실제 머신.

    (그것은 3- (AppServer) 계층 앱이었습니다)

Excel 통합 문서는 VBA 코드를 실행하는 데 필요한 최소 환경입니다.

이 3 개의 통합 문서는 단일 실제 컴퓨터 또는 여러 컴퓨터에있을 수 있습니다.

앱 설명 컨텍스트에서 사람들이 "티어"라고 말하면 실제로 "OS 계층"을 의미한다는 것을 알았습니다.

앱이 3 개의 별도 OS에서 실행되고 3 계층 앱에서 실행되는 경우입니다.

따라서 앱을 설명하는 올바른 방법은

"1 ~ 3 계층 지원, 2 계층에서 실행"앱.

:)


레이어는 앱과의 기능 분리 (예 : 프리젠 테이션, 데이터, 보안 등)와 관련하여 코드 유형에 불과합니다.


0

계층은 개념적인 엔티티이며 소프트웨어 시스템의 기능을 논리적 관점에서 분리하는 데 사용됩니다. 시스템을 구현할 때 다른 방법을 사용하여 이러한 계층을 구성합니다. 이 조건에서 우리는 그것들을 계층이 아니라 계층이라고 부릅니다.


0

프레젠테이션, 서비스, 데이터, 네트워크 계층에 대해 이야기 할 때 계층에 대해 이야기하고 있습니다. "별도로 배포"할 때 계층에 대해 이야기합니다.

계층은 배포에 관한 것입니다. 이 방법으로 가져 가십시오 : 우리는 Angular로 작성된 프론트 엔드가있는 응용 프로그램을 가지고 있으며 MongoDB와 같은 백엔드와 프론트 엔드와 백엔드 사이에서 상호 작용하는 중간 계층이 있습니다. 따라서이 프런트 엔드 응용 프로그램, 데이터베이스 응용 프로그램 및 중간 계층이 모두 개별적으로 배포되면 3 계층 응용 프로그램이라고합니다.

이점 : 향후 백엔드를 확장해야하는 경우 백엔드를 독립적으로 확장하면되므로 프런트 엔드를 확장 할 필요가 없습니다.

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