Dans la structure Onion, la couche externe peut accéder à toutes les couches internes. Si je passe par là, ma couche externe (qui est la couche d'interface utilisateur/contrôleur dans MVC) peut également accéder directement aux services d'application/d'entreprise et aux dépôts. Maintenant, mon contrôleur peut créer un modèle de domaine et le conserver dans le magasin de données en utilisant le référentiel. Et ainsi contourner la validation et d'autres règles métier écrites en couche de gestion. Je crois, il me manque quelque chose. S'il vous plaît aider.Oignon Framework: Doit-on accéder directement au référentiel UI/Controllers?
public SpeakerController(IConferenceRepository conferenceRepository,
IUserSession userSession, IClock clock)
: base(userSession) {
_conferenceRepository = conferenceRepository;
_clock = clock;
_userSession = userSession; }
de http://jeffreypalermo.com/blog/the-onion-architecture-part-2/
Si je vous ai bien compris, vous voulez dire qu'il n'est pas nécessaire d'avoir des méthodes wrapper/pass-through en classe affaires pour l'opération CRUD. Il est correct d'utiliser des méthodes de référentiel dans l'interface utilisateur. Pour moi, la «validation des règles métier» dans le référentiel n'est pas une bonne idée. Cela va vaincre le but d'avoir une couche de gestion. – Pragmatic
Il existe deux problèmes distincts: les données de référence et la validation. Je vais les traiter dans des commentaires séparés. Re: Données de référence Disons que j'ai une table appelée StateOrProvince. Il se peut que je n'ai pas de règles métier pour ces données autres que les champs obligatoires et l'unicité. Ces règles peuvent être appliquées par la base de données. Il n'y a pas d'autres opérations que CRUD pour ces données. Développer un modèle de domaine pour ce type de données peut être exagéré. Habituellement, je lie simplement ma vue directement à mon ORM dans ce cas. –
Re: Validation Vous écrivez votre logique de validation dans votre couche de domaine. Vous devez avoir des abstractions qui représentent votre couche de persistance définie dans la couche de domaine que les objets de votre domaine peuvent utiliser. Il n'y a aucune raison pour que vous ne puissiez pas "invoquer" la logique de validation de votre objet de domaine dans l'implémentation de votre couche de persistance. En fait, si vous regardez attentivement le diagramme OA, l'implémentation de la persistance se trouve sur l'un des échelons les plus externes du diagramme. Cela signifie que vous obtenez le contexte complet du domaine dans votre couche de persistance. Vous pourriez aussi bien l'utiliser. –