0

좋은 사람,엔티티 메소드를 어떻게 분리해야합니까? SO의

오늘은 내 비즈니스 계층 디자인에 대한 심각한 우려를 가지고있다. 그것은 내가 로직의 2 종류가 있습니다, 이러한 개체에 로직을 추가 할하지만 엔티티 POCO 개체와 을 기반으로합니다

  1. 순수 C#을 논리
  2. 지속성 로직 (내 경우에는 LinqToEntities)

내 질문은 간단하다 :

어떻게해야 내가 별도의이 이가지?

첫째, 실체에 대한 방법으로이 두 가지를 추가하는 방법에 대해 생각했다. 그리고 부분 클래스을 사용하여 분할합니다.

두 번째로 나는 과체중 인을 과 같이 사용하고 싶지 않다고 생각했습니다. 어쩌면 왜 정적 클래스 또는 LinqToEntities 물건을 수행하는 메서드와 싱글 톤 및 엔티티 메서드에서 순수한 C#을 둡니다. 가 그럼 난 논리을 제공 fonctionnality별로 그룹화 여러 클래스를 것, 엔티티는 클래스 메소드에 인수로 전달됩니다. 두 번째 솔루션은 청소기 보이지만는 객체 지향 패러다임을 나누기 것처럼 보이기 때문에

그것은 정말 날 귀찮게. 반면에 첫 번째 것은 반 패턴과 같습니다.

당신은 어떻게 생각하십니까? 이 역설을 푸는 밝은 해결책이 있습니까?

정신 분열증 편집 : 사실 내가 말하는 지속성 논리는 BLL에서 DAL과 순수한 C# 논리로 연결되어야합니다. POCO 엔티티는 DAL에 의해 생성됩니다. 그런 다음 BLL에서이 엔티티를 확장하여 메소드를 추가 할 수 있습니다. 내 DAL에서 두 번째 솔루션에 노출 된 논리를 구조화해야합니다.

+0

Erm, 왜 두 번째 방법이 O-O 패러다임을 깨뜨리는 이유는 무엇입니까? 정확하게 어떤 방법으로? 그리고 그것은 옵션 2에 대한 유일한 관심사입니까? –

+0

OO에서는 객체에 메시지를 보냅니다. 두 번째 솔루션에서는 작업을 수행 할 메서드의 매개 변수로 개체를 전달합니다. OO 에뮬레이션처럼 보입니다 : 객체를 첫 번째 인자로 가지는 정적 메소드. 이것은 나의 유일한 관심사이며 과체중 개체를 피하고자합니다. – Roubachof

+0

이 경우 엔티티는 비즈니스 엔티티가해야하는 것보다 몇 배나 많은 모든 것을 수행합니다. 아무튼, 나는 그것을 측정하는 가장 좋은 위치에 있지 않다. :) –

답변

3

엔티티가/저장 엔티티 자체에 속하지 않는로드 할 방법을 설명하는 논리; 지속성 서비스, 데이터 액세스 객체 등의 역할을 수행 할 가능성이 높습니다.

개체의 특정 논리를 개체에 지정하게합니다. 여기서는 개체의 동작에 대해 이야기하고 서비스를 만듭니다. 이 객체 유형에 대한 지속성 문제를 처리합니다.

+0

mmmh, 나는 SOA에 있기 때문에 퍼시스턴스 서비스를 만들고 싶지 않습니다. 그것은 건축을 무너 뜨릴 것이다. 이 서비스가 지속 서비스에 의존해야한다면,이 bll은 서비스가 될 것입니다. 그러면 자율적이지 않을 것입니다. – Roubachof

+2

여기 다른 개념을 혼합하고 있다고 생각합니다. 당신이 말하는 서비스가 SOA 아키텍처의 하나의 구성 요소 *라고 생각하십시오.세분성 문제입니다.이 구성 요소는 자체 디자인을 가지고 있습니다. 퍼시스턴스 서비스에 대해 이야기 할 때 SOA 에코 시스템의 또 다른 고수준 독립 서비스에 대해 말하는 것이 아닙니다. 기존 서비스의 가능한 내부 구성 요소에 대해 말하고 있습니다. "지속성 서비스"는 간단한 클래스 일 수 있습니다. 원하는 경우 "데이터 액세스 개체"를 읽으십시오. –

+0

좋아, 단어 * 구성 요소 * 실제로 덜 모호합니다. – Roubachof

관련 문제