2009-10-13 6 views
0

J'ai les objets suivants:Quelle est la responsabilité de mon référentiel/service?

Personne < - Contact -> ClientsPerson < - Client

J'utilise le modèle référentiel avec une couche de service. Mais déjà là, étant perfectionniste, je suis perdu!

J'ai également un PersonService, ClientService et je suis assez sûr que j'ai besoin d'un ContactService qui devrait appeler le personService.Add (personne) et clientsPersonService.Add (client) - ou?

Le travail consiste à ajouter un contact. Le contact aurait un objet Person lié et un objet ClientsPerson. Et que ClientsPerson serait ofc. avoir un client.

Où les différents travaux devraient-ils aller? J'ai entendu dire que c'est mauvais d'appeler un service/dépôt de l'un à l'autre.

Répondre

0

Cette réponse dépend de votre ORM et de la façon dont il est enregistré en cascade. Nous supposerons que vous n'utilisez pas un ORM qui cascades des changements. Vos méthodes de couche de service doivent refléter les actions que vous devez accomplir d'un point de vue commercial. Souvent, je trouve que mes actions de contrôleur correspondent très étroitement aux méthodes de service.

Dans votre exemple, je voudrais que le service crée et se rapporte aux entités nécessaires et parle aux repos pour les sauvegarder; De cette façon, s'il y a un problème en cours de conversation avec les repos, il peut revenir en arrière et faire le nettoyage nécessaire.

Repos devrait être relativement bête. Les services devraient faire la relation et le travail d'affaires (à l'exception de quelque chose comme NHib, et peut-être même alors).

+0

Donc, je devrais avoir un clientService.AddContact (client client, personne personne). Il devrait faire référence à un client-repos (évidemment), à une personne-repos et à un clientPerson-repos? Est-ce exact? Puis validez les données de la personne, insérez la personne, insérez clientPerson avec les informations du client passé et de la personne insérée. Sensationnel. – Kordonme

+0

Eh bien, oui, ce sont les étapes nécessaires pour faire ce que vous avez besoin de faire, correct? Le processus va-t-il changer fréquemment? Vous ne voulez pas que ce processus soit testable? En faisant cela et en séparant les problèmes de cette façon, vous obtenez une facilité de testabilité, une facilité de maintenance, etc. –

+0

Si vous faites un site rapide qui est simple et qui n'est pas destiné à être éternellement, c'est probablement exagéré, mais c'est vraiment une question d'opinion. Je sais que cela semble décourageant, mais vous devez faire tout cela de toute façon, et cela le rend facile à maintenir. –

Questions connexes