Responsabilités des couches Service et du référentiel
-
27-09-2019 - |
Question
Juste essayer d'obtenir ma tête autour des responsabilités de la couche de service et de la couche dépôt lors de l'enregistrement d'un objet à mon magasin de persistance.
Mon actuelle en règle est la suivante:
Dans mon contrôleur j'ai créé un objet « Note » des données fournies par l'utilisateur (de la forme). L'utilisateur appelle ensuite « Enregistrer » sur la « Noteservice » (ce qui est là par injection de dépendance).
Dans la méthode « Enregistrer » sur la « Noteservice » Je porte ma validation de la logique métier et passe alors l'objet « Note » la méthode « Save » du « NoteRepository ».
La méthode « Save » du « NoteRepository » puis vérifie s'il y a une clé primaire sur cet objet et si oui alors obtenir de cet objet à partir de la db et des mises à jour des propriétés de l'aide de l'objet « Note » passé à travers et il est ensuite sauvegardé de nouveau à la dB. S'il n'y a pas de clé primaire alors l'objet est simplement enregistré dans la db et ensuite retourné au service avec sa nouvelle clé primaire.
La solution
Votre séparation des préoccupations semble assez bon pour moi. Nous suivons le même modèle, mais ont tendance à ajouter une couche plus droit de la couche de stockage. Nous appelons la couche de domaine et de réaliser toute notre logique métier là-dedans. Notre couche de service est juste une passe dans notre domaine au cas où nous devons publier nos services à un bus ESB dans l'avenir.
Le plus grand avantage de ce que vous faites n'encombrent toute la logique métier et DB dans le contrôleur que beaucoup de gens ont tendance à faire. Vous voulez toujours vos contrôleurs pour être aussi léger que possible si vous voulez vraiment suivre MVC.