Лучшая практика POCO - PullRequest
       7

Лучшая практика POCO

0 голосов
/ 19 марта 2010

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

С уважением

Пол Дж.

Ответы [ 2 ]

0 голосов
/ 19 марта 2010

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

0 голосов
/ 19 марта 2010

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

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

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

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

...