문제

나는 볼 수있는 꽤 몇 가지 개발자 작업 전반적인은 최근에 포함된 문장을 읽는 더 많거나 적은 다음과 같다:"경험이 있어야 한 N-Tier 건축물",또는"할 수 있어야 합 개발 N-Tier 애플 리케이션".

이것은 나에게 무엇을 요청 N-Tier 건축?어떻게 하나의 경험을 얻을까요?

도움이 되었습니까?

해결책

Wikipedia:

에서 소프트웨어 엔지니어링,multi-tier 아키텍처(종종 n 층 건물)는 클라이언트-서버는 아키텍처, 프레젠테이션,응용 프로그램 처리과 데이터 관리 논리적으로 별도의 프로세스입니다.대 를 들어,사용하는 응용 프로그램 미들웨어를 서비스 데이터를 요청 사용자와 사용자가 데이터베이스 사용 다 계층 건물입니다.가 의 광범위한 사용은"다중 계층 건축"이란 세계층 공합니다.

그것은 논란의 여지가 계산 무엇으로"계층"그러나 내 생각에 그것은 필요가 적어도 십자가 프로세스 경계가 있습니다.또한 다른 사람이라는 레이어입니다.하지만,그것은 필요가 없는 것에서 육체적으로 다른 기계입니다.하지만 나는 그것을 추천하지 않는,당신은 당신 host 계층적 논리 및 데이터베이스에서 동시에 수행합니다.

alt text

편집:하나의 의미는 계층 프레젠테이션 및 논리 계층(때로는 비즈니스 로직 레이어)이 필요로하는 크로스 컴퓨터 경계"와이어를 통해"때로는 신뢰할 수없는,,그리고/또는 불안 네트워크입니다.이것은 매우 다양에서 간단한 데스크톱 응용 프로그램은 데이터와 같은 컴퓨터에서 파일이나 웹 응용 프로그램을 칠 수 있다는 데이터베이스에서 직접.

N-계층 프로그래밍,you need to 패키지 데이터에서는 어떤 종류의 운송할 수 있는 양식을 소위"dataset"그 날들을 통해 와이어입니다..인터넷 데이터 집합 클래스 또는 웹 서비스는 다음과 같 프로토콜 비누 는 몇 가지의 이러한 시도는 비행을 개선.

다른 팁

프레젠테이션 계층을 핵심 비즈니스 로직 및 데이터 액세스에서 분리하는 방법을 기반으로합니다 (위키 백과)

3 계층 프리젠 테이션 계층 + 구성 요소 계층 + 데이터 액세스 계층을 의미합니다. N-Tier는이 세 가지를 넘어서 불필요한 레이어가 추가 될 때 이루어지며 유행어가있는 레이블이 붙어 있으므로 건축가가 많은 균열 원숭이 인 것처럼 보이지 않습니다. 나는 이것을 함께 일 해야하는 n-tier 아키텍처를 기반으로한다고 말합니다.

예를 들어 JavaScript -ASP.NET -Middleware- 데이터베이스 레이어를 사용한 일반 웹 아키텍처와 같은 것을 나타내는 유행어입니다. 이들 각각은 "계층"입니다.

N-Tier 데이터 응용 프로그램은 여러 계층으로 분리 된 데이터 응용 프로그램입니다. N-Tier Applications는 "분산 응용 프로그램"및 "멀티 티어 애플리케이션"이라고도합니다. N-Tier Applications는 클라이언트와 서버간에 분산 된 개별 계층으로 처리됩니다. 데이터에 액세스하는 응용 프로그램을 개발할 때는 응용 프로그램을 구성하는 다양한 계층간에 명확한 분리가 있어야합니다.

