2010-03-19 6 views
0

Tous, j'ai une série d'objets de domaine (le projet est basé sur NHibernate). Actuellement, selon les «bonnes pratiques», ils ne définissent que les objets métier, comprenant des propriétés et des méthodes spécifiques à chaque fonction d'objets dans le domaine. Cependant, l'un des objets a besoin d'envoyer un message SMTP. J'ai une classe de client SMTP simple définie dans un assembly 'Utilities' distinct. Afin d'utiliser ce client de messagerie à l'intérieur du POCO, je devrais contenir une référence à l'ensemble des utilitaires dans le domaine. Ma question est la suivante ... S'agit-il d'une dérogation aux bonnes pratiques pour détenir une telle référence dans un POCO, dans le but d'obtenir la fonctionnalité commerciale nécessaire?POCO Best Practice

Cordialement

Paul J.

Répondre

0

code contre l'abstraction et utiliser l'injection de dépendance afin d'éviter toute référence.

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

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

Mais le type d'envoi de courrier ne rentre pas dans le domaine. Cela ressemble plus à un service d'application.

0

C'est. L'envoi d'un message SMTP ressemble plus à une règle métier qu'à une responsabilité d'objet métier. Votre objet de gestion est un POCO qui, dans la plupart des cas, n'implique que des données et aucun comportement. Comme Arnis L. l'a mentionné, il est préférable d'avoir un service dans votre système qui gère le travail d'envoi de message.

+0

Cela dépend du type d'architecture que nous essayons de suivre. La conception orientée domaine vise spécifiquement à mettre la logique métier à l'intérieur des objets métier. –