2012-06-05 3 views
0

WinForms 또는 WebForms 응용 프로그램을 개발할 때 솔루션을 만들고 여러 프로젝트를 추가합니다. BOL 프로젝트는 비즈니스 객체를위한 클래스 라이브러리이며, ADO.NET과 관련된 SQL 및 DAL 프로젝트가 있습니다. 저는 유효성 검사 및 기타 등등을위한 클래스를 포함하는 Utilities 프로젝트를 가지고 있습니다. 이제 GUI라고 부르는 프리젠 테이션 레이어에는 폼이 포함되어 있습니다. 양식은 DAL에 연결되는 SQL에 연결되는 BOL과 직접 작동합니다.ASP.NET MVC 웹 응용 프로그램 계층화

나는 모두 이것을 이미 알고 있으므로 여기 혼란스러워 할 것입니다. MVC로 작업 할 때, 모든 기능이 이러한 유형의 기능을 포함하고 있지만 모두 하나의 프로젝트에 있으며 폴더로 분리되어 있습니다. Nerd Dinner 응용 프로그램을 살펴 보았는데 그 중 하나가 모두 하나의 프로젝트에 있습니다. 최종 결과는 모든 DLL을 처리하는 단일 DLL입니다. 이것은 좋은 생각입니까, 아니면 여러분이 여러 부분을 다른 프로젝트로 분리합니까? 일반적으로 하나의 DLL은 데이터 액세스 DLL 유형에 도달하기 전에 다른 DLL을 통과해야합니다. 어쩌면 나는 전체 개념에 혼란 스러울뿐입니다.

답변

2

이 논리 계층을 항상 별도의 물리적 계층 (프로젝트)으로 분리 할 수 ​​있습니다. 표준 MVC 프로젝트 : 당신은 여기

내가 내 receny 프로젝트

1) UI 중 하나를 위해 한 구조입니다 .. 당신의 엔티티 등 사용자의 데이터 액세스 코드 하나에 대한 별도의 프로젝트를 만들 수 있습니다 UI 관련 물건. 컨트롤러 및 뷰 및 관련 CSS 내용 & 스크립트.

2) 개체 : 클래스 라이브러리 프로젝트. 내 비즈니스 엔티티가 여기 있습니다. 이것들은 내 도메인 모달을 나타내는 POCO입니다 (저는 이것을 CodeFirst Database 생성에 사용합니다).

3) 데이터 액세스 : 클래스 라이브러리 프로젝트. 여기에 내 데이터 액세스 코드가 있습니다. Repositary, Interfaces 및 My DBContext 클래스도 포함됩니다.

4) 테스트 : 단위 테스트가이 프로젝트에 있습니다.

UI 프로젝트에 내 엔터티 및 내 데이터 액세스 프로젝트에 대한 참조가 있습니다.

내 Repositary 메서드가 개체를 반환하기 때문에 데이터 액세스 프로젝트에 내 엔터티에 대한 참조가 있습니다.

UI 프로젝트 ViewModels 폴더 안에 ViewModel 클래스가 거의 없습니다. 나는 여러 개의 도메인 객체로부터 데이터를 보여줘야하는 몇몇 스크린을 위해 이것을 사용한다. 나는 모델 객체를보기 위해 도메인 객체를 매핑하는 매핑/서비스 클래스를 가지고있다. 프로젝트가 bifg 인 경우 동일한 솔루션에서 serperate 프로젝트로 유지할 수 있습니다.

해결책은 다음과 같습니다.

enter image description here

+0

확인이이 내가 사용하고 무엇으로 사람들이 모든 일을하는 경우 궁금 해서요 것입니다 (이것은 내가 일하고 오픈 소스 프로젝트입니다). 나는 같은 패턴을 따를 것이다. 고마워, 그리고 좋은 예를 들어. –

+0

@ user1066133 : 대단히 환영합니다. 기꺼이 도와 드릴 수 있습니다. – Shyju

관련 문제