A microservice should own all if its own data and logic.
Each microservice we develop is autonomous and independent of other Service Bricks. This gives you the ability to design, develop, test and deploy each microservice independently.
This encapsulation ensures that microservices can evolve over time without dependencies from other services. It allows complete control of the entire domain and the ability to change it as needs permit.
Inevitably, there will be integration code that will use all of your services to comprise a compete application. This may be in the form in per-service changes, business rule changes, events, API gateways, orchestrations and so on.
When integration between microservices is required, you only need to reference the ServiceBrick.[MODULE].Api NuGet package for the relationship. The Api NuGet package only contains the broadcasts, clients, DTOs, events, interfaces and processes needed to communicate with the service, without any additional logic or references.