7
votes

Utilisation d'un modèle de domaine incorporé avec un modèle d'état

Il y a une tâche connectée à changeant état d'une entité . Et je suis assez confus pensant si cela devrait être une approche basée sur des événements qui implique quelque chose comme CQRS ou je peux utiliser un modèle d'état et laissez toute la logique à l'intérieur des entités.

J'ai trouvé un article qui montre un modèle de domaine (ou un morceau de celui-ci) qui utilise un modèle d'état: http : //www.prowareness.com/blog/? p = 1448

Le système de commande est assez proche de mon modèle de domaine. Donc, l'exemple est génial. Mais je me demande toujours si c'est une bonne pratique compte tenu du modèle MVC et s'il est possible de mettre en œuvre avec Ravendb / NHibernate ?

EDIT: Question Rethought

suivons l'exemple:

Premièrement, voici une entité de domaine appelée idée : xxx < p> alors que abstraittate est: xxx

et l'interface d'usine d'état est défini comme ceci: xxx < p> La pensée finale consiste à mettre la méthode: xxx

  1. est le design ok? Quels sont les inconvénients et les pros?
  2. Qu'en est-il de l'extensibilité? De mon point de vue, on peut étendre / mettre en œuvre sa propre usine d'état. Mais s'il y a une modification de abstraittate tout cela change en conséquence.

    merci!


0 commentaires

3 Réponses :


2
votes

CQRS et le modèle d'état sont des choses complètement différentes. Le modèle d'état fournit un moyen de mettre en œuvre un ensemble d'états ou d'états pour un seul objet, tandis que les CQRS sont un style architectural. MVC n'a rien à voir avec le modèle d'état ni les CQRS et constitue un style architectural pour la couche de présentation. Vous pouvez utiliser le motif d'état en conjonction avec NHibernate, mais le mappage sera non trivial et vous devrez mettre en place un IUSERType personnalisé à mapper vers la classe d'état appropriée en fonction des champs. Ravendb est très différent de NHibernate et de cartographie sera un peu plus facile avec elle, mais c'est un système de base de données complètement différent.


0 commentaires

1
votes

CQRS serait si vous utilisiez SQL pour récupérer un outil d'administrateur et Ravendb pour le front-end pour exécuter des recherches. Vous auriez besoin de pousser des données vers Ravendb de SQL dans ce scénario de la CQRS fictif.


0 commentaires

3
votes

Vous êtes peut-être intéressé par l'état apatride, une machine d'état hiérarchique de Nicholas Blumhardt. Lisez ceci mon Cette réponse ici concernant c'est aptitude. Voici un Exemple de processeur de flux de travail simple de mon Blog , et je l'utilise actuellement avec Le modèle de tuyau et de filtre , et cela fonctionne assez bien.

Modifier

J'ai aussi une implémentation qui utilise les apatrides avec Ravendb si vous êtes intéressé.


0 commentaires