2012-02-26 4 views
3

3 계층 응용 프로그램을 구조화하는 방법에 어려움을 겪고 있습니다. 나는 항상 내가 원하지 않는 의존성 문제로 끝나는 것 같다. 나는 틀린 일을하고 있다는 확실한 신호이다.3-tier 아키텍처 종속성

일반적으로 3 계층 아키텍처는 어떻게 구조화합니까?

  1. 비즈니스 계층은 (당신이 어떻게 보는가에 따라, 또는 아래) 상단에 다른 모든 레이어가 종속 광고 :

    나는이 작업을 수행하는 하나의 2 가지 방법을 참조하십시오. 비즈니스 계층은 특히 데이터 액세스를 위해 작업을 수행하는 데 필요한 인터페이스를 정의합니다. 데이터 액세스 계층은 이러한 인터페이스를 구현하고 종속 계층 삽입을 사용하여 중간 계층에 삽입합니다. UI는 마찬가지로 DI를 통해 출력 인터페이스를 소비합니다. 비즈니스 개체는 데이터 계층이 채우는 POCO입니다. 데이터 계층에는 자체 코드 모델이 없습니다 (비즈니스 계층에 정의 된 비즈니스 개체를 사용함). 비즈니스 계층은 UI 또는 데이터 계층, UI 및 데이터 계층에 대해 아무것도 모릅니다. 비즈니스 계층에 대해 알고 있습니다.

  2. UI 계층이 맨 위, 비즈니스가 중간, 데이터가 맨 위입니다. 데이터 계층은 비즈니스 계층에서 사용하는 인터페이스를 게시합니다. 비즈니스에는 UI에서 사용하는 인터페이스가 있습니다. 스트레이트 1-2-3 상황입니다. 데이터 레이어는 코드 객체를 정의합니다. 비즈니스 레이어는 자체 모델을 가지고 있습니다 (AutoMapper가 서로 매핑하는 데 사용되지만이 매핑은 비즈니스 레이어에서 수행됩니다). 데이터 영역은 비즈니스 또는 UI 레이어에 대해 아무 것도 모릅니다. 비즈니스 계층은 데이터 계층을 알고 있지만 UI 계층은 알지 못합니다. UI 레이어는 비즈니스 레이어를 인식하지만 데이터 레이어는 알 수 없습니다.

enter image description here

는이 중 하나를 사용하십니까? 어느 것? 왜? 다른 접근법을 사용합니까?

나는 그것을 보는 방식대로, 비즈니스 중심의 일을하는 방법을 제공합니다. UI는 비즈니스 레이어에 영향을 미치지 않고 데이터 레이어처럼 쉽게 변경 될 수 있습니다.

두 번째는 더 직설적이며 일반적으로 데이터 계층이 변경되면 비즈니스 계층이 변경되어야합니다. 물론 잘 계획된 인터페이스 (리포지토리 패턴과 같지만 변경해야하는 곳)로이를 추상화 할 수 있습니다. UI는 영향을 미치지 않고 변경할 수 있습니다.

+0

그게 무슨 가치가 있는지, 나는 두 가지 접근법에 어떤 문제도 보이지 않는다. 둘 다 좋은 모듈화와 추상화를 제공합니다. 개인적으로 나는 당신이 묘사 한 두 번째 접근법을 사용한다. –

+0

관련 : http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ –

+0

3 계층 개념에 대한 개요 : http://www.exforsys.com/tutorials/application-development/ what-is-n-tier.html – Jowen

답변

0

비즈니스 로직이 거의없는 CURD 애플리케이션 인 경우 접근 방식 # 2를 사용하십시오. 그렇지 않으면 접근 # 1을 사용합니다. 실제로 # 2에 제어 반전 (IoC)을 적용한 결과입니다.