2012-01-23 2 views
2
내가, 내가 가진 것 내 비주얼 스튜디오 프로젝트에서, 그래서 다른 레이어를 만들 계획입니다

:N 레이어를 디자인하는 올바른 방법입니까?

BusinessLayer : 비즈니스 오브젝트 (기관) 즉 사용자, 직원, 제품 등

DataAccessLayer을 포함합니다 : 엔티티를 프레임 워크

프리젠 테이션 레이어 : 지도 뷰 & ViewModels

그래서 예를 들어 말을, 나는 사용자 로그인이 토륨 수 있도록하려면 신청서입니다.

  1. 보기에는 사용자가 정보를 입력 할 수있는 UI가 표시됩니다.
  2. Enter 키를 누를 때 command => ViewModel
  3. ViewModel은 Entity Framework를 사용하여 데이터베이스에서 사용자 데이터를 쿼리 한 다음 ViewModel이 BusinessObject에서 User 개체를 초기화하고 User 데이터를 User 개체에 매핑합니다 .
  4. 이 사용자 개체는 나중에 사용할 수 있도록 정적 매개 변수에 저장합니다.

그래서 난 정말 관심은 무엇인가 :

  1. N-층을 설계하는이 올바른 방법인가?
  2. 각 레이어를 다른 Visual Studio 프로젝트에 적용해야합니까? (비즈니스 개체가 다른 프로젝트 내부에 있음)
  3. 비즈니스 개체가 자체 데이터를 쿼리하도록하는 것이 더 좋습니까? 그래서 에서 Business Object construtor가 엔티티 프레임 워크를 호출합니까?
  4. 엔티티 프레임 워크 사용을위한 리포지토리 클래스를 작성해야합니까?

내가 복잡하다고 생각하면이 응용 프로그램은 거대 할 것이기 때문에 걱정하지 않아도됩니다. 그래서 저는 그것을 적절하게 디자인하여 유연하고 확장 가능하게 만들고 싶습니다.

조언을 주시면 감사하겠습니다.

+3

별도의 질문으로 나눠보세요. – JeffO

+0

당신이 원한다면 여기에 내 대답을 읽으십시오 ;-) http://stackoverflow.com/a/7474357/559144 상당히 많은 표를 얻었고 ASP를 사용하거나 사용하지 않고 n 계층/계층 구조에서이 방법을 사용합니다. NET 및 Entity Framework ... –

+0

@JeffO 내가 어떻게 해칠 수 있는지 보자. ..... 내가 함께 묻는 이유는 내가 다른 프로젝트로 어떻게 분해되어야 하는지를 알지 못하기 때문이다. 서로에게 ... –

답변

2

1 N 레이어를 디자인하는 올바른 방법입니까?

내가 올바른 언급하지 않았다,하지만 프로젝트에 대한 적합. 제공된 질문을보고 디자인에 많은 문제점을 보지 마십시오.

2 각 레이어를 다른 Visual Studio 프로젝트에 적용해야합니까? 당신이 다른 프로젝트/도메인에 그 레이어를 다시 사용하려고 할 때 그렇게하는 sence는, 기본적으로,이

(즉 비즈니스 오브젝트는 다른 프로젝트 내부에있을 것입니다). 당신이하고있는 일과 당신이 할 수있는 일에 대해 생각해보십시오. 일을하고 이것이 당신이 할 일인지 결정하십시오.

아키텍처를 별도의 프로젝트로 선택하면 아키텍처가 더욱 복잡해 지지만 더 큰 점수를받을 수 있다고 생각하십시오. 예를 들어, 사용자에게 Business Layer 수정 patch을 제공하고 전체 소프트웨어 패킷을 설치하지 않을 수 있습니다. 나는 이것을 반복한다. 대부분의 경우 그들은 단지

3는 비즈니스 오브젝트는 데이터 그 자체를 조회 할 수 있도록하는 것이 좋습니다 (... 의존성 관리, 다른 부분과 모든 것을 엉망 사이 버전)의 복잡성을 피하기 위해 한 번에 모든 설치를 선택 ? 그래서 에서 Business Object construtor가 엔티티 프레임 워크를 호출합니까?

Query 엔진을 분리하는 것이 좋습니다. 보다 테스트 가능하고 오류없는 아키텍처.

4 엔티티 프레임 워크 사용을위한 리포지토리 클래스를 작성해야합니까?

다시 scallability에 대한 이야기. EF를 래핑 할 수 있습니다.이 경우 모든 소프트웨어 인프라 (자연적으로 가능한 한 많이)를 깨뜨리지 않고도 SQLite + ORM을 사용하여 릴레이를 변경하고 변경할 수 있습니다. 그러나 이것을 구현하려면 훨씬 더 많은 시간이 필요합니다.

리소스와 시간의 균형을 유지하고 자신과 프로젝트에보다 적합한 선택을하십시오.

+0

mhm, 지금은 이해합니다. 감사. –

관련 문제