3 votes

Couche transversale | Automapper | Injection de dépendances

J'ai une application MVC en couches et j'ai quelques questions sur les couches transversales. Jusqu'à présent, cette couche comprend les fonctions Logging, DI, Error Handling et Cache.

J'ai créé un projet et j'ai placé toutes ces caractéristiques dans des dossiers distincts. Est-ce que c'est correct ? Ou dois-je créer un projet pour chaque fonctionnalité ?

Comme j'ai mis en place Autofac (dossier DI) dans ce projet, j'ai dû ajouter des références aux autres projets : Model, Repository et Service. Est-il possible d'ajouter ces références au projet Cross Cutting ?

Dois-je créer un projet séparé pour regrouper les fonctionnalités communes ? Par exemple les Enums, les Constantes et les méthodes comme GetMd5Hash. Ou dois-je utiliser un projet transversal pour cela ?

Dois-je considérer Automapper comme une préoccupation transversale ? Jusqu'à présent, je l'ai mis en place dans la couche Présentation, pour convertir une Entité en Modèle de Vue et un Modèle de Vue en Entité. Pour cette raison, j'ai dû ajouter une référence au modèle, ce que j'aimerais éviter.

0voto

akazemis Points 1

Normalement, vous avez des aides de type "Cross cutting concerns" (CCC) qui sont utilisées dans l'ensemble de votre application. Ces aides peuvent être définies dans un seul ou plusieurs projets. Personnellement, je me pose ces deux questions avant de décider de la granularité de mes bibliothèques :

1- Est-ce que A est en quelque sorte lié à B ? Puis-je les classer dans une seule catégorie (telle que CCC) ?

2- Y a-t-il un cas où j'ai besoin d'utiliser A sans B (ou vice versa) dans un autre projet ?

Si la réponse à la première question est oui et à la seconde non, mettez-les dans la même bibliothèque/le même paquet, et tenez toujours compte de la réutilisabilité lorsque vous décidez de mettre des choses dans différents projets.

Ces aides ne sont pas censées faire référence à vos projets principaux, car il ne s'agit que d'aides et d'utilitaires qui doivent être indépendants de la logique et du domaine d'activité de l'entreprise.

Dans vos projets principaux (application MVC ou bibliothèques de la couche logique métier), vous allez utiliser ces aides tout au long de votre code ou vous allez utiliser des bibliothèques orientées aspects (AOP) pour les injecter dans votre code.

Je ne considérerais pas des choses comme DI et automapper comme des préoccupations transversales. La journalisation, l'audit, l'authentification, l'autorisation et la mise en cache sont de bons exemples de CCC. Mais des choses comme DI et Automapper sont des choses que vous utilisez pour mettre en œuvre vos modèles d'architecture et votre conception, elles sont donc différentes. Et il n'y a aucune raison de créer de nouvelles bibliothèques ou aides pour les appliquer dans votre projet.

0voto

akazemis Points 1

De rien, oui vous pouvez le faire mais quel est l'intérêt de les mettre dans un projet séparé ? Voulez-vous les réutiliser dans différents projets ? Si c'est le cas, créez des projets pour eux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X