0

J'ai essayé de trouver une solution à ce problème de nommage, mais je n'ai pas trouvé d'utilisation similaire sur le web. Cela peut être soit un flux de conception dans le modèle de domaine, soit nous n'utilisons simplement pas le nom approprié pour ce que l'on appelle "ValueObjects".Qu'appelons-nous pour ces types d'objets utilisés dans Domain Model dans DDD?

S'il vous plaît lire ci-dessous ..

Nous utilisons Domain Driven Design avec motif CQRS. Voici comment le modèle de domaine a été conçu.

enter image description here

P.S Non lié mais pour votre information, notre application utilise ASP.NET MVC et le comminicate contrôleur withe la couche de service. Les objets DTO (Data Transfer Objects) sont transmis aux contrôleurs MVC, ce qui ne figure pas dans le diagramme ci-dessus.

Le problème est que nous n'utilisons pas le "ValueObject" correctement. Selon la définition de Martin Fowler, nos ValueObjects ne sont pas une vraie représentation d'un ValueObject. http://martinfowler.com/bliki/ValueObject.html

Par exemple, nos objets ValueObjects ont une identité. Ces ValueObjects transportent simplement des données entre les Commandes, les AggregateRoots et les Entités de domaine. Par exemple, AggregateRoot crée simplement ValueObjects en fonction des entités de domaine et renvoie ces ValueObjects au niveau de la couche de commande.

Ci-dessous n'est pas l'implémentation complète. Juste un exemple simple pour montrer l'interaction

méthode d'extension de AggregateRoot:

private static IList<NoteValue> ToValueObject(this ICollection<Note> source) 
{ 
    var values = new List<NoteValue>(); 
    if (source != null) 
     source.ForEach(i => values.Add(i.ToValueObject())); 

    return values; 
} 

AggregateRoot:

Public IList<NoteValue> GetNotesValues() 
{ 
    return this._notes.ToValueObject();   
} 

Commande:

var motesValues = notesAggregate.GetNotesValues(); 

Nous luttons pour trouver un nom approprié pour ces soi-disant "ValueObjets". Ils ne semblent pas non plus être des DTO et nous voulons également pouvoir les différencier des DTO utilisés dans la couche Services. Plus précisément, nous voulons connaître un nom approprié que nous pouvons appeler pour ces types d'objets (ValueObjects). Toutes les pensées ont grandement apprécié.

+1

Pourquoi convertissez-vous entre Note et NoteValue? Pourquoi ne pas simplement exposer l'objet Note directement au service d'application d'encapsulation (ce que je pense que vous appelez la commande)? – eulerfx

+0

Pourquoi avez-vous à la fois des racines et des dépôts agrégés? Habituellement, une fois que vous commencez à penser à la racine des agrégats, les dépôts ont tendance à disparaître ou à se confondre avec les RA. –

+1

Alors que vous indiquez que cela est lié à DDD, tout ce que je vois est l'architecture de l'infrastructure. Où est le modèle de domaine? DDD est sur la modélisation du domaine, et non sur une saveur particulière de l'architecture. Les motifs du livre bleu ne sont que de (bonnes) suggestions - vous n'avez pas besoin de toutes les appliquer. –

Répondre

3

Je ne sais pas si cela répond à vos questions, mais j'espère que je vous dirigerai dans la bonne direction.

Il y a un très bon discours sur les objets de valeur par Dan Berg Johnsson: http://www.viddler.com/v/6939b23

ont également un regard sur les papiers de Vaughn Vernon sur la conception efficace globale: http://dddcommunity.org/library/vernon_2011

Dans l'ensemble DDD (en particulier lors de l'application CQRS au niveau architectural) prend du temps à saisir. Soyez patient, lisez, apprenez et rejoignez le groupe DDD/Cqrs Google

+0

Je me demande si le downvoter aurait intérêt à élaborer. –

+0

merci de partager ces liens. Je vais également examiner ceux pour une solution potentielle pour la question que j'ai. – Spock

Questions connexes