2012-02-17 4 views
2

MVVM-light-EF 응용 프로그램의 아키텍처에 대한 자율 학습을 수행 중입니다. 제품/영수증 응용 프로그램을 빌드하려고합니다. 제품 및 입고 테이블/엔티티가있는 Db/EF가 여러 관계로 존재합니다. 그렇다면 DAL은 Linq를 사용하여 간단한 CRUD를 수행합니다.엔터티 프레임 워크 및 비즈니스 계층/논리

질문은 어디에서 어떻게이 응용 프로그램에 내 비즈니스 로직을 넣어하는 것입니다.

아이디어의 부부는 ReceiptBo (영수증 비즈니스 오브젝트) 느릅 나무 상속 엔터티 영수증 클래스와 ICollection은 (ProductBo) ReceiptBo 클래스 추가에 대한 책임 것 -make

옵션 1 을 마음에왔다 제품, 총계 및 부분합 계산 및 삽입을위한 Dal 호출. maby이 옵션은 조금 과장된 것 같습니다.

부분 클래스를 사용하여 간단하게 달을 호출 BuisnessLayer을 사용하여 생성 된 엔티티 객체의 산출 방법 저것 집어 넣어 옵션 2. 이것은 내가 생각하기에 Buisnesslayer 클래스를 쓸모 없게 만들고 Entity 클래스를 비즈니스 로직에 사용해야한다는 것을 확신하지 못합니다.

옵션 3 비즈니스 클래스 -make 있었으나 결국 기업의 제품을 추가하고이 계산을하고 삽입을위한 달 전화, 상속을 사용하여 귀찮게하지 말아. 단순하지만 매우 우아하지는 않습니다. 의

옵션 4 -none 위 및 우둔 메신저

지금 메신저하지 WCF를 사용하지만 아이디어는 내가 그것을 구현하기 쉬울 것이다 있도록이 응용 프로그램은 loosly 결합 할 것인지이며, 그것을 연장하십시오.

도 약간 비즈니스 계층이 무엇인지 혼란 스럽습니다. 어떤 경우에는 Dal처럼 컴퓨팅을 사용하는 경우가 많으며 다른 사람들은 이것이 수행되지 않는다고 말합니다.

일부 도움이 될 것입니다.들으

추신 : 죄송합니다 나의 나쁜, 내가 여기에 간단한 갈 것 다음과 같이 설계 일반적인 멀티 티어 아키텍처를 선택

답변

1

정말 영어 :

  • 데이터 액세스 레이어를 (기본적으로, 당신의 엔티티를
  • 엔티티에 액세스하는 방법을 제공하는 비즈니스 계층 (CRUD 메소드 + 일부 논리를 실행하는 모든 사용자 정의 메소드)
  • WCF를 통해 상태 비 저장 메소드를 노출하는 서비스 계층 (servi CE + MVVM 패턴을 사용하여 귀하의 경우 데이터 계약)
  • 프레젠테이션 계층()
    • 뷰 (XAML 페이지)
    • ViewModels (C#을 클래스)
    • 모델을 통해 노출되는 기관에 의해 여기에 표시됩니다 나는 개체에서 직접 메서드를 추가하지 않을

서비스 계층에 의해 WCF. 모든 메소드는 비즈니스 계층에 정의되고 서비스 계층에 의해 노출됩니다.

1

일반적으로 내 Models이 아닌 내 ViewModels에 비즈니스 로직을 유지하고 EF 개체를 Models으로 봅니다. 대부분 길이 또는 필수 입력란 확인과 같은 몇 가지 기본 데이터 유효성 검사를 수행합니다.

예를 들어 EditRecieptViewModel은 값이 특정 범위에 있는지 확인하거나 사용자가 개체를 편집 할 수있는 권한이 있는지 확인하거나 값이 변경 될 때 일부 사용자 지정 계산을 수행하는 등 비즈니스 규칙의 유효성을 검사합니다. 또한

ViewModels은보기가 아닌 Model을 반영해야한다는 것을 잊지 마세요, 그렇게하지 모든 Model

자신의 ViewModel이있을 것이다