2010-03-19 3 views
0

Все, у меня есть ряд объектов домена (проект основан на NHibernate). В настоящее время в соответствии с «хорошей практикой» они определяют только бизнес-объекты, содержащие свойства и методы, специфичные для каждой функции объектов внутри домена. Однако у одного из объектов есть требование отправить SMTP-сообщение. У меня есть простой клиентский класс SMTP, определенный в отдельной сборке «Утилиты». Чтобы использовать этот почтовый клиент из POCO, мне нужно будет указать ссылку на сборку утилит в домене. Мой вопрос в том, что ... Это отход от лучшей практики, чтобы провести такую ​​ссылку в POCO с целью получения необходимых бизнес-функций.POCO Best Practice

С наилучшими пожеланиями

Paul J.

ответ

0

код против абстракции и использовать инъекции зависимостей для того, чтобы избежать ссылки.

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

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

Но отправка почты по почте не входит в домен. Это похоже на обслуживание приложений.

0

Это так. Отправка SMTP-сообщения больше напоминает бизнес-правило, а не ответственность бизнес-объекта. Ваш бизнес-объект - это POCO, который в большинстве случаев подразумевает только данные и поведение. Как сказал Арнис Л., лучше иметь службу в вашей системе, которая управляет отправкой сообщения.

+0

Это зависит от того, какую архитектуру мы пытаемся выполнить. Проект, управляемый доменом, имеет целью поставить бизнес-логику внутри бизнес-объектов. –