일반적인 N-Tier 응용 프로그램에는 프리젠 테이션 계층, 중간 단계 및 데이터 계층이 포함됩니다. N-Tier 응용 프로그램에서 다양한 계층을 분리하는 가장 쉬운 방법은 응용 프로그램에 포함하려는 각 계층에 대해 개별 프로젝트를 작성하는 것입니다. 예를 들어, 프레젠테이션 계층은 Windows Forms 응용 프로그램 일 수 있지만 데이터 액세스 로직은 중간 계층에 위치한 클래스 라이브러리 일 수 있습니다. 또한 프레젠테이션 계층은 서비스와 같은 서비스를 통해 중간 계층의 데이터 액세스 로직과 통신 할 수 있습니다. 응용 프로그램 구성 요소를 별도의 계층으로 분리하면 응용 프로그램의 유지 관리 및 확장 성이 증가합니다. 전체 솔루션을 재 설계 할 필요없이 단일 계층에 적용 할 수있는 새로운 기술을 쉽게 채택 할 수있게함으로써이를 수행합니다. 또한 N-Tier 응용 프로그램은 일반적으로 민감한 정보를 중간 계층에 저장하여 프리젠 테이션 계층으로부터 격리를 유지합니다.

Microsoft에서 가져 왔습니다 웹 사이트.

내가 질문을 이해한다면, 질문자가 실제로 "OK, 3 계층은 잘 이해되지만, 과대 광고, 혼란, 4 단계에 대한 불확실성이 혼합되어있는 것 같습니다. 일반화, N-Tier Architectures는 의미가 있습니다. 그래서 ... 널리 이해되고 합의 된 N-Tier의 정의는 무엇입니까? "

그것은 실제로 상당히 깊은 질문이며, 왜 그런지 설명하기 위해서는 조금 더 깊이 가야합니다. 나와 함께 견디십시오.

클래식 3 계층 아키텍처 : 데이터베이스, "비즈니스 로직"및 프레젠테이션은 우려 분리 원칙을 명확히하는 좋은 방법입니다. 즉, "비즈니스"가 고객에게 서비스를 제공하는 방법을 바꾸고 싶다면이 작업을 수행하는 방법을 알아 내기 위해 전체 시스템을 살펴볼 필요가 없으며 특히 결정이 사업 문제를 흩어서는 안됩니다. 코드를 통해 Willy-Nilly.

이제이 모델은 수십 년 동안 잘 작동했으며 클래식 한 '클라이언트 서버'모델입니다. 웹 브라우저가 광범위하고 물리적으로 분산 된 사용자 세트를위한 사용자 인터페이스 인 클라우드 제품으로 빠르게 전달하고 일반적으로 클래식 3 계층 아키텍처 (및 클래식 3 계층 아키텍처의 일부가 아닌 컨텐츠 배포 서비스를 추가해야합니다. 자체적으로 관리해야합니다).

이 개념은 서비스, 마이크로 서비스, 데이터 및 계산이 어떻게 분포되는지 등을 일반화합니다. 무언가가 '계층'인지 여부는 크게 계층이 계층의 배후에있는 서비스에 인터페이스 및 배포 모델을 제공하는지 여부에 따라 나옵니다. 따라서 컨텐츠 배포 네트워크는 계층이지만 인증 서비스는 그렇지 않습니다.

이제이 개념을 염두에두고 N-Tier Architectures의 예에 대한 다른 설명을 읽으면 문제를 이해하기 시작할 것입니다. 기타 관점에는 공급 업체 기반 접근 방식 (예 : NGINX), 컨텐츠 인식로드 밸런서, 데이터 격리 및 보안 서비스 (예 : IBM 데이터 파워)가 있습니다. 가치를 추가하거나 추가하지 않을 수 있습니다 주어진 아키텍처, 배포 및 사용 사례에.

N-Tier는 별도의 물리적 기계를 사용하여 비즈니스 로직, 클라이언트 액세스 및 데이터를 서로 분리한다는 것을 이해합니다. 이론은 그들 중 하나가 다른 것과 독립적으로 업데이트 될 수 있다는 것입니다.

N-Tier 데이터 응용 프로그램은 여러 계층으로 분리 된 데이터 응용 프로그램입니다. N-Tier Applications는 "분산 응용 프로그램"및 "멀티 티어 애플리케이션"이라고도합니다. N-Tier Applications는 클라이언트와 서버간에 분산 된 개별 계층으로 처리됩니다. 데이터에 액세스하는 응용 프로그램을 개발할 때는 응용 프로그램을 구성하는 다양한 계층간에 명확한 분리가 있어야합니다.

그리고에도 http://msdn.microsoft.com/en-us/library/bb384398.aspx

일반적인 MCV를 구성 할 때 (3 계층 아키텍처) Double-Deck 인터페이스로 MCV를 구현하기로 결정할 수 있으므로 실제로 한 줄의 코드조차 수정하지 않고도 특정 계층을 대체 할 수 있습니다.

