Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>From your description I am guessing each service you are building is centred around a particular entity and when you're domain model wants different entities it needs to use a different service.</p> <p>If this is the case I would suggest that the service are too finely grained. I would suggest building the interfaces for your services around processes which need to be accomplished, with the domain model part of the implementation of these services. It is my understanding that SOA advocates exposing a system as a set of services, however the internal interaction of components of a single system should not be services.</p> <p>This approach leads to a rich domain model, using Aggregate roots as a means of relating entities together and a basis for the repositories, with the services sitting on top of this exposing coarsely grained behaviour rather than basic interaction with any single entity. The client applications, which are internal to your system can provide this (using the same domain model).</p> <p>If the entities in your model are related and these relationships are important to the behaviour of the system then these relationships should be enforced (so the system reflects the domain being modelled), this will be difficult to do if each entity is independent, especially if they are services. </p> <p>You will end up with a system where all of the entity services need to call each other (creating lots of coupling, increasing change management overhead etc) or you won't be able to enforce the relationships which will mean diluting your model and potentially resulting in inconsistent behaviour or missing data.</p> <p>This will fundamentally come down to the base principles of High Cohesion and Low Coupling, which are opposing forces, it is necessary to try and balance them in a solution. If you have no relationship (or implicit ones) then you gain low coupling at the cost of cohesion and possible create maintenance issues if there are really relationships that aren't represented or increase the dependencies at a higher level. If you enforce too many relationships strongly you will end up with your domain model becoming a ball of mud and becoming unmanageable. Specific advice on this is difficult, however generally I would start by building a model with aggregates, concentrating on the relationships internal to the aggregate and review the model frequently.</p> <p>Specifically on NHibernate I would suggest demonstrating the clean abstraction that it provides, the reduction in code needed, the easy configuration without changing code and the amount of provided functionality e.g. identity maps and units of work etc.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload