My current .NET project looks like below:Solution (.sln)--BusinessProject A (.proj)--BusinessProject B (.proj)--DataLayer (.proj)  --A separate project calling ExternalService 1  (folder)  --A separate project calling ExternalService 2  (folder)  --A separate project calling ExternalService 3  (folder)  --A separate project calling ExternalService 4  (folder)Both of the Business Projects use one or more services in DataLayer.The disadvantage of this design is:Even if one change occurs in ExternalService 1, we will need to build, deploy, run regression and go through entire product development-deployment cycle.DataLayer communicates to multiple externalServices (all defined in a single project). This makes DataLayer very heavy & it ends up doing multiple things.So my two cents on this is to separate DataLayer as a separate solution, deploy it somewhere in the same ecosystem and communicate with it via a protocol (say REST)What are other alternatives and approaches to the above solution ? Are there any known .NET related design patterns for the same ?
How to separate data layer from business layer?
design patterns;.net;object oriented design;architectural patterns;plugin architecture