우리는 종종 이것의 이점을 본다, 예를 들어 둘 이상의 데이터베이스를 사용할 수있는 시나리오에서 (이 경우 제어와 데이터 계층 사이에 이중 인터페이스가 있습니다).

view 층에 넣을 때 (프레젠테이션), 그러면 사용자 인터페이스를 다른 컴퓨터로 교체하여 실제 입력 (!!!)을 자동화 할 수 있습니다. 따라서 사용자가 탭하고 Re를 탭하고 다시 할 필요없이 지루한 유용성 테스트를 수천 번 실행할 수 있습니다. -똑같은 것들을 반복해서 탭하고 다시 탭하십시오.

일부는 그런 설명합니다 3 계층 아키텍처 1 또는 2 개의 이중 인터페이스가 있습니다 4 계층 또는 5 계층 이중 인터페이스를 암시 적으로 암시하는 아키텍처.

다른 경우는 귀하가 포함한다는 사실을 포함합니다. Semi-or-Norly Replicated Database-Systems의 경우 데이터베이스 중 하나를 "마스터"로 간주 할 수 있으므로 계층을 가질 수 있습니다. 마스터와 다른 하나는 슬레이브 데이터베이스로 구성됩니다.

모바일 예

따라서 다중 계층 또는 N-Tier -실제로 몇 가지 해석이있는 반면, 나는 상기 계층 스웨이를 활성화하기 위해 사이에 갇힌 얇은 인터페이스 디스크와 테스트 (특히 모바일 장치에서 사용)로 구성된 얇은 인터페이스 디스크로 구성된 3 계층 + 추가 계층을 반드시 고수 할 것입니다. 이제 실제 소프트웨어에서 사용자 테스트를 실행할 수 있습니다. 사용자 도청 시뮬레이션 제어 로직이 실제 사용자 태핑과 구별 할 수없는 방식으로. 이것은 거의 가장 중요합니다 실제 사용자 테스트 시뮬레이션, 당신은 사용자 OTA의 모든 입력을 기록한 다음 회귀 테스트를 수행 할 때 동일한 입력을 재사용 할 수 있습니다.

우리가 계층에 대해 이야기 할 때, 우리는 일반적으로 물리적 과정에 대해 이야기합니다 (메모리 공간이 다릅니다).

따라서, 애플리케이션의 계층이 다른 프로세스에 배치되는 경우, 이러한 다른 프로세스는 다른 계층이 될 것입니다.

예를 들어, 3 계층 응용 프로그램에서 비즈니스 계층은 메인 프레임 (별도 프로세스)과 대화하고보고 서비스 (별도 프로세스)와 대화하면 해당 응용 프로그램이 5 계층이됩니다.

따라서 일반 이름은 n-tier입니다.

~에서 https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

N-Tier Architecture는 An을 나눕니다 응용 프로그램 타이어 ~ 안으로 논리 타이어그리고 물리적 계층 주로와 그것들은 서브 부품으로 나뉩니다.enter image description here

계층은 책임을 분리하고 종속성을 관리하는 방법입니다. 각 계층에는 특정 책임이 있습니다. 더 높은 층은 더 낮은 층에서 서비스를 사용할 수 있지만 다른 방법은 아닙니다.

계층은 물리적으로 분리되어 별도의 기계에서 실행됩니다. 계층은 다른 계층으로 직접 호출하거나 비동기 메시징 (메시지 대기열)을 사용할 수 있습니다. 각 층은 자체 계층으로 호스팅 될 수 있지만 필요하지 않습니다. 동일한 계층에서 여러 층이 호스팅 될 수 있습니다. 계층을 물리적으로 분리하면 확장 성과 탄력성이 향상되지만 추가 네트워크 통신의 대기 시간도 추가됩니다.

기존의 3 계층 응용 프로그램에는 프레젠테이션 계층, 중간 계층 및 데이터베이스 계층이 있습니다. 중간 단계는 선택 사항입니다. 보다 복잡한 응용 프로그램에는 3 개 이상의 계층이있을 수 있습니다. 위의 다이어그램은 서로 다른 기능 영역을 캡슐화하여 두 개의 중간 계층이있는 응용 프로그램을 보여줍니다.

