2010-03-19 7 views
0

모두, 나는 일련의 도메인 객체를 가지고 있습니다 (프로젝트는 NHibernate 기반입니다). 현재 '우수 사례'에 따라 도메인 내에있는 각 객체 함수에 고유 한 속성 및 메소드로 구성된 비즈니스 객체 만 정의합니다. 그러나 개체 중 하나에 SMTP 메시지를 보내야한다는 요구 사항이 있습니다. 별도의 '유틸리티'어셈블리에 정의 된 간단한 SMTP 클라이언트 클래스가 있습니다. POCO 내에서이 메일 클라이언트를 사용하려면 도메인의 유틸리티 어셈블리에 대한 참조를 보유해야합니다. 내 쿼리는 이것입니다 ... 필요한 비즈니스 기능을 얻기 위해 POCO에서 이러한 참조를 유지하는 것이 가장 좋습니다.POCO 모범 사례

친절 감사

폴 J.

답변

0

추상화에 대한 코드 및 기준을 방지하기 위해 의존성 주입을 사용합니다.

public class PocoObject{ 
    public PocoObject(IMailSender mailSender){ 
     _mailSender=mailSender;   
    } 

    public void DoStuff(){ 
     mailSender.Send(to,content,blabla); 
    } 
} 

그러나 메일 발송 종류 a는 도메인에 맞지 않습니다. 응용 서비스와 비슷해 보입니다.

0

입니다. SMTP 메시지를 보내는 것은 비즈니스 객체의 책임이 아니라 비즈니스 규칙처럼 들립니다. 비즈니스 오브젝트는 POCO이며 대부분의 경우 데이터 만 포함하고 작동하지 않습니다. Arnis L.이 언급했듯이 메시지 전송 작업을 관리하는 시스템을 서비스하는 것이 더 좋습니다.

+0

우리가 따라야하는 아키텍처의 종류에 따라 다릅니다. 도메인 기반 디자인은 특히 비즈니스 로직을 비즈니스 객체 안에 넣는 것을 목표로합니다. –