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 ?