We are working on a number of services, lets say PersonService, InsuranceService and PaycheckService. To access these services through an API there is a controller.
There are situations where the PaycheckService needs information about a Person.
Currently we're using a layer between Controller and Service to:
Which is working at this moment but as more services are created the dependency between services is increased. This results in more logic (magic?) in this 'between layer'.
I've been reading Fowler on the subject of Dependency Injection and Service Locator which could be useful. (we do use Unity for IoC and DI here and there for shared functionality)
The question is what is a good strategy to let services consume other services?
(Messaging, Injection, REST,..)

You could create a single component that has the responsibility to facilitate the location of a service based on the contract it provides.
This way a service only needs to know the contract it wants to consume and the service locator.
The locator can be anything, ranging from a class that reads a configuration list from a network share to a central service that reads configuration from a durable store or uses WS-Discovery to track services.
In addition you might want to create/design a shared set of data contracts that specify the types/messages exchanged between services. This way you lessen the burden of translating between types used in the services.
EDIT
You added to your question:
(Messaging, Injection, REST,..)
Requirements: Fast, loosely coupled
To be honest, I do think that this addition is not very useful because these are no strategies but are patterns and tools that could help implement the design.
Also, the requirements are not very helpful because we do not know what you consider to be fast nor what feature of being loosely coupled is most important to you.
If you are looking for specific guidance try to make the question more specific or try to build something and ask questions about what you run into.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With