N-Tier 애플리케이션에는 닫힌 레이어 아키텍처 또는 오픈 레이어 아키텍처가있을 수 있습니다.

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

닫힌 레이어 아키텍처는 레이어 간의 종속성을 제한합니다. 그러나 한 계층이 단순히 요청을 다음 계층으로 전달하는 경우 불필요한 네트워크 트래픽을 생성 할 수 있습니다.

Martin Fowler 을 보여주는 명확:

레이어드가 가장 일반적인 기술는 소프트웨어 디자이너 사용 분 복잡한 소프트웨어 시스템입니다.당신이 그것을 참조에서 기계는 아키텍처, 는 레이어에서 강한 프로그래밍 언어 운영 체제 통화 으로 장치 드라이버와 CPU 명령어 세트,그리고 논리 게이트 내부 칩입니다.네트워크는 FTP 의 최상위 계층에 TCP,에 있는 최고의 IP,에 최고의 이더넷입니다.

생각할 때 시스템의 관점에서의 층에,당신이 상상의 주요 하위 시스템 에서 소프트웨어에 배치된 형태의 레이어 케이크,각 층 에 달려있다는 더 낮은층이다.이 체계에서 더 높은 층을 사용하여 다양한 서비스 에 의해 정의된 낮은 층을,하지만 낮은 층을 모르고 높은 계층입니다.또한,각 계층은 일반적으로 가죽의 더 낮은 층에서 위의 층은,그래서 4 계층 사용하여 서비스의 3 층,사용하는 서비스의 2 층,그러나 레이어 4 인식하지 못 레이어 2.(하지 않는 모든 레이어 아키텍처는 불투명 다음과 같이지만, 가장하거나 오히려 대부분은 대부분 불투명합니다.)

파괴 시스템으로 레이어는 다수의 주요 이점을 제공합니다.

•이해할 수 있는 단 하나 층으로 일관된 전체 없이 알 에 대해 많은 다른 레이어입니다.을 이해할 수 있는 방법에 건축하는 FTP 서비스 에서 최고의 TCP 의 세부 사항을 알고 있기 없는 방법 이더넷 작동합니다.

•대체할 수 있습니다 레이어로 구현의 동 기본 서비스를 제공하고 있습니다.FTP 서비스를 변경하지 않고 실행할 수 있습 over ethernet,PPP 또는 케이블사를 사용합니다.

•을 최소화하는 간의 종속성을 층을 이룹니다.는 경우에는 케이블사 변경 물리적송 시스템을 제공하는,그들은 IP,작동하지 않습 를 변경해야하는 우리의 FTP 서비스입니다.

•레이어들에게 좋은 장소는 표준화 기구.TCP 와 IP 표준 기 때문에 그들을 정의하는 방법들 레이어 작동합니다.

•면 레이어에 내장,당신은 그것을 사용할 수 있는 많은 높은 수준의 서비스.따라서,TCP/IP 를 사용하여 FTP,telnet,SSH,HTTP.그렇지 않으면,이러한 모든 더 높은 수준 프로토콜을 작성해야 자신의 낮은 수준 프로토콜.라이브러리에서 카일의 제프리 Passarelli

레이어링이 중요한 기술지만,단점이 있습니다.

•레이어 캡슐화는 아니지만,일부 모든 것을습니다.결과적으로 당신은 때때로 을 얻을 연계 변경합니다.의 전형적인 예이 겹 enterprise 응용 프로그램이 추가된 필드를 표시하는 데 필요에 UI 해야합니다, 데이터베이스에 있고,이에 따라 추가해야 합니다 모든 층에 사이 있습니다.

•추가적인 레이어 해칠 수 있습니다 성능이다.에서 각 층을 것을 일반적으로 필요 변환에서 하나 표현합니다.그러나,캡슐화 의 기본 기능은 자주 당신에게 효율성 향상을 그 이상의 보하여 표시하고 있습니다.레이어 컨트롤하는 트랜잭션을 최적화할 수 있습고 됩니다 모든 것이 더 빠르다.하지만 가장 어려운 부분의 계층화 된 아키텍처를 결정하는 것입 층가 고 무엇인의 책임 각 층을 해야 합니다.

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