Frage

Ich habe die folgenden Objekte:

Person <- Kontakt -> ClientsPerson <- Client

Ich verwende das Repository-Muster mit einer Service-Schicht. Aber schon hier, ein Perfektionist zu sein, ich bin verloren!

Ich habe auch eine PersonService, ClientService und ich bin mir ziemlich sicher, ich brauche eine ContactService zu haben, die die personService.Add nennen sollte (Person) und clientsPersonService.Add (Client) - oder

Der Job ist es, einen Kontakt hinzuzufügen. Der Kontakt würde eine Person Objekt bezieht, und ein ClientsPerson Objekt. Und das ClientsPerson würde OFC. habe einen Client.

Wo sollen die verschiedenen Jobs gehen? Ich habe gehört, es ist schlecht für einen Dienst / Repository von einem zum anderen zu nennen.

War es hilfreich?

Lösung

Diese Antwort hängt von Ihrem ORM und wie es spart Kaskaden. Nehmen wir an, Sie sind ein ORM nicht mit, dass Kaskaden Änderungen.

Ihre Service-Layer-Methoden sollten die Aktionen widerspiegeln, dass Sie von einem Geschäftssinn erreichen müssen. Häufig finde ich, dass meine Controller Aktionen sehr eng mit Service-Methoden zusammenpassen.

In Ihrem Beispiel würde ich den Service Build und beziehen sich auf die notwendigen Einrichtungen und reden repos sie zu retten; auf diese Weise, wenn ein Problem auf dem Weg zu dem repos reden kann sich selbst zurückrollen und tut, was Bereinigung erforderlich ist.

Repos sollte relativ stumm sein. Dienstleistungen sollten die Beziehung und Business-Arbeit (abgesehen von so etwas wie NHib, und vielleicht sogar dann) tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top