2:02 PM
I think if you have different services with some shared conformed data, it might not be worth the performance hit to abstract out the common data, especially if it has to be joined. Therefore both services might return some common data.
Say a service that returns invoices and a service that returns payments, all against the same customers. If there is a need in that service to get customer information or customer configuration, should it be obtained through a direct join or does each service have to call a customer service and join/transform the data appropriately.
Personally, I think the services should never go any lower into the database than procs or views.
That at least gives you one layer to allow you to refactor your DB.
If on top of that they need to go to some other common business layer before they expose their service, that's fine too.