2011-02-18 6 views
1

혼란 스러워요. 나를 안내 해줘..net 응용 프로그램 아키텍처 안내

참조 .net 응용 프로그램이 있습니다 (웹 응용 프로그램의 경우). 그것은 n-trier입니다. 기본적으로 3 계층입니다. 평소처럼 그것은 프레 젠 테이션 레이어, 비즈니스 레이어, 데이터 액세스 레이어를 가지고. 데이터 테이블과 데이터 테이블의 데이터 레이어에있는 레코드를 가져 오는 위치는 어디에서 찾을 수 있습니다. 하지만 데이터 레이어에서 비즈니스 레이어로 데이터를 전달할 때 그곳에서 사용해야하는 것은 무엇입니까? 왜냐하면 내 생각에 따르면 비즈니스 계층에서 System.Data를 사용하는 것이 적절하지 않기 때문입니다. 그것은 성능을 해칠 수 있습니다. 이 두 레이어간에 데이터를 전송할 미디어는 무엇이되어야합니까?

동일한 시나리오에서 또 다른 질문은 사용자 정보 삽입 기능이있는 데이터베이스에 프로 시저를 저장한다고 가정 해 보겠습니다. 프리젠 테이션 레이어의 데이터를 나중에 비즈니스 레이어를 통해 데이터로 전달하려고합니다. 레이어간에 데이터를 전달하는 올바른 방법은 무엇입니까? User Object를 사용할 수 있습니다. 하지만 아키텍처 수준에서 User 객체를 사용하여 데이터를 전달하면 모든 레이어에서 User 객체에 액세스해야합니다. 그래서 응용 프로그램의 레이어에서 User 객체 위치는 어디에 있어야합니까?

답변

2

질문 1 : 수업. User 클래스를 만들고 사용자 테이블에서 읽을 때 데이터 레이어에서 비즈니스 레이어로 IList<User>을 반환합니다.

질문 2 : 모든 비즈니스 개체를 정의하는 별도의 어셈블리/클래스 라이브러리를 사용합니다.

+0

괜찮지 만 별도의 어셈블리를 사용하고 개체 수준에서 비즈니스에 작은 변화가 있다면 항상 개체를 변경해야합니다. 나는 부분적으로 객체를 확장 할 수 있다는 것을 알고있다. 하지만 만약 내가 인터페이스를 사용하여 클래스의 확장을 달성하기 위해 다음 클래스를/개체를 확장하는 인터페이스를 사용하려면 어떻게해야합니까? –

+0

BO를 사용하는 모든 클래스를 강제 변경하지 않으려면 BO의 인터페이스에 대해 작업 할 수도 있습니다. 'IUser','IUserWithExtraInfo' 등이 있습니다.'User' 클래스는 그것들을 모두 구현하게하고, 별도의 어셈블리에는 없지만 데이터 레이어에는'User'가 없습니다. 항상 BL의 인터페이스에 대해 작업하십시오. – jgauffin

+0

마지막 문장을 가져올 수 없습니다. –

2

당신은 내가 도메인 중심의 디자인을 가리킬 것이다 층

0

간에 데이터를 전송하기위한 클래스입니다 DTOs를 사용할 수 있습니다. 그러나 그것은 학습 곡선 때문에 당신/당신의 팀이 될 수 없습니다. 가까운 시간에 충분한 시간을 갖지 못할 수도 있습니다.

+0

정확히 도메인 구동 디자인이란 무엇입니까? –

+0

무료 책을 빠르게 살펴보십시오. http://domaindrivendesign.org/books/avram_marinescu_2007 – DaeMoohn