2011-07-27 3 views
0

최근에 ASP.Net MVC 및 다양한 기능에 대해 알아보기 시작했습니다. MVC_3_MUSIC_STORE + CODE.
매우 이해하기 쉽고 구조적으로 보입니다.ASP.Net MVC를 N 계층으로 변환

나는 엔터프라이즈 애플리케이션에 대해 읽고 있었다 그들이 어떻게 내가 N에 위의 MVC_3_MUSIC_STORE을 분리 할 (변환)하는 방법 (학습) 궁금


(논리적/물리적) 다른 섹션에 계층 형/적층 (실제 예제가 있기 때문에) 을 사용하면 문제를 완전히 분리 할 수 ​​있습니다. 저는 이것에 대한 사전 경험이별로 없습니다.

변경해야 할 사항은 무엇입니까?

다른 DTO (들) 또는 POCO (들)은 무엇이 필요합니까? 위의 예제는 컨트롤러에서 뷰까지 주변의 POCO 엔티티를 사용합니다. EF 코드를 먼저 사용한다고 가정 할 때 동일하게 유지됩니까?

또한 WCF Webservice가 데이터 액세스 레이어로 도입 된 경우 어떤 변경이 필요한지 궁금합니다. 즉, DAL에서 데이터를 검색하는 대신 클라이언트는 WCF Webservice와의 데이터를 요청합니다. 클라이언트는 웹 응용 프로그램 또는 WinForms 또는 Sliverlight 응용 프로그램이 될 수 있습니다.
([DAL < ->WCF WS] < ->N CLIENTS)

는 다양한 접근 방법에 대해 알고 흥미있을 것이다.

예제 코드는 유용 할 수 있으며/또는 동일한 예제 일 수 있습니다.

편집 1-
내가 발견 것들 중 하나 내가 모델 폴더에서 "MYMODEL"새로운 프로젝트에 모델 클래스를 이동하면 내가 다시 참조를 추가해야합니다이었다 "System.ComponentModel.DataAnnotations"및 추가 "System.Web.Mvc"는 새 모델 프로젝트에서?

어떻게 피할 수 있습니까? 이러한 유효성 검사를 비즈니스 계층으로 어떻게 옮길 수 있습니까?

References will be lost if moved to new project

편집 2
해야합니다이 Advice For A Newbie About N-Tier Applications

답변

2

일반적으로 유일한 변화에 비슷한 찾고 리포지토리 (DAL 층)의 구현을 제공 할 것 인 데이터베이스에 직접 이야기하는 일부 EF DataContext 대신 도메인 모델을 가져 오기 위해 WCF 웹 서비스를 호출합니다. 컨트롤러와 뷰에 대해 완전히 투명한 변경.

+1

"N-tier로 만들지"않는다면 서비스 지향적입니다 (자체적으로 오버로드 된 용어 임). UI 레이어 + 비즈니스 레이어 + 데이터 저장 레이어 = 3-tier 아키텍처. 웹 서비스를 위임하는 것은 없습니다. –

+0

@ Eric J., 나는이 용어에 익숙하지 않지만, 나는 그것을 어떻게 할 것인가. –

+0

어떤 요구 사항을 설정 했습니까? WCF는 직접적인 데이터베이스 액세스에 비해 속도가 느립니다 (네이티브 HTTP 처리기에 비해 속도가 느립니다).웹 서비스를 통해 기능을 노출하는 것이 많은 경우 가치가 있지만 비용도 있습니다. 문제를 묻지 않고 솔루션을 적용하면 아키텍처 선택이 잘못됩니다. 우리의 솔루션은 하루에 수십억 건의 요청을 처리 할 수 ​​있으며 WCF를 추가 레이어로 도입하면 하드웨어가 거의 두 배가됩니다. 용어의 정의는 http://en.wikipedia.org/wiki/Multitier_architecture를 참조하십시오. –

관련 문제